{"action":"created","comment":{"url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/pulls/comments/40015772","id":40015772,"diff_hunk":"@@ -0,0 +1,321 @@\n+---\n+comments: true\n+date: 2015-09-24 14:00:00\n+layout: post\n+slug: getting-started-scala-js\n+title: Scala in the browser. Getting Started with Scala.js\n+summary: In this post we will take a look at Scala.js, write a simple app with it and think about it's potential use cases\n+author: Patryk Jażdżewski\n+feed_group:  'scala'\n+tags:\n+- Scala\n+- Scala.js\n+- Frontend\n+---\n+\n+<img src=\"https://raw.githubusercontent.com/pjazdzewski1990/scala-js-organizer-example/91f153b796219e8970f893fadd73a9c6b9108997/images/Scala.jpg\" alt=\"Scala.js\" style=\"width: 40%; height: 40%; display: block; margin-left: auto; margin-right: auto;\"/>\n+\n+## <a name=\"what-is\" href=\"#what-is\">What is Scala.js?</a>\n+\n+[Scala.js](http://www.scala-js.org/) is compiler that targets Javascript as his target, compared to traditional Scala compiler which target JVM. What it means in practice - with Scala.js you can write Scala code that will be executed in the browser. \n+\n+Back in the day, when Node.js first appeared, it's selling point was the ability to use the same language on backend and frontend. Bridging the gap between client and server was aimed to help ease the paint of integrating these two separate worlds. This idea was heavily criticized. Many people claimed that if we want to strive for a single client and backend languages we should pick the better language and in there opinion Javascript was not the one. \n+\n+Scala.js goes the other way around - it takes backend language and compiles it to executable Javascript. Effectively extending Scala programming concepts to the Web. Now, with Scala.js, you can use all the Scala tricks you learned in backend to create Web apps. Of course, the strict compiler and advanced type system are definitely in attendance, so you don't have to worry about ReferenceErrors, coercion or undefined variables.\n+\n+> Pitfalls\n+>\n+> There are also we things Scala.js cannot do ... As Javascript run-time strongly differs from that offered by JVM, some libraries written with JVM in mind won't run in the browser. Most importantly Scala.js is unable to run Java code (say goodbye to Joda time ...) and libraries using reflection under the hood will fail (for instance many serialization libraries). Fortunately it's not as bad as it seems. There are many Scala.js-compatible libraries available. For a more detailed description of the issue look [here.](http://lihaoyi.github.io/hands-on-scala-js/#DeviationsfromScala-JVM)\n+\n+In this post we will create a simple app to help you with getting started. We will show you how to build html, style it with CSS, fetch data and some interaction. \n+\n+## <a name=\"getting-started\" href=\"#getting-started\">Getting started</a>\n+\n+The fastest way to get started is to clone a [barebone template](https://github.com/sjrd/scala-js-example-app) created by Sébastien Doeraene. This application doesn't do much, but takes care of the configuration so you can move straight to the fun part. I've added we changes there to make it fit our requirements better. \n+\n+{% highlight scala %}\n+// Turn this project into a Scala.js project by importing these settings\n+enablePlugins(ScalaJSPlugin)\n+\n+name := \"scala.js Organizer\"\n+\n+version := \"0.1-SNAPSHOT\"\n+\n+scalaVersion := \"2.11.7\"\n+\n+//persistLauncher in Compile := true\n+\n+persistLauncher in Test := false\n+\n+libraryDependencies ++= Seq(\n+    \"org.scala-js\" %%% \"scalajs-dom\" % \"0.8.1\",\n+    \"com.lihaoyi\" %%% \"scalatags\" % \"0.4.6\"\n+)\n+{% endhighlight %}\n+[\\[build.sbt\\]](https://github.com/pjazdzewski1990/scala-js-organizer-example/blob/b843de619f8c8a56cf52cfbf7b0e26d3ec5196e5/build.sbt)\n+\n+Few things to notice here - we commented `persistLauncher` out, added `scalatags` as dependency and renamed the app. `persistLauncher` is a handy tool that helps us to create and use an auto-start script. We don't need it here. In this case I would prefer to make Scala.js build an executable Javascript class and then I will start it manually. For you simple app we added `scalatags` library. I found this one to be very useful. It allows us to build html structure in a typesafe manner. It's a huge improvement over strings. The last thing is changing the name. ","path":"_posts/2015-09-19-scala_js.md","position":null,"original_position":57,"commit_id":"5d7031b835710298fc66fe17556b913bc5f6abf7","original_commit_id":"abae28ba17b9ded9d1d454463b6e77fd3a9bf50f","user":{"login":"szabba","id":820119,"avatar_url":"https://avatars.githubusercontent.com/u/820119?v=3","gravatar_id":"","url":"https://api.github.com/users/szabba","html_url":"https://github.com/szabba","followers_url":"https://api.github.com/users/szabba/followers","following_url":"https://api.github.com/users/szabba/following{/other_user}","gists_url":"https://api.github.com/users/szabba/gists{/gist_id}","starred_url":"https://api.github.com/users/szabba/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/szabba/subscriptions","organizations_url":"https://api.github.com/users/szabba/orgs","repos_url":"https://api.github.com/users/szabba/repos","events_url":"https://api.github.com/users/szabba/events{/privacy}","received_events_url":"https://api.github.com/users/szabba/received_events","type":"User","site_admin":false},"body":"> s/Few things to notice/A few things to notice/\r\n\r\n[Oxford comma](https://en.wikipedia.org/wiki/Serial_comma) and a missing article:\r\n> s/`scalatags` as dependency and/`scalatags` as a dependency, and/\r\n\r\n> s/handy tools that helps us to create and use an auto-start script/handy flag that lets us use an auto-start script generated for us by sbt/\r\n\r\n> s/we added `scalatags`/we've added the `scalatags`/\r\n\r\nI don't think mentioning the name change a second time at the end of the paragraph is helpful.\r\n> s/ The last thing is changing the name.//\r\n\r\n","created_at":"2015-09-21T19:41:05Z","updated_at":"2015-09-21T19:41:05Z","html_url":"https://github.com/ScalaConsultants/ScalaConsultants.github.io/pull/74#discussion_r40015772","pull_request_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/pulls/74","_links":{"self":{"href":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/pulls/comments/40015772"},"html":{"href":"https://github.com/ScalaConsultants/ScalaConsultants.github.io/pull/74#discussion_r40015772"},"pull_request":{"href":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/pulls/74"}}},"pull_request":{"url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/pulls/74","id":45502172,"html_url":"https://github.com/ScalaConsultants/ScalaConsultants.github.io/pull/74","diff_url":"https://github.com/ScalaConsultants/ScalaConsultants.github.io/pull/74.diff","patch_url":"https://github.com/ScalaConsultants/ScalaConsultants.github.io/pull/74.patch","issue_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/issues/74","number":74,"state":"open","locked":false,"title":"Scala js","user":{"login":"pjazdzewski1990","id":1136843,"avatar_url":"https://avatars.githubusercontent.com/u/1136843?v=3","gravatar_id":"","url":"https://api.github.com/users/pjazdzewski1990","html_url":"https://github.com/pjazdzewski1990","followers_url":"https://api.github.com/users/pjazdzewski1990/followers","following_url":"https://api.github.com/users/pjazdzewski1990/following{/other_user}","gists_url":"https://api.github.com/users/pjazdzewski1990/gists{/gist_id}","starred_url":"https://api.github.com/users/pjazdzewski1990/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pjazdzewski1990/subscriptions","organizations_url":"https://api.github.com/users/pjazdzewski1990/orgs","repos_url":"https://api.github.com/users/pjazdzewski1990/repos","events_url":"https://api.github.com/users/pjazdzewski1990/events{/privacy}","received_events_url":"https://api.github.com/users/pjazdzewski1990/received_events","type":"User","site_admin":false},"body":"To be pushed this Thursday: 19.09.2015\r\nWill have a follow up post (they are too long together)","created_at":"2015-09-20T19:19:24Z","updated_at":"2015-09-21T19:41:05Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1468272cf8850df41f1ed06db42d0333dee6a721","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/pulls/74/commits","review_comments_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/pulls/74/comments","review_comment_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/issues/74/comments","statuses_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/statuses/5d7031b835710298fc66fe17556b913bc5f6abf7","head":{"label":"ScalaConsultants:scala_js","ref":"scala_js","sha":"5d7031b835710298fc66fe17556b913bc5f6abf7","user":{"login":"ScalaConsultants","id":6207831,"avatar_url":"https://avatars.githubusercontent.com/u/6207831?v=3","gravatar_id":"","url":"https://api.github.com/users/ScalaConsultants","html_url":"https://github.com/ScalaConsultants","followers_url":"https://api.github.com/users/ScalaConsultants/followers","following_url":"https://api.github.com/users/ScalaConsultants/following{/other_user}","gists_url":"https://api.github.com/users/ScalaConsultants/gists{/gist_id}","starred_url":"https://api.github.com/users/ScalaConsultants/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ScalaConsultants/subscriptions","organizations_url":"https://api.github.com/users/ScalaConsultants/orgs","repos_url":"https://api.github.com/users/ScalaConsultants/repos","events_url":"https://api.github.com/users/ScalaConsultants/events{/privacy}","received_events_url":"https://api.github.com/users/ScalaConsultants/received_events","type":"Organization","site_admin":false},"repo":{"id":15366666,"name":"ScalaConsultants.github.io","full_name":"ScalaConsultants/ScalaConsultants.github.io","owner":{"login":"ScalaConsultants","id":6207831,"avatar_url":"https://avatars.githubusercontent.com/u/6207831?v=3","gravatar_id":"","url":"https://api.github.com/users/ScalaConsultants","html_url":"https://github.com/ScalaConsultants","followers_url":"https://api.github.com/users/ScalaConsultants/followers","following_url":"https://api.github.com/users/ScalaConsultants/following{/other_user}","gists_url":"https://api.github.com/users/ScalaConsultants/gists{/gist_id}","starred_url":"https://api.github.com/users/ScalaConsultants/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ScalaConsultants/subscriptions","organizations_url":"https://api.github.com/users/ScalaConsultants/orgs","repos_url":"https://api.github.com/users/ScalaConsultants/repos","events_url":"https://api.github.com/users/ScalaConsultants/events{/privacy}","received_events_url":"https://api.github.com/users/ScalaConsultants/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ScalaConsultants/ScalaConsultants.github.io","description":"Scalac blog","fork":false,"url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io","forks_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/forks","keys_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/teams","hooks_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/hooks","issue_events_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/events","assignees_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/tags","blobs_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/languages","stargazers_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/stargazers","contributors_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/contributors","subscribers_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/subscribers","subscription_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/subscription","commits_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/merges","archive_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/downloads","issues_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/labels{/name}","releases_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/releases{/id}","created_at":"2013-12-21T22:28:57Z","updated_at":"2015-08-26T10:49:35Z","pushed_at":"2015-09-21T19:20:08Z","git_url":"git://github.com/ScalaConsultants/ScalaConsultants.github.io.git","ssh_url":"git@github.com:ScalaConsultants/ScalaConsultants.github.io.git","clone_url":"https://github.com/ScalaConsultants/ScalaConsultants.github.io.git","svn_url":"https://github.com/ScalaConsultants/ScalaConsultants.github.io","homepage":null,"size":4297,"stargazers_count":1,"watchers_count":1,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":9,"mirror_url":null,"open_issues_count":1,"forks":9,"open_issues":1,"watchers":1,"default_branch":"master"}},"base":{"label":"ScalaConsultants:master","ref":"master","sha":"4cb381c9fcccd971fccc7051c3810230a2d383b4","user":{"login":"ScalaConsultants","id":6207831,"avatar_url":"https://avatars.githubusercontent.com/u/6207831?v=3","gravatar_id":"","url":"https://api.github.com/users/ScalaConsultants","html_url":"https://github.com/ScalaConsultants","followers_url":"https://api.github.com/users/ScalaConsultants/followers","following_url":"https://api.github.com/users/ScalaConsultants/following{/other_user}","gists_url":"https://api.github.com/users/ScalaConsultants/gists{/gist_id}","starred_url":"https://api.github.com/users/ScalaConsultants/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ScalaConsultants/subscriptions","organizations_url":"https://api.github.com/users/ScalaConsultants/orgs","repos_url":"https://api.github.com/users/ScalaConsultants/repos","events_url":"https://api.github.com/users/ScalaConsultants/events{/privacy}","received_events_url":"https://api.github.com/users/ScalaConsultants/received_events","type":"Organization","site_admin":false},"repo":{"id":15366666,"name":"ScalaConsultants.github.io","full_name":"ScalaConsultants/ScalaConsultants.github.io","owner":{"login":"ScalaConsultants","id":6207831,"avatar_url":"https://avatars.githubusercontent.com/u/6207831?v=3","gravatar_id":"","url":"https://api.github.com/users/ScalaConsultants","html_url":"https://github.com/ScalaConsultants","followers_url":"https://api.github.com/users/ScalaConsultants/followers","following_url":"https://api.github.com/users/ScalaConsultants/following{/other_user}","gists_url":"https://api.github.com/users/ScalaConsultants/gists{/gist_id}","starred_url":"https://api.github.com/users/ScalaConsultants/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ScalaConsultants/subscriptions","organizations_url":"https://api.github.com/users/ScalaConsultants/orgs","repos_url":"https://api.github.com/users/ScalaConsultants/repos","events_url":"https://api.github.com/users/ScalaConsultants/events{/privacy}","received_events_url":"https://api.github.com/users/ScalaConsultants/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ScalaConsultants/ScalaConsultants.github.io","description":"Scalac blog","fork":false,"url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io","forks_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/forks","keys_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/teams","hooks_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/hooks","issue_events_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/issues/events{/number}","events_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/events","assignees_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/assignees{/user}","branches_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/branches{/branch}","tags_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/tags","blobs_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/git/refs{/sha}","trees_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/statuses/{sha}","languages_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/languages","stargazers_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/stargazers","contributors_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/contributors","subscribers_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/subscribers","subscription_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/subscription","commits_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/commits{/sha}","git_commits_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/git/commits{/sha}","comments_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/comments{/number}","issue_comment_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/issues/comments{/number}","contents_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/contents/{+path}","compare_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/merges","archive_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/downloads","issues_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/issues{/number}","pulls_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/pulls{/number}","milestones_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/milestones{/number}","notifications_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/labels{/name}","releases_url":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/releases{/id}","created_at":"2013-12-21T22:28:57Z","updated_at":"2015-08-26T10:49:35Z","pushed_at":"2015-09-21T19:20:08Z","git_url":"git://github.com/ScalaConsultants/ScalaConsultants.github.io.git","ssh_url":"git@github.com:ScalaConsultants/ScalaConsultants.github.io.git","clone_url":"https://github.com/ScalaConsultants/ScalaConsultants.github.io.git","svn_url":"https://github.com/ScalaConsultants/ScalaConsultants.github.io","homepage":null,"size":4297,"stargazers_count":1,"watchers_count":1,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":9,"mirror_url":null,"open_issues_count":1,"forks":9,"open_issues":1,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/pulls/74"},"html":{"href":"https://github.com/ScalaConsultants/ScalaConsultants.github.io/pull/74"},"issue":{"href":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/issues/74"},"comments":{"href":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/issues/74/comments"},"review_comments":{"href":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/pulls/74/comments"},"review_comment":{"href":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/pulls/74/commits"},"statuses":{"href":"https://api.github.com/repos/ScalaConsultants/ScalaConsultants.github.io/statuses/5d7031b835710298fc66fe17556b913bc5f6abf7"}}}}