From af43f2afc181e659c4289c9d3c56b0882ef28964 Mon Sep 17 00:00:00 2001 From: Philip Sahli Date: Sun, 24 Jan 2021 09:46:43 +0100 Subject: [PATCH 1/2] add resource limits --- deployments/deployment.yaml | 84 ++++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 39 deletions(-) diff --git a/deployments/deployment.yaml b/deployments/deployment.yaml index 9380f7f..eb415cc 100644 --- a/deployments/deployment.yaml +++ b/deployments/deployment.yaml @@ -8,50 +8,56 @@ spec: selector: matchLabels: app: tumbo-server - replicas: 2 + replicas: 1 template: metadata: annotations: - version: develop + version: "develop" labels: app: tumbo-server spec: containers: - - name: tumbo-server - image: philipsahli/go-tumbo:latest - ports: - - containerPort: 8000 - volumeMounts: - - name: tumbo-config-volume - mountPath: /etc/tumbo - env: - - name: DB_HOST - valueFrom: - secretKeyRef: - name: tumbo-db - key: DB_HOST - - name: DB_PORT - valueFrom: - secretKeyRef: - name: tumbo-db - key: DB_PORT - - name: DB_USERNAME - valueFrom: - secretKeyRef: - name: tumbo-db - key: DB_USERNAME - - name: DB_PASSWORD - valueFrom: - secretKeyRef: - name: tumbo-db - key: DB_PASSWORD - - name: DB_NAME - valueFrom: - secretKeyRef: - name: tumbo-db - key: DB_NAME + - name: tumbo-server + image: philipsahli/go-tumbo:latest + ports: + - containerPort: 8000 + volumeMounts: + - name: tumbo-config-volume + mountPath: /etc/tumbo + env: + - name: DB_HOST + valueFrom: + secretKeyRef: + name: tumbo-db + key: DB_HOST + - name: DB_PORT + valueFrom: + secretKeyRef: + name: tumbo-db + key: DB_PORT + - name: DB_USERNAME + valueFrom: + secretKeyRef: + name: tumbo-db + key: DB_USERNAME + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: tumbo-db + key: DB_PASSWORD + - name: DB_NAME + valueFrom: + secretKeyRef: + name: tumbo-db + key: DB_NAME + resources: + requests: + memory: "64Mi" + cpu: "250m" + limits: + memory: "128Mi" + cpu: "500m" volumes: - - name: tumbo-config-volume - configMap: - name: tumbo-config - + - name: tumbo-config-volume + configMap: + name: tumbo-config From be313c174e77b9ddce1f5230c9ad6a3a17f9c3c6 Mon Sep 17 00:00:00 2001 From: Philip Sahli Date: Mon, 25 Jan 2021 21:58:21 +0100 Subject: [PATCH 2/2] write projectstate to its own table --- examples/example-plugin-go-grpc-fail/go.sum | 184 +- examples/example-plugin-go-grpc/a | 0 go.sum | 1 + pkg/app/app.go | 1 - pkg/app/router_new_test.go | 17 +- pkg/app/testdata.go | 23 +- pkg/client/client.go | 4 +- pkg/controllers/rice-box.go | 14 +- pkg/controllers/service.go | 7 +- pkg/models/models.go | 6 + pkg/models/project.go | 58 +- pkg/operator/operator.go | 65 +- pkg/runner/runner.go | 2 + pkg/runner/runner_test.go | 11 +- pkg/source/source.go | 23 +- web/elm/public/dist/elm.compiled.js | 9554 +++++-------------- web/elm/src/Api/Project.elm | 21 +- web/elm/src/Components/ProjectList.elm | 6 +- 18 files changed, 2623 insertions(+), 7374 deletions(-) create mode 100644 examples/example-plugin-go-grpc/a diff --git a/examples/example-plugin-go-grpc-fail/go.sum b/examples/example-plugin-go-grpc-fail/go.sum index f28092a..0d592ff 100644 --- a/examples/example-plugin-go-grpc-fail/go.sum +++ b/examples/example-plugin-go-grpc-fail/go.sum @@ -1,3 +1,4 @@ +<<<<<<< Updated upstream cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -444,38 +445,26 @@ github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcncea github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -<<<<<<< Updated upstream github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -======= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= ->>>>>>> Stashed changes github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-sqlite3 v1.14.3/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI= github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= -github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77 h1:7GoSOOW2jpsfkntVKaS2rAr1TJqfcxotyaUcuxoZSzg= github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= @@ -485,51 +474,28 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nkovacs/streamquote v0.0.0-20170412213628-49af9bddb229/go.mod h1:0aYXnNPJ8l7uZxf45rWW1a/uME32OF0rhiYGNQ2oF2E= -github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/oracle/oci-go-sdk v7.1.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.0.1/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= -github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/peterh/liner v1.0.1-0.20171122030339-3681c2a91233/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= @@ -547,20 +513,15 @@ github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7z github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= github.com/rodaine/table v1.0.1/go.mod h1:UVEtfBsflpeEcD56nF4F5AocNFta0ZuolpSVdPtlmP4= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= -github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shiena/ansicolor v0.0.0-20151119151921-a422bbe96644/go.mod h1:nkxAfR/5quYxwPZhyDxgasBMnRtBZd0FCEpawpjMUFg= @@ -584,25 +545,18 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec/go.mod h1:QBvMkMya+gXctz3kmljlUCu/yB3GZ6oee+dUozsezQE= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/swaggo/files v0.0.0-20190704085106-630677cd5c14/go.mod h1:gxQT6pBGRuIGunNf/+tSOB5OHvguWi8Tbt82WOkf35E= @@ -611,43 +565,31 @@ github.com/swaggo/swag v1.5.1/go.mod h1:1Bl9F/ZBpVWh22nY0zmYyASPO1lI/zIwRDrpZU+t github.com/swaggo/swag v1.6.9/go.mod h1:a0IpNeMfGidNOcm2TsqODUh9JHdHu3kxDA0UlGbBKjI= github.com/syndtr/goleveldb v0.0.0-20160425020131-cfa635847112/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0= github.com/syndtr/goleveldb v0.0.0-20181127023241-353a9fca669c/go.mod h1:Z4AUp2Km+PwemOoO/VB5AOx9XSsIItzFjoJlOSiYmn0= -github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v0.0.0-20171122102828-84cb69a8af83/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.5-pre/go.mod h1:FwP/aQVg39TXzItUBMwnWp9T9gPQnXw4Poh4/oBQZ/0= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181022190402-e5e69e061d4f/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.5-pre/go.mod h1:tULtS6Gy1AE1yCENaw4Vb//HLH5njI2tfCQDUqRd8fI= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/unknwon/com v1.0.1/go.mod h1:tOOxU81rwgoCLoOVVPHb6T/wt8HZygqH5id+GNnlCXM= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli/v2 v2.2.0/go.mod h1:SE9GqnLQmjVa0iPEY0f1w3ygNIYcIJ0OKPMoW2caLfQ= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -<<<<<<< Updated upstream -github.com/vdemeester/k8s-pkg-credentialprovider v0.0.0-20200107171650-7c61ffa44238/go.mod h1:JwQJCMWpUDqjZrB5jpw0f5VbN7U95zxFy1ZDpoEarGo= -github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= -======= ->>>>>>> Stashed changes github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b/go.mod h1:Q12BUT7DqIlHRmgv3RskH+UCM/4eqVMgI0EMmlSpAXc= github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/gopher-lua v0.0.0-20171031051903-609c9cd26973/go.mod h1:aEV29XrmTYFr3CiRxZeGHpkvbwq+prZduBqMaascyCU= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -658,30 +600,23 @@ go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -691,7 +626,6 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= @@ -699,7 +633,6 @@ golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -711,7 +644,6 @@ golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -720,33 +652,16 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190611141213-3f473d35a33a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -<<<<<<< Updated upstream -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 h1:42cLlJJdEh+ySyeUUbEQ5bsTiq8voBeTuweGVkY6Puw= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b h1:iFwSg7t5GZmB/Q5TjiEAsdoLDrdJRC1RiF2WhuV29Qw= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -======= -golang.org/x/net v0.0.0-20201029221708-28c70e62bb1d h1:dOiJ2n2cMwGLce/74I/QHMbnpk5GfY7InR8rczoMqRM= -golang.org/x/net v0.0.0-20201029221708-28c70e62bb1d/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 h1:42cLlJJdEh+ySyeUUbEQ5bsTiq8voBeTuweGVkY6Puw= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= ->>>>>>> Stashed changes golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -755,7 +670,6 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -763,9 +677,7 @@ golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181228144115-9a3f9b0469bb/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -777,58 +689,33 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190610200419-93c9922d18ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -<<<<<<< Updated upstream -golang.org/x/sys v0.0.0-20201118182958-a01c418693c7 h1:Z991aAXPjz0tLnj74pVXW3eWJ5lHMIBvbRfMq4M2jHA= -golang.org/x/sys v0.0.0-20201118182958-a01c418693c7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201231184435-2d18734c6014 h1:joucsQqXmyBVxViHCPFjG3hx8JzIFSaym3l3MM/Jsdg= -golang.org/x/sys v0.0.0-20201231184435-2d18734c6014/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -======= -golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13 h1:5jaG59Zhd+8ZXe8C+lgiAGqkOaZBruqrWclLkgAww34= -golang.org/x/sys v0.0.0-20201018230417-eeed37f84f13/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201101102859-da207088b7d1 h1:a/mKvvZr9Jcc8oKfcmgzyp7OwF73JPWsQLvH1z2Kxck= golang.org/x/sys v0.0.0-20201101102859-da207088b7d1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= ->>>>>>> Stashed changes -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -841,24 +728,16 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20190606050223-4d9ae51c2468/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190611222205-d73e1c7e250b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191205215504-7b8c8591a921/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200113040837-eac381796e91/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117065230-39095c1d176c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20201030010431-2feb2bb1ff51/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -867,23 +746,16 @@ golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.6.1-0.20190607001116-5213b8090861/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -891,12 +763,9 @@ google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d h1:HV9Z9qMhQEsdlvxNFELgQ11RkMzO3CMkjEySjCtuLes= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -905,12 +774,8 @@ google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZi google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1 h1:zvIju4sqAGvwKspUQOhwnpcqSbzi7/H6QomNNjTL4sk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.34.0 h1:raiipEjMOIC/TO2AvyTxP25XFdLxNIBwzDh3FM3XztI= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= @@ -929,25 +794,18 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.61.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/matryer/try.v1 v1.0.0-20150601225556-312d2599e12e/go.mod h1:tve0rTLdGlwnXF7iBO9rbAEyeXvuuPx0n4DvXS/Nw7o= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= -gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -956,53 +814,15 @@ gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gorm.io/driver/postgres v1.0.3/go.mod h1:FvRSYfBI9jEp6ZSjlpS9qNcSjxwYxFc03UOTrHdvvYA= gorm.io/driver/sqlite v1.1.3/go.mod h1:AKDgRWk8lcSQSw+9kxCJnX/yySj8G3rdwYlU57cB45c= gorm.io/gorm v1.20.1/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gorm.io/gorm v1.20.2/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= -gorm.io/gorm v1.20.5/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= -gorm.io/gorm v1.20.9/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gorm.io/gorm v1.20.11/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= -k8s.io/api v0.19.3/go.mod h1:VF+5FT1B74Pw3KxMdKyinLo+zynBaMBiAfGMuldcNDs= -k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= -k8s.io/apimachinery v0.19.3/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= -k8s.io/apiserver v0.17.0/go.mod h1:ABM+9x/prjINN6iiffRVNCBR2Wk7uY4z+EtEGZD48cg= -k8s.io/client-go v0.17.0/go.mod h1:TYgR6EUHs6k45hb6KWjVD6jFZvJV4gHDikv/It0xz+k= -k8s.io/client-go v0.19.3/go.mod h1:+eEMktZM+MG0KO+PTkci8xnbCZHvj9TqR6Q1XDUIJOM= -k8s.io/cloud-provider v0.17.0/go.mod h1:Ze4c3w2C0bRsjkBUoHpFi+qWe3ob1wI2/7cUn+YQIDE= -k8s.io/code-generator v0.0.0-20191121015212-c4c8f8345c7e/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= -k8s.io/component-base v0.17.0/go.mod h1:rKuRAokNMY2nn2A6LP/MiwpoaMRHpfRnrPaUJJj1Yoc= -k8s.io/csi-translation-lib v0.17.0/go.mod h1:HEF7MEz7pOLJCnxabi45IPkhSsE/KmxPQksuCrHKWls= -k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= -k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= -k8s.io/legacy-cloud-providers v0.17.0/go.mod h1:DdzaepJ3RtRy+e5YhNtrCYwlgyK87j/5+Yfp0L9Syp8= -k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= -k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= -modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= -modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= -modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= -modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= -sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= -sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/examples/example-plugin-go-grpc/a b/examples/example-plugin-go-grpc/a new file mode 100644 index 0000000..e69de29 diff --git a/go.sum b/go.sum index 908fecb..a3d9b98 100644 --- a/go.sum +++ b/go.sum @@ -722,6 +722,7 @@ google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsb google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= diff --git a/pkg/app/app.go b/pkg/app/app.go index 0e18b79..379d6bd 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -23,7 +23,6 @@ func (a *App) Run() *echo.Echo { // Run the operator built-in if flag.Lookup("test.v") == nil { - operator := operator.Operator{} logger := logrus.New() log := logger.WithField("process", "operator") diff --git a/pkg/app/router_new_test.go b/pkg/app/router_new_test.go index 31f4777..a759644 100644 --- a/pkg/app/router_new_test.go +++ b/pkg/app/router_new_test.go @@ -55,6 +55,19 @@ func TestServerNew(t *testing.T) { }, }, }, + /* + { + expectedStarting: true, + expectedHTTPStatus: http.StatusOK, + project: models.Project{ + Name: "git-project", + Description: "huhu", + GitRepository: &models.GitRepository{ + Url: "https://github.com/sahlinet/go-tumbo3-examples.git/example-plugin-go-grpc", + }, + }, + }, + */ /* { expectedStarting: false, expectedHTTPStatus: http.StatusOK, @@ -95,7 +108,7 @@ func TestServerNew(t *testing.T) { if tt.expectedStarting { err = client.StartProject(url, token, &tt.project) assert.Nil(t, err) - assert.Equal(t, "Running", tt.project.State) + assert.Equal(t, "Running", tt.project.ProjectState.State) assert.NotEmpty(t, tt.project.GitRepository.Version) // Access @@ -103,7 +116,7 @@ func TestServerNew(t *testing.T) { // Stop client.StopProject(url, token, &tt.project) - assert.Equal(t, "Stopped", tt.project.State) + assert.Equal(t, "Stopped", tt.project.ProjectState.State) } // Delete diff --git a/pkg/app/testdata.go b/pkg/app/testdata.go index b0f72c8..7775464 100644 --- a/pkg/app/testdata.go +++ b/pkg/app/testdata.go @@ -31,12 +31,9 @@ func localTestProjects() []*models.Project { projects := make([]*models.Project, 0) projects = append(projects, &models.Project{ - /* Model: models.Model{ - ID: 0, - } ,*/ - Name: "the-project", - Description: "a project to test", - State: "not started", + Name: "the-project", + Description: "a project to test", + ProjectState: &models.ProjectState{State: "not started"}, GitRepository: &models.GitRepository{ Url: examplePath, }, @@ -45,9 +42,9 @@ func localTestProjects() []*models.Project { examplePath = path.Join(d, "example-plugin-go-grpc-fail") projects = append(projects, &models.Project{ - Name: "failing application", - Description: "an application that fails", - State: "not started", + Name: "failing application", + Description: "an application that fails", + ProjectState: &models.ProjectState{State: "not started"}, GitRepository: &models.GitRepository{ Url: examplePath, }, @@ -59,11 +56,11 @@ func gitTestProjects() []*models.Project { projects := make([]*models.Project, 0) projects = append(projects, &models.Project{ - Name: "the-git-project", - Description: "a project to test", - State: "not started", + Name: "the-git-project", + Description: "a project to test", + ProjectState: &models.ProjectState{State: "not started"}, GitRepository: &models.GitRepository{ - Url: "https://github.com/sahlinet/go-tumbo3.git//examples/example-plugin-go-grpc", + Url: "https://github.com/sahlinet/go-tumbo3-examples.git//example-plugin-go-grpc", }, }) return projects diff --git a/pkg/client/client.go b/pkg/client/client.go index ec1bd81..871f1f3 100644 --- a/pkg/client/client.go +++ b/pkg/client/client.go @@ -127,8 +127,8 @@ func WaitForState(baseUrl, token string, project *models.Project, state string) case err != nil: // request error - return it return err - case project.State != state: - return fmt.Errorf("retry, state is %s, not %s", project.State, state) + case project.ProjectState.State != state: + return fmt.Errorf("retry, state is %s, not %s", project.ProjectState.State, state) //case project.State == state: // retryable StatusCode - return it //return retry.Stop(fmt.Errorf("expected state is " + state)) diff --git a/pkg/controllers/rice-box.go b/pkg/controllers/rice-box.go index e70d7d3..414ad3f 100644 --- a/pkg/controllers/rice-box.go +++ b/pkg/controllers/rice-box.go @@ -11,15 +11,15 @@ func init() { // define files file2 := &embedded.EmbeddedFile{ Filename: "elm.compiled.js", - FileModTime: time.Unix(1611410652, 0), + FileModTime: time.Unix(1611607243, 0), - Content: string("(function(scope){\n'use strict';\n\nfunction F(arity, fun, wrapper) {\n wrapper.a = arity;\n wrapper.f = fun;\n return wrapper;\n}\n\nfunction F2(fun) {\n return F(2, fun, function(a) { return function(b) { return fun(a,b); }; })\n}\nfunction F3(fun) {\n return F(3, fun, function(a) {\n return function(b) { return function(c) { return fun(a, b, c); }; };\n });\n}\nfunction F4(fun) {\n return F(4, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return fun(a, b, c, d); }; }; };\n });\n}\nfunction F5(fun) {\n return F(5, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return fun(a, b, c, d, e); }; }; }; };\n });\n}\nfunction F6(fun) {\n return F(6, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return fun(a, b, c, d, e, f); }; }; }; }; };\n });\n}\nfunction F7(fun) {\n return F(7, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return fun(a, b, c, d, e, f, g); }; }; }; }; }; };\n });\n}\nfunction F8(fun) {\n return F(8, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return function(h) {\n return fun(a, b, c, d, e, f, g, h); }; }; }; }; }; }; };\n });\n}\nfunction F9(fun) {\n return F(9, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return function(h) { return function(i) {\n return fun(a, b, c, d, e, f, g, h, i); }; }; }; }; }; }; }; };\n });\n}\n\nfunction A2(fun, a, b) {\n return fun.a === 2 ? fun.f(a, b) : fun(a)(b);\n}\nfunction A3(fun, a, b, c) {\n return fun.a === 3 ? fun.f(a, b, c) : fun(a)(b)(c);\n}\nfunction A4(fun, a, b, c, d) {\n return fun.a === 4 ? fun.f(a, b, c, d) : fun(a)(b)(c)(d);\n}\nfunction A5(fun, a, b, c, d, e) {\n return fun.a === 5 ? fun.f(a, b, c, d, e) : fun(a)(b)(c)(d)(e);\n}\nfunction A6(fun, a, b, c, d, e, f) {\n return fun.a === 6 ? fun.f(a, b, c, d, e, f) : fun(a)(b)(c)(d)(e)(f);\n}\nfunction A7(fun, a, b, c, d, e, f, g) {\n return fun.a === 7 ? fun.f(a, b, c, d, e, f, g) : fun(a)(b)(c)(d)(e)(f)(g);\n}\nfunction A8(fun, a, b, c, d, e, f, g, h) {\n return fun.a === 8 ? fun.f(a, b, c, d, e, f, g, h) : fun(a)(b)(c)(d)(e)(f)(g)(h);\n}\nfunction A9(fun, a, b, c, d, e, f, g, h, i) {\n return fun.a === 9 ? fun.f(a, b, c, d, e, f, g, h, i) : fun(a)(b)(c)(d)(e)(f)(g)(h)(i);\n}\n\n\n\n\n// EQUALITY\n\nfunction _Utils_eq(x, y)\n{\n\tfor (\n\t\tvar pair, stack = [], isEqual = _Utils_eqHelp(x, y, 0, stack);\n\t\tisEqual && (pair = stack.pop());\n\t\tisEqual = _Utils_eqHelp(pair.a, pair.b, 0, stack)\n\t\t)\n\t{}\n\n\treturn isEqual;\n}\n\nfunction _Utils_eqHelp(x, y, depth, stack)\n{\n\tif (x === y)\n\t{\n\t\treturn true;\n\t}\n\n\tif (typeof x !== 'object' || x === null || y === null)\n\t{\n\t\ttypeof x === 'function' && _Debug_crash(5);\n\t\treturn false;\n\t}\n\n\tif (depth > 100)\n\t{\n\t\tstack.push(_Utils_Tuple2(x,y));\n\t\treturn true;\n\t}\n\n\t/**_UNUSED/\n\tif (x.$ === 'Set_elm_builtin')\n\t{\n\t\tx = $elm$core$Set$toList(x);\n\t\ty = $elm$core$Set$toList(y);\n\t}\n\tif (x.$ === 'RBNode_elm_builtin' || x.$ === 'RBEmpty_elm_builtin')\n\t{\n\t\tx = $elm$core$Dict$toList(x);\n\t\ty = $elm$core$Dict$toList(y);\n\t}\n\t//*/\n\n\t/**/\n\tif (x.$ < 0)\n\t{\n\t\tx = $elm$core$Dict$toList(x);\n\t\ty = $elm$core$Dict$toList(y);\n\t}\n\t//*/\n\n\tfor (var key in x)\n\t{\n\t\tif (!_Utils_eqHelp(x[key], y[key], depth + 1, stack))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nvar _Utils_equal = F2(_Utils_eq);\nvar _Utils_notEqual = F2(function(a, b) { return !_Utils_eq(a,b); });\n\n\n\n// COMPARISONS\n\n// Code in Generate/JavaScript.hs, Basics.js, and List.js depends on\n// the particular integer values assigned to LT, EQ, and GT.\n\nfunction _Utils_cmp(x, y, ord)\n{\n\tif (typeof x !== 'object')\n\t{\n\t\treturn x === y ? /*EQ*/ 0 : x < y ? /*LT*/ -1 : /*GT*/ 1;\n\t}\n\n\t/**_UNUSED/\n\tif (x instanceof String)\n\t{\n\t\tvar a = x.valueOf();\n\t\tvar b = y.valueOf();\n\t\treturn a === b ? 0 : a < b ? -1 : 1;\n\t}\n\t//*/\n\n\t/**/\n\tif (typeof x.$ === 'undefined')\n\t//*/\n\t/**_UNUSED/\n\tif (x.$[0] === '#')\n\t//*/\n\t{\n\t\treturn (ord = _Utils_cmp(x.a, y.a))\n\t\t\t? ord\n\t\t\t: (ord = _Utils_cmp(x.b, y.b))\n\t\t\t\t? ord\n\t\t\t\t: _Utils_cmp(x.c, y.c);\n\t}\n\n\t// traverse conses until end of a list or a mismatch\n\tfor (; x.b && y.b && !(ord = _Utils_cmp(x.a, y.a)); x = x.b, y = y.b) {} // WHILE_CONSES\n\treturn ord || (x.b ? /*GT*/ 1 : y.b ? /*LT*/ -1 : /*EQ*/ 0);\n}\n\nvar _Utils_lt = F2(function(a, b) { return _Utils_cmp(a, b) < 0; });\nvar _Utils_le = F2(function(a, b) { return _Utils_cmp(a, b) < 1; });\nvar _Utils_gt = F2(function(a, b) { return _Utils_cmp(a, b) > 0; });\nvar _Utils_ge = F2(function(a, b) { return _Utils_cmp(a, b) >= 0; });\n\nvar _Utils_compare = F2(function(x, y)\n{\n\tvar n = _Utils_cmp(x, y);\n\treturn n < 0 ? $elm$core$Basics$LT : n ? $elm$core$Basics$GT : $elm$core$Basics$EQ;\n});\n\n\n// COMMON VALUES\n\nvar _Utils_Tuple0 = 0;\nvar _Utils_Tuple0_UNUSED = { $: '#0' };\n\nfunction _Utils_Tuple2(a, b) { return { a: a, b: b }; }\nfunction _Utils_Tuple2_UNUSED(a, b) { return { $: '#2', a: a, b: b }; }\n\nfunction _Utils_Tuple3(a, b, c) { return { a: a, b: b, c: c }; }\nfunction _Utils_Tuple3_UNUSED(a, b, c) { return { $: '#3', a: a, b: b, c: c }; }\n\nfunction _Utils_chr(c) { return c; }\nfunction _Utils_chr_UNUSED(c) { return new String(c); }\n\n\n// RECORDS\n\nfunction _Utils_update(oldRecord, updatedFields)\n{\n\tvar newRecord = {};\n\n\tfor (var key in oldRecord)\n\t{\n\t\tnewRecord[key] = oldRecord[key];\n\t}\n\n\tfor (var key in updatedFields)\n\t{\n\t\tnewRecord[key] = updatedFields[key];\n\t}\n\n\treturn newRecord;\n}\n\n\n// APPEND\n\nvar _Utils_append = F2(_Utils_ap);\n\nfunction _Utils_ap(xs, ys)\n{\n\t// append Strings\n\tif (typeof xs === 'string')\n\t{\n\t\treturn xs + ys;\n\t}\n\n\t// append Lists\n\tif (!xs.b)\n\t{\n\t\treturn ys;\n\t}\n\tvar root = _List_Cons(xs.a, ys);\n\txs = xs.b\n\tfor (var curr = root; xs.b; xs = xs.b) // WHILE_CONS\n\t{\n\t\tcurr = curr.b = _List_Cons(xs.a, ys);\n\t}\n\treturn root;\n}\n\n\n\nvar _List_Nil = { $: 0 };\nvar _List_Nil_UNUSED = { $: '[]' };\n\nfunction _List_Cons(hd, tl) { return { $: 1, a: hd, b: tl }; }\nfunction _List_Cons_UNUSED(hd, tl) { return { $: '::', a: hd, b: tl }; }\n\n\nvar _List_cons = F2(_List_Cons);\n\nfunction _List_fromArray(arr)\n{\n\tvar out = _List_Nil;\n\tfor (var i = arr.length; i--; )\n\t{\n\t\tout = _List_Cons(arr[i], out);\n\t}\n\treturn out;\n}\n\nfunction _List_toArray(xs)\n{\n\tfor (var out = []; xs.b; xs = xs.b) // WHILE_CONS\n\t{\n\t\tout.push(xs.a);\n\t}\n\treturn out;\n}\n\nvar _List_map2 = F3(function(f, xs, ys)\n{\n\tfor (var arr = []; xs.b && ys.b; xs = xs.b, ys = ys.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A2(f, xs.a, ys.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map3 = F4(function(f, xs, ys, zs)\n{\n\tfor (var arr = []; xs.b && ys.b && zs.b; xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A3(f, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map4 = F5(function(f, ws, xs, ys, zs)\n{\n\tfor (var arr = []; ws.b && xs.b && ys.b && zs.b; ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A4(f, ws.a, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map5 = F6(function(f, vs, ws, xs, ys, zs)\n{\n\tfor (var arr = []; vs.b && ws.b && xs.b && ys.b && zs.b; vs = vs.b, ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A5(f, vs.a, ws.a, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_sortBy = F2(function(f, xs)\n{\n\treturn _List_fromArray(_List_toArray(xs).sort(function(a, b) {\n\t\treturn _Utils_cmp(f(a), f(b));\n\t}));\n});\n\nvar _List_sortWith = F2(function(f, xs)\n{\n\treturn _List_fromArray(_List_toArray(xs).sort(function(a, b) {\n\t\tvar ord = A2(f, a, b);\n\t\treturn ord === $elm$core$Basics$EQ ? 0 : ord === $elm$core$Basics$LT ? -1 : 1;\n\t}));\n});\n\n\n\nvar _JsArray_empty = [];\n\nfunction _JsArray_singleton(value)\n{\n return [value];\n}\n\nfunction _JsArray_length(array)\n{\n return array.length;\n}\n\nvar _JsArray_initialize = F3(function(size, offset, func)\n{\n var result = new Array(size);\n\n for (var i = 0; i < size; i++)\n {\n result[i] = func(offset + i);\n }\n\n return result;\n});\n\nvar _JsArray_initializeFromList = F2(function (max, ls)\n{\n var result = new Array(max);\n\n for (var i = 0; i < max && ls.b; i++)\n {\n result[i] = ls.a;\n ls = ls.b;\n }\n\n result.length = i;\n return _Utils_Tuple2(result, ls);\n});\n\nvar _JsArray_unsafeGet = F2(function(index, array)\n{\n return array[index];\n});\n\nvar _JsArray_unsafeSet = F3(function(index, value, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = array[i];\n }\n\n result[index] = value;\n return result;\n});\n\nvar _JsArray_push = F2(function(value, array)\n{\n var length = array.length;\n var result = new Array(length + 1);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = array[i];\n }\n\n result[length] = value;\n return result;\n});\n\nvar _JsArray_foldl = F3(function(func, acc, array)\n{\n var length = array.length;\n\n for (var i = 0; i < length; i++)\n {\n acc = A2(func, array[i], acc);\n }\n\n return acc;\n});\n\nvar _JsArray_foldr = F3(function(func, acc, array)\n{\n for (var i = array.length - 1; i >= 0; i--)\n {\n acc = A2(func, array[i], acc);\n }\n\n return acc;\n});\n\nvar _JsArray_map = F2(function(func, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = func(array[i]);\n }\n\n return result;\n});\n\nvar _JsArray_indexedMap = F3(function(func, offset, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = A2(func, offset + i, array[i]);\n }\n\n return result;\n});\n\nvar _JsArray_slice = F3(function(from, to, array)\n{\n return array.slice(from, to);\n});\n\nvar _JsArray_appendN = F3(function(n, dest, source)\n{\n var destLen = dest.length;\n var itemsToCopy = n - destLen;\n\n if (itemsToCopy > source.length)\n {\n itemsToCopy = source.length;\n }\n\n var size = destLen + itemsToCopy;\n var result = new Array(size);\n\n for (var i = 0; i < destLen; i++)\n {\n result[i] = dest[i];\n }\n\n for (var i = 0; i < itemsToCopy; i++)\n {\n result[i + destLen] = source[i];\n }\n\n return result;\n});\n\n\n\n// LOG\n\nvar _Debug_log = F2(function(tag, value)\n{\n\treturn value;\n});\n\nvar _Debug_log_UNUSED = F2(function(tag, value)\n{\n\tconsole.log(tag + ': ' + _Debug_toString(value));\n\treturn value;\n});\n\n\n// TODOS\n\nfunction _Debug_todo(moduleName, region)\n{\n\treturn function(message) {\n\t\t_Debug_crash(8, moduleName, region, message);\n\t};\n}\n\nfunction _Debug_todoCase(moduleName, region, value)\n{\n\treturn function(message) {\n\t\t_Debug_crash(9, moduleName, region, value, message);\n\t};\n}\n\n\n// TO STRING\n\nfunction _Debug_toString(value)\n{\n\treturn '';\n}\n\nfunction _Debug_toString_UNUSED(value)\n{\n\treturn _Debug_toAnsiString(false, value);\n}\n\nfunction _Debug_toAnsiString(ansi, value)\n{\n\tif (typeof value === 'function')\n\t{\n\t\treturn _Debug_internalColor(ansi, '');\n\t}\n\n\tif (typeof value === 'boolean')\n\t{\n\t\treturn _Debug_ctorColor(ansi, value ? 'True' : 'False');\n\t}\n\n\tif (typeof value === 'number')\n\t{\n\t\treturn _Debug_numberColor(ansi, value + '');\n\t}\n\n\tif (value instanceof String)\n\t{\n\t\treturn _Debug_charColor(ansi, \"'\" + _Debug_addSlashes(value, true) + \"'\");\n\t}\n\n\tif (typeof value === 'string')\n\t{\n\t\treturn _Debug_stringColor(ansi, '\"' + _Debug_addSlashes(value, false) + '\"');\n\t}\n\n\tif (typeof value === 'object' && '$' in value)\n\t{\n\t\tvar tag = value.$;\n\n\t\tif (typeof tag === 'number')\n\t\t{\n\t\t\treturn _Debug_internalColor(ansi, '');\n\t\t}\n\n\t\tif (tag[0] === '#')\n\t\t{\n\t\t\tvar output = [];\n\t\t\tfor (var k in value)\n\t\t\t{\n\t\t\t\tif (k === '$') continue;\n\t\t\t\toutput.push(_Debug_toAnsiString(ansi, value[k]));\n\t\t\t}\n\t\t\treturn '(' + output.join(',') + ')';\n\t\t}\n\n\t\tif (tag === 'Set_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Set')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Set$toList(value));\n\t\t}\n\n\t\tif (tag === 'RBNode_elm_builtin' || tag === 'RBEmpty_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Dict')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Dict$toList(value));\n\t\t}\n\n\t\tif (tag === 'Array_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Array')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Array$toList(value));\n\t\t}\n\n\t\tif (tag === '::' || tag === '[]')\n\t\t{\n\t\t\tvar output = '[';\n\n\t\t\tvalue.b && (output += _Debug_toAnsiString(ansi, value.a), value = value.b)\n\n\t\t\tfor (; value.b; value = value.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\toutput += ',' + _Debug_toAnsiString(ansi, value.a);\n\t\t\t}\n\t\t\treturn output + ']';\n\t\t}\n\n\t\tvar output = '';\n\t\tfor (var i in value)\n\t\t{\n\t\t\tif (i === '$') continue;\n\t\t\tvar str = _Debug_toAnsiString(ansi, value[i]);\n\t\t\tvar c0 = str[0];\n\t\t\tvar parenless = c0 === '{' || c0 === '(' || c0 === '[' || c0 === '<' || c0 === '\"' || str.indexOf(' ') < 0;\n\t\t\toutput += ' ' + (parenless ? str : '(' + str + ')');\n\t\t}\n\t\treturn _Debug_ctorColor(ansi, tag) + output;\n\t}\n\n\tif (typeof DataView === 'function' && value instanceof DataView)\n\t{\n\t\treturn _Debug_stringColor(ansi, '<' + value.byteLength + ' bytes>');\n\t}\n\n\tif (typeof File !== 'undefined' && value instanceof File)\n\t{\n\t\treturn _Debug_internalColor(ansi, '<' + value.name + '>');\n\t}\n\n\tif (typeof value === 'object')\n\t{\n\t\tvar output = [];\n\t\tfor (var key in value)\n\t\t{\n\t\t\tvar field = key[0] === '_' ? key.slice(1) : key;\n\t\t\toutput.push(_Debug_fadeColor(ansi, field) + ' = ' + _Debug_toAnsiString(ansi, value[key]));\n\t\t}\n\t\tif (output.length === 0)\n\t\t{\n\t\t\treturn '{}';\n\t\t}\n\t\treturn '{ ' + output.join(', ') + ' }';\n\t}\n\n\treturn _Debug_internalColor(ansi, '');\n}\n\nfunction _Debug_addSlashes(str, isChar)\n{\n\tvar s = str\n\t\t.replace(/\\\\/g, '\\\\\\\\')\n\t\t.replace(/\\n/g, '\\\\n')\n\t\t.replace(/\\t/g, '\\\\t')\n\t\t.replace(/\\r/g, '\\\\r')\n\t\t.replace(/\\v/g, '\\\\v')\n\t\t.replace(/\\0/g, '\\\\0');\n\n\tif (isChar)\n\t{\n\t\treturn s.replace(/\\'/g, '\\\\\\'');\n\t}\n\telse\n\t{\n\t\treturn s.replace(/\\\"/g, '\\\\\"');\n\t}\n}\n\nfunction _Debug_ctorColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[96m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_numberColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[95m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_stringColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[93m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_charColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[92m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_fadeColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[37m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_internalColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[36m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_toHexDigit(n)\n{\n\treturn String.fromCharCode(n < 10 ? 48 + n : 55 + n);\n}\n\n\n// CRASH\n\n\nfunction _Debug_crash(identifier)\n{\n\tthrow new Error('https://github.com/elm/core/blob/1.0.0/hints/' + identifier + '.md');\n}\n\n\nfunction _Debug_crash_UNUSED(identifier, fact1, fact2, fact3, fact4)\n{\n\tswitch(identifier)\n\t{\n\t\tcase 0:\n\t\t\tthrow new Error('What node should I take over? In JavaScript I need something like:\\n\\n Elm.Main.init({\\n node: document.getElementById(\"elm-node\")\\n })\\n\\nYou need to do this with any Browser.sandbox or Browser.element program.');\n\n\t\tcase 1:\n\t\t\tthrow new Error('Browser.application programs cannot handle URLs like this:\\n\\n ' + document.location.href + '\\n\\nWhat is the root? The root of your file system? Try looking at this program with `elm reactor` or some other server.');\n\n\t\tcase 2:\n\t\t\tvar jsonErrorString = fact1;\n\t\t\tthrow new Error('Problem with the flags given to your Elm program on initialization.\\n\\n' + jsonErrorString);\n\n\t\tcase 3:\n\t\t\tvar portName = fact1;\n\t\t\tthrow new Error('There can only be one port named `' + portName + '`, but your program has multiple.');\n\n\t\tcase 4:\n\t\t\tvar portName = fact1;\n\t\t\tvar problem = fact2;\n\t\t\tthrow new Error('Trying to send an unexpected type of value through port `' + portName + '`:\\n' + problem);\n\n\t\tcase 5:\n\t\t\tthrow new Error('Trying to use `(==)` on functions.\\nThere is no way to know if functions are \"the same\" in the Elm sense.\\nRead more about this at https://package.elm-lang.org/packages/elm/core/latest/Basics#== which describes why it is this way and what the better version will look like.');\n\n\t\tcase 6:\n\t\t\tvar moduleName = fact1;\n\t\t\tthrow new Error('Your page is loading multiple Elm scripts with a module named ' + moduleName + '. Maybe a duplicate script is getting loaded accidentally? If not, rename one of them so I know which is which!');\n\n\t\tcase 8:\n\t\t\tvar moduleName = fact1;\n\t\t\tvar region = fact2;\n\t\t\tvar message = fact3;\n\t\t\tthrow new Error('TODO in module `' + moduleName + '` ' + _Debug_regionToString(region) + '\\n\\n' + message);\n\n\t\tcase 9:\n\t\t\tvar moduleName = fact1;\n\t\t\tvar region = fact2;\n\t\t\tvar value = fact3;\n\t\t\tvar message = fact4;\n\t\t\tthrow new Error(\n\t\t\t\t'TODO in module `' + moduleName + '` from the `case` expression '\n\t\t\t\t+ _Debug_regionToString(region) + '\\n\\nIt received the following value:\\n\\n '\n\t\t\t\t+ _Debug_toString(value).replace('\\n', '\\n ')\n\t\t\t\t+ '\\n\\nBut the branch that handles it says:\\n\\n ' + message.replace('\\n', '\\n ')\n\t\t\t);\n\n\t\tcase 10:\n\t\t\tthrow new Error('Bug in https://github.com/elm/virtual-dom/issues');\n\n\t\tcase 11:\n\t\t\tthrow new Error('Cannot perform mod 0. Division by zero error.');\n\t}\n}\n\nfunction _Debug_regionToString(region)\n{\n\tif (region.c3.aD === region.dt.aD)\n\t{\n\t\treturn 'on line ' + region.c3.aD;\n\t}\n\treturn 'on lines ' + region.c3.aD + ' through ' + region.dt.aD;\n}\n\n\n\n// MATH\n\nvar _Basics_add = F2(function(a, b) { return a + b; });\nvar _Basics_sub = F2(function(a, b) { return a - b; });\nvar _Basics_mul = F2(function(a, b) { return a * b; });\nvar _Basics_fdiv = F2(function(a, b) { return a / b; });\nvar _Basics_idiv = F2(function(a, b) { return (a / b) | 0; });\nvar _Basics_pow = F2(Math.pow);\n\nvar _Basics_remainderBy = F2(function(b, a) { return a % b; });\n\n// https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/divmodnote-letter.pdf\nvar _Basics_modBy = F2(function(modulus, x)\n{\n\tvar answer = x % modulus;\n\treturn modulus === 0\n\t\t? _Debug_crash(11)\n\t\t:\n\t((answer > 0 && modulus < 0) || (answer < 0 && modulus > 0))\n\t\t? answer + modulus\n\t\t: answer;\n});\n\n\n// TRIGONOMETRY\n\nvar _Basics_pi = Math.PI;\nvar _Basics_e = Math.E;\nvar _Basics_cos = Math.cos;\nvar _Basics_sin = Math.sin;\nvar _Basics_tan = Math.tan;\nvar _Basics_acos = Math.acos;\nvar _Basics_asin = Math.asin;\nvar _Basics_atan = Math.atan;\nvar _Basics_atan2 = F2(Math.atan2);\n\n\n// MORE MATH\n\nfunction _Basics_toFloat(x) { return x; }\nfunction _Basics_truncate(n) { return n | 0; }\nfunction _Basics_isInfinite(n) { return n === Infinity || n === -Infinity; }\n\nvar _Basics_ceiling = Math.ceil;\nvar _Basics_floor = Math.floor;\nvar _Basics_round = Math.round;\nvar _Basics_sqrt = Math.sqrt;\nvar _Basics_log = Math.log;\nvar _Basics_isNaN = isNaN;\n\n\n// BOOLEANS\n\nfunction _Basics_not(bool) { return !bool; }\nvar _Basics_and = F2(function(a, b) { return a && b; });\nvar _Basics_or = F2(function(a, b) { return a || b; });\nvar _Basics_xor = F2(function(a, b) { return a !== b; });\n\n\n\nvar _String_cons = F2(function(chr, str)\n{\n\treturn chr + str;\n});\n\nfunction _String_uncons(string)\n{\n\tvar word = string.charCodeAt(0);\n\treturn !isNaN(word)\n\t\t? $elm$core$Maybe$Just(\n\t\t\t0xD800 <= word && word <= 0xDBFF\n\t\t\t\t? _Utils_Tuple2(_Utils_chr(string[0] + string[1]), string.slice(2))\n\t\t\t\t: _Utils_Tuple2(_Utils_chr(string[0]), string.slice(1))\n\t\t)\n\t\t: $elm$core$Maybe$Nothing;\n}\n\nvar _String_append = F2(function(a, b)\n{\n\treturn a + b;\n});\n\nfunction _String_length(str)\n{\n\treturn str.length;\n}\n\nvar _String_map = F2(function(func, string)\n{\n\tvar len = string.length;\n\tvar array = new Array(len);\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tarray[i] = func(_Utils_chr(string[i] + string[i+1]));\n\t\t\ti += 2;\n\t\t\tcontinue;\n\t\t}\n\t\tarray[i] = func(_Utils_chr(string[i]));\n\t\ti++;\n\t}\n\treturn array.join('');\n});\n\nvar _String_filter = F2(function(isGood, str)\n{\n\tvar arr = [];\n\tvar len = str.length;\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar char = str[i];\n\t\tvar word = str.charCodeAt(i);\n\t\ti++;\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tchar += str[i];\n\t\t\ti++;\n\t\t}\n\n\t\tif (isGood(_Utils_chr(char)))\n\t\t{\n\t\t\tarr.push(char);\n\t\t}\n\t}\n\treturn arr.join('');\n});\n\nfunction _String_reverse(str)\n{\n\tvar len = str.length;\n\tvar arr = new Array(len);\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar word = str.charCodeAt(i);\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tarr[len - i] = str[i + 1];\n\t\t\ti++;\n\t\t\tarr[len - i] = str[i - 1];\n\t\t\ti++;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tarr[len - i] = str[i];\n\t\t\ti++;\n\t\t}\n\t}\n\treturn arr.join('');\n}\n\nvar _String_foldl = F3(function(func, state, string)\n{\n\tvar len = string.length;\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\ti++;\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tchar += string[i];\n\t\t\ti++;\n\t\t}\n\t\tstate = A2(func, _Utils_chr(char), state);\n\t}\n\treturn state;\n});\n\nvar _String_foldr = F3(function(func, state, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tstate = A2(func, _Utils_chr(char), state);\n\t}\n\treturn state;\n});\n\nvar _String_split = F2(function(sep, str)\n{\n\treturn str.split(sep);\n});\n\nvar _String_join = F2(function(sep, strs)\n{\n\treturn strs.join(sep);\n});\n\nvar _String_slice = F3(function(start, end, str) {\n\treturn str.slice(start, end);\n});\n\nfunction _String_trim(str)\n{\n\treturn str.trim();\n}\n\nfunction _String_trimLeft(str)\n{\n\treturn str.replace(/^\\s+/, '');\n}\n\nfunction _String_trimRight(str)\n{\n\treturn str.replace(/\\s+$/, '');\n}\n\nfunction _String_words(str)\n{\n\treturn _List_fromArray(str.trim().split(/\\s+/g));\n}\n\nfunction _String_lines(str)\n{\n\treturn _List_fromArray(str.split(/\\r\\n|\\r|\\n/g));\n}\n\nfunction _String_toUpper(str)\n{\n\treturn str.toUpperCase();\n}\n\nfunction _String_toLower(str)\n{\n\treturn str.toLowerCase();\n}\n\nvar _String_any = F2(function(isGood, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tif (isGood(_Utils_chr(char)))\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n});\n\nvar _String_all = F2(function(isGood, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tif (!isGood(_Utils_chr(char)))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n});\n\nvar _String_contains = F2(function(sub, str)\n{\n\treturn str.indexOf(sub) > -1;\n});\n\nvar _String_startsWith = F2(function(sub, str)\n{\n\treturn str.indexOf(sub) === 0;\n});\n\nvar _String_endsWith = F2(function(sub, str)\n{\n\treturn str.length >= sub.length &&\n\t\tstr.lastIndexOf(sub) === str.length - sub.length;\n});\n\nvar _String_indexes = F2(function(sub, str)\n{\n\tvar subLen = sub.length;\n\n\tif (subLen < 1)\n\t{\n\t\treturn _List_Nil;\n\t}\n\n\tvar i = 0;\n\tvar is = [];\n\n\twhile ((i = str.indexOf(sub, i)) > -1)\n\t{\n\t\tis.push(i);\n\t\ti = i + subLen;\n\t}\n\n\treturn _List_fromArray(is);\n});\n\n\n// TO STRING\n\nfunction _String_fromNumber(number)\n{\n\treturn number + '';\n}\n\n\n// INT CONVERSIONS\n\nfunction _String_toInt(str)\n{\n\tvar total = 0;\n\tvar code0 = str.charCodeAt(0);\n\tvar start = code0 == 0x2B /* + */ || code0 == 0x2D /* - */ ? 1 : 0;\n\n\tfor (var i = start; i < str.length; ++i)\n\t{\n\t\tvar code = str.charCodeAt(i);\n\t\tif (code < 0x30 || 0x39 < code)\n\t\t{\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t}\n\t\ttotal = 10 * total + code - 0x30;\n\t}\n\n\treturn i == start\n\t\t? $elm$core$Maybe$Nothing\n\t\t: $elm$core$Maybe$Just(code0 == 0x2D ? -total : total);\n}\n\n\n// FLOAT CONVERSIONS\n\nfunction _String_toFloat(s)\n{\n\t// check if it is a hex, octal, or binary number\n\tif (s.length === 0 || /[\\sxbo]/.test(s))\n\t{\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n\tvar n = +s;\n\t// faster isNaN check\n\treturn n === n ? $elm$core$Maybe$Just(n) : $elm$core$Maybe$Nothing;\n}\n\nfunction _String_fromList(chars)\n{\n\treturn _List_toArray(chars).join('');\n}\n\n\n\n\nfunction _Char_toCode(char)\n{\n\tvar code = char.charCodeAt(0);\n\tif (0xD800 <= code && code <= 0xDBFF)\n\t{\n\t\treturn (code - 0xD800) * 0x400 + char.charCodeAt(1) - 0xDC00 + 0x10000\n\t}\n\treturn code;\n}\n\nfunction _Char_fromCode(code)\n{\n\treturn _Utils_chr(\n\t\t(code < 0 || 0x10FFFF < code)\n\t\t\t? '\\uFFFD'\n\t\t\t:\n\t\t(code <= 0xFFFF)\n\t\t\t? String.fromCharCode(code)\n\t\t\t:\n\t\t(code -= 0x10000,\n\t\t\tString.fromCharCode(Math.floor(code / 0x400) + 0xD800, code % 0x400 + 0xDC00)\n\t\t)\n\t);\n}\n\nfunction _Char_toUpper(char)\n{\n\treturn _Utils_chr(char.toUpperCase());\n}\n\nfunction _Char_toLower(char)\n{\n\treturn _Utils_chr(char.toLowerCase());\n}\n\nfunction _Char_toLocaleUpper(char)\n{\n\treturn _Utils_chr(char.toLocaleUpperCase());\n}\n\nfunction _Char_toLocaleLower(char)\n{\n\treturn _Utils_chr(char.toLocaleLowerCase());\n}\n\n\n\n/**_UNUSED/\nfunction _Json_errorToString(error)\n{\n\treturn $elm$json$Json$Decode$errorToString(error);\n}\n//*/\n\n\n// CORE DECODERS\n\nfunction _Json_succeed(msg)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: msg\n\t};\n}\n\nfunction _Json_fail(msg)\n{\n\treturn {\n\t\t$: 1,\n\t\ta: msg\n\t};\n}\n\nfunction _Json_decodePrim(decoder)\n{\n\treturn { $: 2, b: decoder };\n}\n\nvar _Json_decodeInt = _Json_decodePrim(function(value) {\n\treturn (typeof value !== 'number')\n\t\t? _Json_expecting('an INT', value)\n\t\t:\n\t(-2147483647 < value && value < 2147483647 && (value | 0) === value)\n\t\t? $elm$core$Result$Ok(value)\n\t\t:\n\t(isFinite(value) && !(value % 1))\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('an INT', value);\n});\n\nvar _Json_decodeBool = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'boolean')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('a BOOL', value);\n});\n\nvar _Json_decodeFloat = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'number')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('a FLOAT', value);\n});\n\nvar _Json_decodeValue = _Json_decodePrim(function(value) {\n\treturn $elm$core$Result$Ok(_Json_wrap(value));\n});\n\nvar _Json_decodeString = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'string')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: (value instanceof String)\n\t\t\t? $elm$core$Result$Ok(value + '')\n\t\t\t: _Json_expecting('a STRING', value);\n});\n\nfunction _Json_decodeList(decoder) { return { $: 3, b: decoder }; }\nfunction _Json_decodeArray(decoder) { return { $: 4, b: decoder }; }\n\nfunction _Json_decodeNull(value) { return { $: 5, c: value }; }\n\nvar _Json_decodeField = F2(function(field, decoder)\n{\n\treturn {\n\t\t$: 6,\n\t\td: field,\n\t\tb: decoder\n\t};\n});\n\nvar _Json_decodeIndex = F2(function(index, decoder)\n{\n\treturn {\n\t\t$: 7,\n\t\te: index,\n\t\tb: decoder\n\t};\n});\n\nfunction _Json_decodeKeyValuePairs(decoder)\n{\n\treturn {\n\t\t$: 8,\n\t\tb: decoder\n\t};\n}\n\nfunction _Json_mapMany(f, decoders)\n{\n\treturn {\n\t\t$: 9,\n\t\tf: f,\n\t\tg: decoders\n\t};\n}\n\nvar _Json_andThen = F2(function(callback, decoder)\n{\n\treturn {\n\t\t$: 10,\n\t\tb: decoder,\n\t\th: callback\n\t};\n});\n\nfunction _Json_oneOf(decoders)\n{\n\treturn {\n\t\t$: 11,\n\t\tg: decoders\n\t};\n}\n\n\n// DECODING OBJECTS\n\nvar _Json_map1 = F2(function(f, d1)\n{\n\treturn _Json_mapMany(f, [d1]);\n});\n\nvar _Json_map2 = F3(function(f, d1, d2)\n{\n\treturn _Json_mapMany(f, [d1, d2]);\n});\n\nvar _Json_map3 = F4(function(f, d1, d2, d3)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3]);\n});\n\nvar _Json_map4 = F5(function(f, d1, d2, d3, d4)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4]);\n});\n\nvar _Json_map5 = F6(function(f, d1, d2, d3, d4, d5)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5]);\n});\n\nvar _Json_map6 = F7(function(f, d1, d2, d3, d4, d5, d6)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6]);\n});\n\nvar _Json_map7 = F8(function(f, d1, d2, d3, d4, d5, d6, d7)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7]);\n});\n\nvar _Json_map8 = F9(function(f, d1, d2, d3, d4, d5, d6, d7, d8)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7, d8]);\n});\n\n\n// DECODE\n\nvar _Json_runOnString = F2(function(decoder, string)\n{\n\ttry\n\t{\n\t\tvar value = JSON.parse(string);\n\t\treturn _Json_runHelp(decoder, value);\n\t}\n\tcatch (e)\n\t{\n\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'This is not valid JSON! ' + e.message, _Json_wrap(string)));\n\t}\n});\n\nvar _Json_run = F2(function(decoder, value)\n{\n\treturn _Json_runHelp(decoder, _Json_unwrap(value));\n});\n\nfunction _Json_runHelp(decoder, value)\n{\n\tswitch (decoder.$)\n\t{\n\t\tcase 2:\n\t\t\treturn decoder.b(value);\n\n\t\tcase 5:\n\t\t\treturn (value === null)\n\t\t\t\t? $elm$core$Result$Ok(decoder.c)\n\t\t\t\t: _Json_expecting('null', value);\n\n\t\tcase 3:\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('a LIST', value);\n\t\t\t}\n\t\t\treturn _Json_runArrayDecoder(decoder.b, value, _List_fromArray);\n\n\t\tcase 4:\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an ARRAY', value);\n\t\t\t}\n\t\t\treturn _Json_runArrayDecoder(decoder.b, value, _Json_toElmArray);\n\n\t\tcase 6:\n\t\t\tvar field = decoder.d;\n\t\t\tif (typeof value !== 'object' || value === null || !(field in value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an OBJECT with a field named `' + field + '`', value);\n\t\t\t}\n\t\t\tvar result = _Json_runHelp(decoder.b, value[field]);\n\t\t\treturn ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, field, result.a));\n\n\t\tcase 7:\n\t\t\tvar index = decoder.e;\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an ARRAY', value);\n\t\t\t}\n\t\t\tif (index >= value.length)\n\t\t\t{\n\t\t\t\treturn _Json_expecting('a LONGER array. Need index ' + index + ' but only see ' + value.length + ' entries', value);\n\t\t\t}\n\t\t\tvar result = _Json_runHelp(decoder.b, value[index]);\n\t\t\treturn ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, index, result.a));\n\n\t\tcase 8:\n\t\t\tif (typeof value !== 'object' || value === null || _Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an OBJECT', value);\n\t\t\t}\n\n\t\t\tvar keyValuePairs = _List_Nil;\n\t\t\t// TODO test perf of Object.keys and switch when support is good enough\n\t\t\tfor (var key in value)\n\t\t\t{\n\t\t\t\tif (value.hasOwnProperty(key))\n\t\t\t\t{\n\t\t\t\t\tvar result = _Json_runHelp(decoder.b, value[key]);\n\t\t\t\t\tif (!$elm$core$Result$isOk(result))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, key, result.a));\n\t\t\t\t\t}\n\t\t\t\t\tkeyValuePairs = _List_Cons(_Utils_Tuple2(key, result.a), keyValuePairs);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn $elm$core$Result$Ok($elm$core$List$reverse(keyValuePairs));\n\n\t\tcase 9:\n\t\t\tvar answer = decoder.f;\n\t\t\tvar decoders = decoder.g;\n\t\t\tfor (var i = 0; i < decoders.length; i++)\n\t\t\t{\n\t\t\t\tvar result = _Json_runHelp(decoders[i], value);\n\t\t\t\tif (!$elm$core$Result$isOk(result))\n\t\t\t\t{\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tanswer = answer(result.a);\n\t\t\t}\n\t\t\treturn $elm$core$Result$Ok(answer);\n\n\t\tcase 10:\n\t\t\tvar result = _Json_runHelp(decoder.b, value);\n\t\t\treturn (!$elm$core$Result$isOk(result))\n\t\t\t\t? result\n\t\t\t\t: _Json_runHelp(decoder.h(result.a), value);\n\n\t\tcase 11:\n\t\t\tvar errors = _List_Nil;\n\t\t\tfor (var temp = decoder.g; temp.b; temp = temp.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\tvar result = _Json_runHelp(temp.a, value);\n\t\t\t\tif ($elm$core$Result$isOk(result))\n\t\t\t\t{\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\terrors = _List_Cons(result.a, errors);\n\t\t\t}\n\t\t\treturn $elm$core$Result$Err($elm$json$Json$Decode$OneOf($elm$core$List$reverse(errors)));\n\n\t\tcase 1:\n\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, decoder.a, _Json_wrap(value)));\n\n\t\tcase 0:\n\t\t\treturn $elm$core$Result$Ok(decoder.a);\n\t}\n}\n\nfunction _Json_runArrayDecoder(decoder, value, toElmValue)\n{\n\tvar len = value.length;\n\tvar array = new Array(len);\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tvar result = _Json_runHelp(decoder, value[i]);\n\t\tif (!$elm$core$Result$isOk(result))\n\t\t{\n\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, i, result.a));\n\t\t}\n\t\tarray[i] = result.a;\n\t}\n\treturn $elm$core$Result$Ok(toElmValue(array));\n}\n\nfunction _Json_isArray(value)\n{\n\treturn Array.isArray(value) || (typeof FileList !== 'undefined' && value instanceof FileList);\n}\n\nfunction _Json_toElmArray(array)\n{\n\treturn A2($elm$core$Array$initialize, array.length, function(i) { return array[i]; });\n}\n\nfunction _Json_expecting(type, value)\n{\n\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'Expecting ' + type, _Json_wrap(value)));\n}\n\n\n// EQUALITY\n\nfunction _Json_equality(x, y)\n{\n\tif (x === y)\n\t{\n\t\treturn true;\n\t}\n\n\tif (x.$ !== y.$)\n\t{\n\t\treturn false;\n\t}\n\n\tswitch (x.$)\n\t{\n\t\tcase 0:\n\t\tcase 1:\n\t\t\treturn x.a === y.a;\n\n\t\tcase 2:\n\t\t\treturn x.b === y.b;\n\n\t\tcase 5:\n\t\t\treturn x.c === y.c;\n\n\t\tcase 3:\n\t\tcase 4:\n\t\tcase 8:\n\t\t\treturn _Json_equality(x.b, y.b);\n\n\t\tcase 6:\n\t\t\treturn x.d === y.d && _Json_equality(x.b, y.b);\n\n\t\tcase 7:\n\t\t\treturn x.e === y.e && _Json_equality(x.b, y.b);\n\n\t\tcase 9:\n\t\t\treturn x.f === y.f && _Json_listEquality(x.g, y.g);\n\n\t\tcase 10:\n\t\t\treturn x.h === y.h && _Json_equality(x.b, y.b);\n\n\t\tcase 11:\n\t\t\treturn _Json_listEquality(x.g, y.g);\n\t}\n}\n\nfunction _Json_listEquality(aDecoders, bDecoders)\n{\n\tvar len = aDecoders.length;\n\tif (len !== bDecoders.length)\n\t{\n\t\treturn false;\n\t}\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tif (!_Json_equality(aDecoders[i], bDecoders[i]))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// ENCODE\n\nvar _Json_encode = F2(function(indentLevel, value)\n{\n\treturn JSON.stringify(_Json_unwrap(value), null, indentLevel) + '';\n});\n\nfunction _Json_wrap_UNUSED(value) { return { $: 0, a: value }; }\nfunction _Json_unwrap_UNUSED(value) { return value.a; }\n\nfunction _Json_wrap(value) { return value; }\nfunction _Json_unwrap(value) { return value; }\n\nfunction _Json_emptyArray() { return []; }\nfunction _Json_emptyObject() { return {}; }\n\nvar _Json_addField = F3(function(key, value, object)\n{\n\tobject[key] = _Json_unwrap(value);\n\treturn object;\n});\n\nfunction _Json_addEntry(func)\n{\n\treturn F2(function(entry, array)\n\t{\n\t\tarray.push(_Json_unwrap(func(entry)));\n\t\treturn array;\n\t});\n}\n\nvar _Json_encodeNull = _Json_wrap(null);\n\n\n\n// TASKS\n\nfunction _Scheduler_succeed(value)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: value\n\t};\n}\n\nfunction _Scheduler_fail(error)\n{\n\treturn {\n\t\t$: 1,\n\t\ta: error\n\t};\n}\n\nfunction _Scheduler_binding(callback)\n{\n\treturn {\n\t\t$: 2,\n\t\tb: callback,\n\t\tc: null\n\t};\n}\n\nvar _Scheduler_andThen = F2(function(callback, task)\n{\n\treturn {\n\t\t$: 3,\n\t\tb: callback,\n\t\td: task\n\t};\n});\n\nvar _Scheduler_onError = F2(function(callback, task)\n{\n\treturn {\n\t\t$: 4,\n\t\tb: callback,\n\t\td: task\n\t};\n});\n\nfunction _Scheduler_receive(callback)\n{\n\treturn {\n\t\t$: 5,\n\t\tb: callback\n\t};\n}\n\n\n// PROCESSES\n\nvar _Scheduler_guid = 0;\n\nfunction _Scheduler_rawSpawn(task)\n{\n\tvar proc = {\n\t\t$: 0,\n\t\te: _Scheduler_guid++,\n\t\tf: task,\n\t\tg: null,\n\t\th: []\n\t};\n\n\t_Scheduler_enqueue(proc);\n\n\treturn proc;\n}\n\nfunction _Scheduler_spawn(task)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tcallback(_Scheduler_succeed(_Scheduler_rawSpawn(task)));\n\t});\n}\n\nfunction _Scheduler_rawSend(proc, msg)\n{\n\tproc.h.push(msg);\n\t_Scheduler_enqueue(proc);\n}\n\nvar _Scheduler_send = F2(function(proc, msg)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\t_Scheduler_rawSend(proc, msg);\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n});\n\nfunction _Scheduler_kill(proc)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tvar task = proc.f;\n\t\tif (task.$ === 2 && task.c)\n\t\t{\n\t\t\ttask.c();\n\t\t}\n\n\t\tproc.f = null;\n\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n}\n\n\n/* STEP PROCESSES\n\ntype alias Process =\n { $ : tag\n , id : unique_id\n , root : Task\n , stack : null | { $: SUCCEED | FAIL, a: callback, b: stack }\n , mailbox : [msg]\n }\n\n*/\n\n\nvar _Scheduler_working = false;\nvar _Scheduler_queue = [];\n\n\nfunction _Scheduler_enqueue(proc)\n{\n\t_Scheduler_queue.push(proc);\n\tif (_Scheduler_working)\n\t{\n\t\treturn;\n\t}\n\t_Scheduler_working = true;\n\twhile (proc = _Scheduler_queue.shift())\n\t{\n\t\t_Scheduler_step(proc);\n\t}\n\t_Scheduler_working = false;\n}\n\n\nfunction _Scheduler_step(proc)\n{\n\twhile (proc.f)\n\t{\n\t\tvar rootTag = proc.f.$;\n\t\tif (rootTag === 0 || rootTag === 1)\n\t\t{\n\t\t\twhile (proc.g && proc.g.$ !== rootTag)\n\t\t\t{\n\t\t\t\tproc.g = proc.g.i;\n\t\t\t}\n\t\t\tif (!proc.g)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tproc.f = proc.g.b(proc.f.a);\n\t\t\tproc.g = proc.g.i;\n\t\t}\n\t\telse if (rootTag === 2)\n\t\t{\n\t\t\tproc.f.c = proc.f.b(function(newRoot) {\n\t\t\t\tproc.f = newRoot;\n\t\t\t\t_Scheduler_enqueue(proc);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\telse if (rootTag === 5)\n\t\t{\n\t\t\tif (proc.h.length === 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tproc.f = proc.f.b(proc.h.shift());\n\t\t}\n\t\telse // if (rootTag === 3 || rootTag === 4)\n\t\t{\n\t\t\tproc.g = {\n\t\t\t\t$: rootTag === 3 ? 0 : 1,\n\t\t\t\tb: proc.f.b,\n\t\t\t\ti: proc.g\n\t\t\t};\n\t\t\tproc.f = proc.f.d;\n\t\t}\n\t}\n}\n\n\n\nfunction _Process_sleep(time)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tvar id = setTimeout(function() {\n\t\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t\t}, time);\n\n\t\treturn function() { clearTimeout(id); };\n\t});\n}\n\n\n\n\n// PROGRAMS\n\n\nvar _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.fa,\n\t\timpl.fZ,\n\t\timpl.fN,\n\t\tfunction() { return function() {} }\n\t);\n});\n\n\n\n// INITIALIZE A PROGRAM\n\n\nfunction _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)\n{\n\tvar result = A2(_Json_run, flagDecoder, _Json_wrap(args ? args['flags'] : undefined));\n\t$elm$core$Result$isOk(result) || _Debug_crash(2 /**_UNUSED/, _Json_errorToString(result.a) /**/);\n\tvar managers = {};\n\tvar initPair = init(result.a);\n\tvar model = initPair.a;\n\tvar stepper = stepperBuilder(sendToApp, model);\n\tvar ports = _Platform_setupEffects(managers, sendToApp);\n\n\tfunction sendToApp(msg, viewMetadata)\n\t{\n\t\tvar pair = A2(update, msg, model);\n\t\tstepper(model = pair.a, viewMetadata);\n\t\t_Platform_enqueueEffects(managers, pair.b, subscriptions(model));\n\t}\n\n\t_Platform_enqueueEffects(managers, initPair.b, subscriptions(model));\n\n\treturn ports ? { ports: ports } : {};\n}\n\n\n\n// TRACK PRELOADS\n//\n// This is used by code in elm/browser and elm/http\n// to register any HTTP requests that are triggered by init.\n//\n\n\nvar _Platform_preload;\n\n\nfunction _Platform_registerPreload(url)\n{\n\t_Platform_preload.add(url);\n}\n\n\n\n// EFFECT MANAGERS\n\n\nvar _Platform_effectManagers = {};\n\n\nfunction _Platform_setupEffects(managers, sendToApp)\n{\n\tvar ports;\n\n\t// setup all necessary effect managers\n\tfor (var key in _Platform_effectManagers)\n\t{\n\t\tvar manager = _Platform_effectManagers[key];\n\n\t\tif (manager.a)\n\t\t{\n\t\t\tports = ports || {};\n\t\t\tports[key] = manager.a(key, sendToApp);\n\t\t}\n\n\t\tmanagers[key] = _Platform_instantiateManager(manager, sendToApp);\n\t}\n\n\treturn ports;\n}\n\n\nfunction _Platform_createManager(init, onEffects, onSelfMsg, cmdMap, subMap)\n{\n\treturn {\n\t\tb: init,\n\t\tc: onEffects,\n\t\td: onSelfMsg,\n\t\te: cmdMap,\n\t\tf: subMap\n\t};\n}\n\n\nfunction _Platform_instantiateManager(info, sendToApp)\n{\n\tvar router = {\n\t\tg: sendToApp,\n\t\th: undefined\n\t};\n\n\tvar onEffects = info.c;\n\tvar onSelfMsg = info.d;\n\tvar cmdMap = info.e;\n\tvar subMap = info.f;\n\n\tfunction loop(state)\n\t{\n\t\treturn A2(_Scheduler_andThen, loop, _Scheduler_receive(function(msg)\n\t\t{\n\t\t\tvar value = msg.a;\n\n\t\t\tif (msg.$ === 0)\n\t\t\t{\n\t\t\t\treturn A3(onSelfMsg, router, value, state);\n\t\t\t}\n\n\t\t\treturn cmdMap && subMap\n\t\t\t\t? A4(onEffects, router, value.i, value.j, state)\n\t\t\t\t: A3(onEffects, router, cmdMap ? value.i : value.j, state);\n\t\t}));\n\t}\n\n\treturn router.h = _Scheduler_rawSpawn(A2(_Scheduler_andThen, loop, info.b));\n}\n\n\n\n// ROUTING\n\n\nvar _Platform_sendToApp = F2(function(router, msg)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\trouter.g(msg);\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n});\n\n\nvar _Platform_sendToSelf = F2(function(router, msg)\n{\n\treturn A2(_Scheduler_send, router.h, {\n\t\t$: 0,\n\t\ta: msg\n\t});\n});\n\n\n\n// BAGS\n\n\nfunction _Platform_leaf(home)\n{\n\treturn function(value)\n\t{\n\t\treturn {\n\t\t\t$: 1,\n\t\t\tk: home,\n\t\t\tl: value\n\t\t};\n\t};\n}\n\n\nfunction _Platform_batch(list)\n{\n\treturn {\n\t\t$: 2,\n\t\tm: list\n\t};\n}\n\n\nvar _Platform_map = F2(function(tagger, bag)\n{\n\treturn {\n\t\t$: 3,\n\t\tn: tagger,\n\t\to: bag\n\t}\n});\n\n\n\n// PIPE BAGS INTO EFFECT MANAGERS\n//\n// Effects must be queued!\n//\n// Say your init contains a synchronous command, like Time.now or Time.here\n//\n// - This will produce a batch of effects (FX_1)\n// - The synchronous task triggers the subsequent `update` call\n// - This will produce a batch of effects (FX_2)\n//\n// If we just start dispatching FX_2, subscriptions from FX_2 can be processed\n// before subscriptions from FX_1. No good! Earlier versions of this code had\n// this problem, leading to these reports:\n//\n// https://github.com/elm/core/issues/980\n// https://github.com/elm/core/pull/981\n// https://github.com/elm/compiler/issues/1776\n//\n// The queue is necessary to avoid ordering issues for synchronous commands.\n\n\n// Why use true/false here? Why not just check the length of the queue?\n// The goal is to detect \"are we currently dispatching effects?\" If we\n// are, we need to bail and let the ongoing while loop handle things.\n//\n// Now say the queue has 1 element. When we dequeue the final element,\n// the queue will be empty, but we are still actively dispatching effects.\n// So you could get queue jumping in a really tricky category of cases.\n//\nvar _Platform_effectsQueue = [];\nvar _Platform_effectsActive = false;\n\n\nfunction _Platform_enqueueEffects(managers, cmdBag, subBag)\n{\n\t_Platform_effectsQueue.push({ p: managers, q: cmdBag, r: subBag });\n\n\tif (_Platform_effectsActive) return;\n\n\t_Platform_effectsActive = true;\n\tfor (var fx; fx = _Platform_effectsQueue.shift(); )\n\t{\n\t\t_Platform_dispatchEffects(fx.p, fx.q, fx.r);\n\t}\n\t_Platform_effectsActive = false;\n}\n\n\nfunction _Platform_dispatchEffects(managers, cmdBag, subBag)\n{\n\tvar effectsDict = {};\n\t_Platform_gatherEffects(true, cmdBag, effectsDict, null);\n\t_Platform_gatherEffects(false, subBag, effectsDict, null);\n\n\tfor (var home in managers)\n\t{\n\t\t_Scheduler_rawSend(managers[home], {\n\t\t\t$: 'fx',\n\t\t\ta: effectsDict[home] || { i: _List_Nil, j: _List_Nil }\n\t\t});\n\t}\n}\n\n\nfunction _Platform_gatherEffects(isCmd, bag, effectsDict, taggers)\n{\n\tswitch (bag.$)\n\t{\n\t\tcase 1:\n\t\t\tvar home = bag.k;\n\t\t\tvar effect = _Platform_toEffect(isCmd, home, taggers, bag.l);\n\t\t\teffectsDict[home] = _Platform_insert(isCmd, effect, effectsDict[home]);\n\t\t\treturn;\n\n\t\tcase 2:\n\t\t\tfor (var list = bag.m; list.b; list = list.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\t_Platform_gatherEffects(isCmd, list.a, effectsDict, taggers);\n\t\t\t}\n\t\t\treturn;\n\n\t\tcase 3:\n\t\t\t_Platform_gatherEffects(isCmd, bag.o, effectsDict, {\n\t\t\t\ts: bag.n,\n\t\t\t\tt: taggers\n\t\t\t});\n\t\t\treturn;\n\t}\n}\n\n\nfunction _Platform_toEffect(isCmd, home, taggers, value)\n{\n\tfunction applyTaggers(x)\n\t{\n\t\tfor (var temp = taggers; temp; temp = temp.t)\n\t\t{\n\t\t\tx = temp.s(x);\n\t\t}\n\t\treturn x;\n\t}\n\n\tvar map = isCmd\n\t\t? _Platform_effectManagers[home].e\n\t\t: _Platform_effectManagers[home].f;\n\n\treturn A2(map, applyTaggers, value)\n}\n\n\nfunction _Platform_insert(isCmd, newEffect, effects)\n{\n\teffects = effects || { i: _List_Nil, j: _List_Nil };\n\n\tisCmd\n\t\t? (effects.i = _List_Cons(newEffect, effects.i))\n\t\t: (effects.j = _List_Cons(newEffect, effects.j));\n\n\treturn effects;\n}\n\n\n\n// PORTS\n\n\nfunction _Platform_checkPortName(name)\n{\n\tif (_Platform_effectManagers[name])\n\t{\n\t\t_Debug_crash(3, name)\n\t}\n}\n\n\n\n// OUTGOING PORTS\n\n\nfunction _Platform_outgoingPort(name, converter)\n{\n\t_Platform_checkPortName(name);\n\t_Platform_effectManagers[name] = {\n\t\te: _Platform_outgoingPortMap,\n\t\tu: converter,\n\t\ta: _Platform_setupOutgoingPort\n\t};\n\treturn _Platform_leaf(name);\n}\n\n\nvar _Platform_outgoingPortMap = F2(function(tagger, value) { return value; });\n\n\nfunction _Platform_setupOutgoingPort(name)\n{\n\tvar subs = [];\n\tvar converter = _Platform_effectManagers[name].u;\n\n\t// CREATE MANAGER\n\n\tvar init = _Process_sleep(0);\n\n\t_Platform_effectManagers[name].b = init;\n\t_Platform_effectManagers[name].c = F3(function(router, cmdList, state)\n\t{\n\t\tfor ( ; cmdList.b; cmdList = cmdList.b) // WHILE_CONS\n\t\t{\n\t\t\t// grab a separate reference to subs in case unsubscribe is called\n\t\t\tvar currentSubs = subs;\n\t\t\tvar value = _Json_unwrap(converter(cmdList.a));\n\t\t\tfor (var i = 0; i < currentSubs.length; i++)\n\t\t\t{\n\t\t\t\tcurrentSubs[i](value);\n\t\t\t}\n\t\t}\n\t\treturn init;\n\t});\n\n\t// PUBLIC API\n\n\tfunction subscribe(callback)\n\t{\n\t\tsubs.push(callback);\n\t}\n\n\tfunction unsubscribe(callback)\n\t{\n\t\t// copy subs into a new array in case unsubscribe is called within a\n\t\t// subscribed callback\n\t\tsubs = subs.slice();\n\t\tvar index = subs.indexOf(callback);\n\t\tif (index >= 0)\n\t\t{\n\t\t\tsubs.splice(index, 1);\n\t\t}\n\t}\n\n\treturn {\n\t\tsubscribe: subscribe,\n\t\tunsubscribe: unsubscribe\n\t};\n}\n\n\n\n// INCOMING PORTS\n\n\nfunction _Platform_incomingPort(name, converter)\n{\n\t_Platform_checkPortName(name);\n\t_Platform_effectManagers[name] = {\n\t\tf: _Platform_incomingPortMap,\n\t\tu: converter,\n\t\ta: _Platform_setupIncomingPort\n\t};\n\treturn _Platform_leaf(name);\n}\n\n\nvar _Platform_incomingPortMap = F2(function(tagger, finalTagger)\n{\n\treturn function(value)\n\t{\n\t\treturn tagger(finalTagger(value));\n\t};\n});\n\n\nfunction _Platform_setupIncomingPort(name, sendToApp)\n{\n\tvar subs = _List_Nil;\n\tvar converter = _Platform_effectManagers[name].u;\n\n\t// CREATE MANAGER\n\n\tvar init = _Scheduler_succeed(null);\n\n\t_Platform_effectManagers[name].b = init;\n\t_Platform_effectManagers[name].c = F3(function(router, subList, state)\n\t{\n\t\tsubs = subList;\n\t\treturn init;\n\t});\n\n\t// PUBLIC API\n\n\tfunction send(incomingValue)\n\t{\n\t\tvar result = A2(_Json_run, converter, _Json_wrap(incomingValue));\n\n\t\t$elm$core$Result$isOk(result) || _Debug_crash(4, name, result.a);\n\n\t\tvar value = result.a;\n\t\tfor (var temp = subs; temp.b; temp = temp.b) // WHILE_CONS\n\t\t{\n\t\t\tsendToApp(temp.a(value));\n\t\t}\n\t}\n\n\treturn { send: send };\n}\n\n\n\n// EXPORT ELM MODULES\n//\n// Have DEBUG and PROD versions so that we can (1) give nicer errors in\n// debug mode and (2) not pay for the bits needed for that in prod mode.\n//\n\n\nfunction _Platform_export(exports)\n{\n\tscope['Elm']\n\t\t? _Platform_mergeExportsProd(scope['Elm'], exports)\n\t\t: scope['Elm'] = exports;\n}\n\n\nfunction _Platform_mergeExportsProd(obj, exports)\n{\n\tfor (var name in exports)\n\t{\n\t\t(name in obj)\n\t\t\t? (name == 'init')\n\t\t\t\t? _Debug_crash(6)\n\t\t\t\t: _Platform_mergeExportsProd(obj[name], exports[name])\n\t\t\t: (obj[name] = exports[name]);\n\t}\n}\n\n\nfunction _Platform_export_UNUSED(exports)\n{\n\tscope['Elm']\n\t\t? _Platform_mergeExportsDebug('Elm', scope['Elm'], exports)\n\t\t: scope['Elm'] = exports;\n}\n\n\nfunction _Platform_mergeExportsDebug(moduleName, obj, exports)\n{\n\tfor (var name in exports)\n\t{\n\t\t(name in obj)\n\t\t\t? (name == 'init')\n\t\t\t\t? _Debug_crash(6, moduleName)\n\t\t\t\t: _Platform_mergeExportsDebug(moduleName + '.' + name, obj[name], exports[name])\n\t\t\t: (obj[name] = exports[name]);\n\t}\n}\n\n\n\n\n// HELPERS\n\n\nvar _VirtualDom_divertHrefToApp;\n\nvar _VirtualDom_doc = typeof document !== 'undefined' ? document : {};\n\n\nfunction _VirtualDom_appendChild(parent, child)\n{\n\tparent.appendChild(child);\n}\n\nvar _VirtualDom_init = F4(function(virtualNode, flagDecoder, debugMetadata, args)\n{\n\t// NOTE: this function needs _Platform_export available to work\n\n\t/**/\n\tvar node = args['node'];\n\t//*/\n\t/**_UNUSED/\n\tvar node = args && args['node'] ? args['node'] : _Debug_crash(0);\n\t//*/\n\n\tnode.parentNode.replaceChild(\n\t\t_VirtualDom_render(virtualNode, function() {}),\n\t\tnode\n\t);\n\n\treturn {};\n});\n\n\n\n// TEXT\n\n\nfunction _VirtualDom_text(string)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: string\n\t};\n}\n\n\n\n// NODE\n\n\nvar _VirtualDom_nodeNS = F2(function(namespace, tag)\n{\n\treturn F2(function(factList, kidList)\n\t{\n\t\tfor (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS\n\t\t{\n\t\t\tvar kid = kidList.a;\n\t\t\tdescendantsCount += (kid.b || 0);\n\t\t\tkids.push(kid);\n\t\t}\n\t\tdescendantsCount += kids.length;\n\n\t\treturn {\n\t\t\t$: 1,\n\t\t\tc: tag,\n\t\t\td: _VirtualDom_organizeFacts(factList),\n\t\t\te: kids,\n\t\t\tf: namespace,\n\t\t\tb: descendantsCount\n\t\t};\n\t});\n});\n\n\nvar _VirtualDom_node = _VirtualDom_nodeNS(undefined);\n\n\n\n// KEYED NODE\n\n\nvar _VirtualDom_keyedNodeNS = F2(function(namespace, tag)\n{\n\treturn F2(function(factList, kidList)\n\t{\n\t\tfor (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS\n\t\t{\n\t\t\tvar kid = kidList.a;\n\t\t\tdescendantsCount += (kid.b.b || 0);\n\t\t\tkids.push(kid);\n\t\t}\n\t\tdescendantsCount += kids.length;\n\n\t\treturn {\n\t\t\t$: 2,\n\t\t\tc: tag,\n\t\t\td: _VirtualDom_organizeFacts(factList),\n\t\t\te: kids,\n\t\t\tf: namespace,\n\t\t\tb: descendantsCount\n\t\t};\n\t});\n});\n\n\nvar _VirtualDom_keyedNode = _VirtualDom_keyedNodeNS(undefined);\n\n\n\n// CUSTOM\n\n\nfunction _VirtualDom_custom(factList, model, render, diff)\n{\n\treturn {\n\t\t$: 3,\n\t\td: _VirtualDom_organizeFacts(factList),\n\t\tg: model,\n\t\th: render,\n\t\ti: diff\n\t};\n}\n\n\n\n// MAP\n\n\nvar _VirtualDom_map = F2(function(tagger, node)\n{\n\treturn {\n\t\t$: 4,\n\t\tj: tagger,\n\t\tk: node,\n\t\tb: 1 + (node.b || 0)\n\t};\n});\n\n\n\n// LAZY\n\n\nfunction _VirtualDom_thunk(refs, thunk)\n{\n\treturn {\n\t\t$: 5,\n\t\tl: refs,\n\t\tm: thunk,\n\t\tk: undefined\n\t};\n}\n\nvar _VirtualDom_lazy = F2(function(func, a)\n{\n\treturn _VirtualDom_thunk([func, a], function() {\n\t\treturn func(a);\n\t});\n});\n\nvar _VirtualDom_lazy2 = F3(function(func, a, b)\n{\n\treturn _VirtualDom_thunk([func, a, b], function() {\n\t\treturn A2(func, a, b);\n\t});\n});\n\nvar _VirtualDom_lazy3 = F4(function(func, a, b, c)\n{\n\treturn _VirtualDom_thunk([func, a, b, c], function() {\n\t\treturn A3(func, a, b, c);\n\t});\n});\n\nvar _VirtualDom_lazy4 = F5(function(func, a, b, c, d)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d], function() {\n\t\treturn A4(func, a, b, c, d);\n\t});\n});\n\nvar _VirtualDom_lazy5 = F6(function(func, a, b, c, d, e)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e], function() {\n\t\treturn A5(func, a, b, c, d, e);\n\t});\n});\n\nvar _VirtualDom_lazy6 = F7(function(func, a, b, c, d, e, f)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f], function() {\n\t\treturn A6(func, a, b, c, d, e, f);\n\t});\n});\n\nvar _VirtualDom_lazy7 = F8(function(func, a, b, c, d, e, f, g)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f, g], function() {\n\t\treturn A7(func, a, b, c, d, e, f, g);\n\t});\n});\n\nvar _VirtualDom_lazy8 = F9(function(func, a, b, c, d, e, f, g, h)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f, g, h], function() {\n\t\treturn A8(func, a, b, c, d, e, f, g, h);\n\t});\n});\n\n\n\n// FACTS\n\n\nvar _VirtualDom_on = F2(function(key, handler)\n{\n\treturn {\n\t\t$: 'a0',\n\t\tn: key,\n\t\to: handler\n\t};\n});\nvar _VirtualDom_style = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a1',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_property = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a2',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_attribute = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a3',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_attributeNS = F3(function(namespace, key, value)\n{\n\treturn {\n\t\t$: 'a4',\n\t\tn: key,\n\t\to: { f: namespace, o: value }\n\t};\n});\n\n\n\n// XSS ATTACK VECTOR CHECKS\n\n\nfunction _VirtualDom_noScript(tag)\n{\n\treturn tag == 'script' ? 'p' : tag;\n}\n\nfunction _VirtualDom_noOnOrFormAction(key)\n{\n\treturn /^(on|formAction$)/i.test(key) ? 'data-' + key : key;\n}\n\nfunction _VirtualDom_noInnerHtmlOrFormAction(key)\n{\n\treturn key == 'innerHTML' || key == 'formAction' ? 'data-' + key : key;\n}\n\nfunction _VirtualDom_noJavaScriptUri(value)\n{\n\treturn /^javascript:/i.test(value.replace(/\\s/g,'')) ? '' : value;\n}\n\nfunction _VirtualDom_noJavaScriptUri_UNUSED(value)\n{\n\treturn /^javascript:/i.test(value.replace(/\\s/g,''))\n\t\t? 'javascript:alert(\"This is an XSS vector. Please use ports or web components instead.\")'\n\t\t: value;\n}\n\nfunction _VirtualDom_noJavaScriptOrHtmlUri(value)\n{\n\treturn /^\\s*(javascript:|data:text\\/html)/i.test(value) ? '' : value;\n}\n\nfunction _VirtualDom_noJavaScriptOrHtmlUri_UNUSED(value)\n{\n\treturn /^\\s*(javascript:|data:text\\/html)/i.test(value)\n\t\t? 'javascript:alert(\"This is an XSS vector. Please use ports or web components instead.\")'\n\t\t: value;\n}\n\n\n\n// MAP FACTS\n\n\nvar _VirtualDom_mapAttribute = F2(function(func, attr)\n{\n\treturn (attr.$ === 'a0')\n\t\t? A2(_VirtualDom_on, attr.n, _VirtualDom_mapHandler(func, attr.o))\n\t\t: attr;\n});\n\nfunction _VirtualDom_mapHandler(func, handler)\n{\n\tvar tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler);\n\n\t// 0 = Normal\n\t// 1 = MayStopPropagation\n\t// 2 = MayPreventDefault\n\t// 3 = Custom\n\n\treturn {\n\t\t$: handler.$,\n\t\ta:\n\t\t\t!tag\n\t\t\t\t? A2($elm$json$Json$Decode$map, func, handler.a)\n\t\t\t\t:\n\t\t\tA3($elm$json$Json$Decode$map2,\n\t\t\t\ttag < 3\n\t\t\t\t\t? _VirtualDom_mapEventTuple\n\t\t\t\t\t: _VirtualDom_mapEventRecord,\n\t\t\t\t$elm$json$Json$Decode$succeed(func),\n\t\t\t\thandler.a\n\t\t\t)\n\t};\n}\n\nvar _VirtualDom_mapEventTuple = F2(function(func, tuple)\n{\n\treturn _Utils_Tuple2(func(tuple.a), tuple.b);\n});\n\nvar _VirtualDom_mapEventRecord = F2(function(func, record)\n{\n\treturn {\n\t\tah: func(record.ah),\n\t\tc5: record.c5,\n\t\tcR: record.cR\n\t}\n});\n\n\n\n// ORGANIZE FACTS\n\n\nfunction _VirtualDom_organizeFacts(factList)\n{\n\tfor (var facts = {}; factList.b; factList = factList.b) // WHILE_CONS\n\t{\n\t\tvar entry = factList.a;\n\n\t\tvar tag = entry.$;\n\t\tvar key = entry.n;\n\t\tvar value = entry.o;\n\n\t\tif (tag === 'a2')\n\t\t{\n\t\t\t(key === 'className')\n\t\t\t\t? _VirtualDom_addClass(facts, key, _Json_unwrap(value))\n\t\t\t\t: facts[key] = _Json_unwrap(value);\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar subFacts = facts[tag] || (facts[tag] = {});\n\t\t(tag === 'a3' && key === 'class')\n\t\t\t? _VirtualDom_addClass(subFacts, key, value)\n\t\t\t: subFacts[key] = value;\n\t}\n\n\treturn facts;\n}\n\nfunction _VirtualDom_addClass(object, key, newClass)\n{\n\tvar classes = object[key];\n\tobject[key] = classes ? classes + ' ' + newClass : newClass;\n}\n\n\n\n// RENDER\n\n\nfunction _VirtualDom_render(vNode, eventNode)\n{\n\tvar tag = vNode.$;\n\n\tif (tag === 5)\n\t{\n\t\treturn _VirtualDom_render(vNode.k || (vNode.k = vNode.m()), eventNode);\n\t}\n\n\tif (tag === 0)\n\t{\n\t\treturn _VirtualDom_doc.createTextNode(vNode.a);\n\t}\n\n\tif (tag === 4)\n\t{\n\t\tvar subNode = vNode.k;\n\t\tvar tagger = vNode.j;\n\n\t\twhile (subNode.$ === 4)\n\t\t{\n\t\t\ttypeof tagger !== 'object'\n\t\t\t\t? tagger = [tagger, subNode.j]\n\t\t\t\t: tagger.push(subNode.j);\n\n\t\t\tsubNode = subNode.k;\n\t\t}\n\n\t\tvar subEventRoot = { j: tagger, p: eventNode };\n\t\tvar domNode = _VirtualDom_render(subNode, subEventRoot);\n\t\tdomNode.elm_event_node_ref = subEventRoot;\n\t\treturn domNode;\n\t}\n\n\tif (tag === 3)\n\t{\n\t\tvar domNode = vNode.h(vNode.g);\n\t\t_VirtualDom_applyFacts(domNode, eventNode, vNode.d);\n\t\treturn domNode;\n\t}\n\n\t// at this point `tag` must be 1 or 2\n\n\tvar domNode = vNode.f\n\t\t? _VirtualDom_doc.createElementNS(vNode.f, vNode.c)\n\t\t: _VirtualDom_doc.createElement(vNode.c);\n\n\tif (_VirtualDom_divertHrefToApp && vNode.c == 'a')\n\t{\n\t\tdomNode.addEventListener('click', _VirtualDom_divertHrefToApp(domNode));\n\t}\n\n\t_VirtualDom_applyFacts(domNode, eventNode, vNode.d);\n\n\tfor (var kids = vNode.e, i = 0; i < kids.length; i++)\n\t{\n\t\t_VirtualDom_appendChild(domNode, _VirtualDom_render(tag === 1 ? kids[i] : kids[i].b, eventNode));\n\t}\n\n\treturn domNode;\n}\n\n\n\n// APPLY FACTS\n\n\nfunction _VirtualDom_applyFacts(domNode, eventNode, facts)\n{\n\tfor (var key in facts)\n\t{\n\t\tvar value = facts[key];\n\n\t\tkey === 'a1'\n\t\t\t? _VirtualDom_applyStyles(domNode, value)\n\t\t\t:\n\t\tkey === 'a0'\n\t\t\t? _VirtualDom_applyEvents(domNode, eventNode, value)\n\t\t\t:\n\t\tkey === 'a3'\n\t\t\t? _VirtualDom_applyAttrs(domNode, value)\n\t\t\t:\n\t\tkey === 'a4'\n\t\t\t? _VirtualDom_applyAttrsNS(domNode, value)\n\t\t\t:\n\t\t((key !== 'value' && key !== 'checked') || domNode[key] !== value) && (domNode[key] = value);\n\t}\n}\n\n\n\n// APPLY STYLES\n\n\nfunction _VirtualDom_applyStyles(domNode, styles)\n{\n\tvar domNodeStyle = domNode.style;\n\n\tfor (var key in styles)\n\t{\n\t\tdomNodeStyle[key] = styles[key];\n\t}\n}\n\n\n\n// APPLY ATTRS\n\n\nfunction _VirtualDom_applyAttrs(domNode, attrs)\n{\n\tfor (var key in attrs)\n\t{\n\t\tvar value = attrs[key];\n\t\ttypeof value !== 'undefined'\n\t\t\t? domNode.setAttribute(key, value)\n\t\t\t: domNode.removeAttribute(key);\n\t}\n}\n\n\n\n// APPLY NAMESPACED ATTRS\n\n\nfunction _VirtualDom_applyAttrsNS(domNode, nsAttrs)\n{\n\tfor (var key in nsAttrs)\n\t{\n\t\tvar pair = nsAttrs[key];\n\t\tvar namespace = pair.f;\n\t\tvar value = pair.o;\n\n\t\ttypeof value !== 'undefined'\n\t\t\t? domNode.setAttributeNS(namespace, key, value)\n\t\t\t: domNode.removeAttributeNS(namespace, key);\n\t}\n}\n\n\n\n// APPLY EVENTS\n\n\nfunction _VirtualDom_applyEvents(domNode, eventNode, events)\n{\n\tvar allCallbacks = domNode.elmFs || (domNode.elmFs = {});\n\n\tfor (var key in events)\n\t{\n\t\tvar newHandler = events[key];\n\t\tvar oldCallback = allCallbacks[key];\n\n\t\tif (!newHandler)\n\t\t{\n\t\t\tdomNode.removeEventListener(key, oldCallback);\n\t\t\tallCallbacks[key] = undefined;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (oldCallback)\n\t\t{\n\t\t\tvar oldHandler = oldCallback.q;\n\t\t\tif (oldHandler.$ === newHandler.$)\n\t\t\t{\n\t\t\t\toldCallback.q = newHandler;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdomNode.removeEventListener(key, oldCallback);\n\t\t}\n\n\t\toldCallback = _VirtualDom_makeCallback(eventNode, newHandler);\n\t\tdomNode.addEventListener(key, oldCallback,\n\t\t\t_VirtualDom_passiveSupported\n\t\t\t&& { passive: $elm$virtual_dom$VirtualDom$toHandlerInt(newHandler) < 2 }\n\t\t);\n\t\tallCallbacks[key] = oldCallback;\n\t}\n}\n\n\n\n// PASSIVE EVENTS\n\n\nvar _VirtualDom_passiveSupported;\n\ntry\n{\n\twindow.addEventListener('t', null, Object.defineProperty({}, 'passive', {\n\t\tget: function() { _VirtualDom_passiveSupported = true; }\n\t}));\n}\ncatch(e) {}\n\n\n\n// EVENT HANDLERS\n\n\nfunction _VirtualDom_makeCallback(eventNode, initialHandler)\n{\n\tfunction callback(event)\n\t{\n\t\tvar handler = callback.q;\n\t\tvar result = _Json_runHelp(handler.a, event);\n\n\t\tif (!$elm$core$Result$isOk(result))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tvar tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler);\n\n\t\t// 0 = Normal\n\t\t// 1 = MayStopPropagation\n\t\t// 2 = MayPreventDefault\n\t\t// 3 = Custom\n\n\t\tvar value = result.a;\n\t\tvar message = !tag ? value : tag < 3 ? value.a : value.ah;\n\t\tvar stopPropagation = tag == 1 ? value.b : tag == 3 && value.c5;\n\t\tvar currentEventNode = (\n\t\t\tstopPropagation && event.stopPropagation(),\n\t\t\t(tag == 2 ? value.b : tag == 3 && value.cR) && event.preventDefault(),\n\t\t\teventNode\n\t\t);\n\t\tvar tagger;\n\t\tvar i;\n\t\twhile (tagger = currentEventNode.j)\n\t\t{\n\t\t\tif (typeof tagger == 'function')\n\t\t\t{\n\t\t\t\tmessage = tagger(message);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (var i = tagger.length; i--; )\n\t\t\t\t{\n\t\t\t\t\tmessage = tagger[i](message);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcurrentEventNode = currentEventNode.p;\n\t\t}\n\t\tcurrentEventNode(message, stopPropagation); // stopPropagation implies isSync\n\t}\n\n\tcallback.q = initialHandler;\n\n\treturn callback;\n}\n\nfunction _VirtualDom_equalEvents(x, y)\n{\n\treturn x.$ == y.$ && _Json_equality(x.a, y.a);\n}\n\n\n\n// DIFF\n\n\n// TODO: Should we do patches like in iOS?\n//\n// type Patch\n// = At Int Patch\n// | Batch (List Patch)\n// | Change ...\n//\n// How could it not be better?\n//\nfunction _VirtualDom_diff(x, y)\n{\n\tvar patches = [];\n\t_VirtualDom_diffHelp(x, y, patches, 0);\n\treturn patches;\n}\n\n\nfunction _VirtualDom_pushPatch(patches, type, index, data)\n{\n\tvar patch = {\n\t\t$: type,\n\t\tr: index,\n\t\ts: data,\n\t\tt: undefined,\n\t\tu: undefined\n\t};\n\tpatches.push(patch);\n\treturn patch;\n}\n\n\nfunction _VirtualDom_diffHelp(x, y, patches, index)\n{\n\tif (x === y)\n\t{\n\t\treturn;\n\t}\n\n\tvar xType = x.$;\n\tvar yType = y.$;\n\n\t// Bail if you run into different types of nodes. Implies that the\n\t// structure has changed significantly and it's not worth a diff.\n\tif (xType !== yType)\n\t{\n\t\tif (xType === 1 && yType === 2)\n\t\t{\n\t\t\ty = _VirtualDom_dekey(y);\n\t\t\tyType = 1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Now we know that both nodes are the same $.\n\tswitch (yType)\n\t{\n\t\tcase 5:\n\t\t\tvar xRefs = x.l;\n\t\t\tvar yRefs = y.l;\n\t\t\tvar i = xRefs.length;\n\t\t\tvar same = i === yRefs.length;\n\t\t\twhile (same && i--)\n\t\t\t{\n\t\t\t\tsame = xRefs[i] === yRefs[i];\n\t\t\t}\n\t\t\tif (same)\n\t\t\t{\n\t\t\t\ty.k = x.k;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ty.k = y.m();\n\t\t\tvar subPatches = [];\n\t\t\t_VirtualDom_diffHelp(x.k, y.k, subPatches, 0);\n\t\t\tsubPatches.length > 0 && _VirtualDom_pushPatch(patches, 1, index, subPatches);\n\t\t\treturn;\n\n\t\tcase 4:\n\t\t\t// gather nested taggers\n\t\t\tvar xTaggers = x.j;\n\t\t\tvar yTaggers = y.j;\n\t\t\tvar nesting = false;\n\n\t\t\tvar xSubNode = x.k;\n\t\t\twhile (xSubNode.$ === 4)\n\t\t\t{\n\t\t\t\tnesting = true;\n\n\t\t\t\ttypeof xTaggers !== 'object'\n\t\t\t\t\t? xTaggers = [xTaggers, xSubNode.j]\n\t\t\t\t\t: xTaggers.push(xSubNode.j);\n\n\t\t\t\txSubNode = xSubNode.k;\n\t\t\t}\n\n\t\t\tvar ySubNode = y.k;\n\t\t\twhile (ySubNode.$ === 4)\n\t\t\t{\n\t\t\t\tnesting = true;\n\n\t\t\t\ttypeof yTaggers !== 'object'\n\t\t\t\t\t? yTaggers = [yTaggers, ySubNode.j]\n\t\t\t\t\t: yTaggers.push(ySubNode.j);\n\n\t\t\t\tySubNode = ySubNode.k;\n\t\t\t}\n\n\t\t\t// Just bail if different numbers of taggers. This implies the\n\t\t\t// structure of the virtual DOM has changed.\n\t\t\tif (nesting && xTaggers.length !== yTaggers.length)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// check if taggers are \"the same\"\n\t\t\tif (nesting ? !_VirtualDom_pairwiseRefEqual(xTaggers, yTaggers) : xTaggers !== yTaggers)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 2, index, yTaggers);\n\t\t\t}\n\n\t\t\t// diff everything below the taggers\n\t\t\t_VirtualDom_diffHelp(xSubNode, ySubNode, patches, index + 1);\n\t\t\treturn;\n\n\t\tcase 0:\n\t\t\tif (x.a !== y.a)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 3, index, y.a);\n\t\t\t}\n\t\t\treturn;\n\n\t\tcase 1:\n\t\t\t_VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKids);\n\t\t\treturn;\n\n\t\tcase 2:\n\t\t\t_VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKeyedKids);\n\t\t\treturn;\n\n\t\tcase 3:\n\t\t\tif (x.h !== y.h)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar factsDiff = _VirtualDom_diffFacts(x.d, y.d);\n\t\t\tfactsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);\n\n\t\t\tvar patch = y.i(x.g, y.g);\n\t\t\tpatch && _VirtualDom_pushPatch(patches, 5, index, patch);\n\n\t\t\treturn;\n\t}\n}\n\n// assumes the incoming arrays are the same length\nfunction _VirtualDom_pairwiseRefEqual(as, bs)\n{\n\tfor (var i = 0; i < as.length; i++)\n\t{\n\t\tif (as[i] !== bs[i])\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction _VirtualDom_diffNodes(x, y, patches, index, diffKids)\n{\n\t// Bail if obvious indicators have changed. Implies more serious\n\t// structural changes such that it's not worth it to diff.\n\tif (x.c !== y.c || x.f !== y.f)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\treturn;\n\t}\n\n\tvar factsDiff = _VirtualDom_diffFacts(x.d, y.d);\n\tfactsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);\n\n\tdiffKids(x, y, patches, index);\n}\n\n\n\n// DIFF FACTS\n\n\n// TODO Instead of creating a new diff object, it's possible to just test if\n// there *is* a diff. During the actual patch, do the diff again and make the\n// modifications directly. This way, there's no new allocations. Worth it?\nfunction _VirtualDom_diffFacts(x, y, category)\n{\n\tvar diff;\n\n\t// look for changes and removals\n\tfor (var xKey in x)\n\t{\n\t\tif (xKey === 'a1' || xKey === 'a0' || xKey === 'a3' || xKey === 'a4')\n\t\t{\n\t\t\tvar subDiff = _VirtualDom_diffFacts(x[xKey], y[xKey] || {}, xKey);\n\t\t\tif (subDiff)\n\t\t\t{\n\t\t\t\tdiff = diff || {};\n\t\t\t\tdiff[xKey] = subDiff;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove if not in the new facts\n\t\tif (!(xKey in y))\n\t\t{\n\t\t\tdiff = diff || {};\n\t\t\tdiff[xKey] =\n\t\t\t\t!category\n\t\t\t\t\t? (typeof x[xKey] === 'string' ? '' : null)\n\t\t\t\t\t:\n\t\t\t\t(category === 'a1')\n\t\t\t\t\t? ''\n\t\t\t\t\t:\n\t\t\t\t(category === 'a0' || category === 'a3')\n\t\t\t\t\t? undefined\n\t\t\t\t\t:\n\t\t\t\t{ f: x[xKey].f, o: undefined };\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar xValue = x[xKey];\n\t\tvar yValue = y[xKey];\n\n\t\t// reference equal, so don't worry about it\n\t\tif (xValue === yValue && xKey !== 'value' && xKey !== 'checked'\n\t\t\t|| category === 'a0' && _VirtualDom_equalEvents(xValue, yValue))\n\t\t{\n\t\t\tcontinue;\n\t\t}\n\n\t\tdiff = diff || {};\n\t\tdiff[xKey] = yValue;\n\t}\n\n\t// add new stuff\n\tfor (var yKey in y)\n\t{\n\t\tif (!(yKey in x))\n\t\t{\n\t\t\tdiff = diff || {};\n\t\t\tdiff[yKey] = y[yKey];\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n\n\n// DIFF KIDS\n\n\nfunction _VirtualDom_diffKids(xParent, yParent, patches, index)\n{\n\tvar xKids = xParent.e;\n\tvar yKids = yParent.e;\n\n\tvar xLen = xKids.length;\n\tvar yLen = yKids.length;\n\n\t// FIGURE OUT IF THERE ARE INSERTS OR REMOVALS\n\n\tif (xLen > yLen)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 6, index, {\n\t\t\tv: yLen,\n\t\t\ti: xLen - yLen\n\t\t});\n\t}\n\telse if (xLen < yLen)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 7, index, {\n\t\t\tv: xLen,\n\t\t\te: yKids\n\t\t});\n\t}\n\n\t// PAIRWISE DIFF EVERYTHING ELSE\n\n\tfor (var minLen = xLen < yLen ? xLen : yLen, i = 0; i < minLen; i++)\n\t{\n\t\tvar xKid = xKids[i];\n\t\t_VirtualDom_diffHelp(xKid, yKids[i], patches, ++index);\n\t\tindex += xKid.b || 0;\n\t}\n}\n\n\n\n// KEYED DIFF\n\n\nfunction _VirtualDom_diffKeyedKids(xParent, yParent, patches, rootIndex)\n{\n\tvar localPatches = [];\n\n\tvar changes = {}; // Dict String Entry\n\tvar inserts = []; // Array { index : Int, entry : Entry }\n\t// type Entry = { tag : String, vnode : VNode, index : Int, data : _ }\n\n\tvar xKids = xParent.e;\n\tvar yKids = yParent.e;\n\tvar xLen = xKids.length;\n\tvar yLen = yKids.length;\n\tvar xIndex = 0;\n\tvar yIndex = 0;\n\n\tvar index = rootIndex;\n\n\twhile (xIndex < xLen && yIndex < yLen)\n\t{\n\t\tvar x = xKids[xIndex];\n\t\tvar y = yKids[yIndex];\n\n\t\tvar xKey = x.a;\n\t\tvar yKey = y.a;\n\t\tvar xNode = x.b;\n\t\tvar yNode = y.b;\n\n\t\tvar newMatch = undefined;\n\t\tvar oldMatch = undefined;\n\n\t\t// check if keys match\n\n\t\tif (xKey === yKey)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNode, yNode, localPatches, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\txIndex++;\n\t\t\tyIndex++;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// look ahead 1 to detect insertions and removals.\n\n\t\tvar xNext = xKids[xIndex + 1];\n\t\tvar yNext = yKids[yIndex + 1];\n\n\t\tif (xNext)\n\t\t{\n\t\t\tvar xNextKey = xNext.a;\n\t\t\tvar xNextNode = xNext.b;\n\t\t\toldMatch = yKey === xNextKey;\n\t\t}\n\n\t\tif (yNext)\n\t\t{\n\t\t\tvar yNextKey = yNext.a;\n\t\t\tvar yNextNode = yNext.b;\n\t\t\tnewMatch = xKey === yNextKey;\n\t\t}\n\n\n\t\t// swap x and y\n\t\tif (newMatch && oldMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);\n\t\t\t_VirtualDom_insertNode(changes, localPatches, xKey, yNode, yIndex, inserts);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNextNode, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// insert y\n\t\tif (newMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);\n\t\t\t_VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\txIndex += 1;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove x\n\t\tif (oldMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNextNode, yNode, localPatches, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove x, insert y\n\t\tif (xNext && xNextKey === yNextKey)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);\n\t\t\t_VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNextNode, yNextNode, localPatches, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\tbreak;\n\t}\n\n\t// eat up any remaining nodes with removeNode and insertNode\n\n\twhile (xIndex < xLen)\n\t{\n\t\tindex++;\n\t\tvar x = xKids[xIndex];\n\t\tvar xNode = x.b;\n\t\t_VirtualDom_removeNode(changes, localPatches, x.a, xNode, index);\n\t\tindex += xNode.b || 0;\n\t\txIndex++;\n\t}\n\n\twhile (yIndex < yLen)\n\t{\n\t\tvar endInserts = endInserts || [];\n\t\tvar y = yKids[yIndex];\n\t\t_VirtualDom_insertNode(changes, localPatches, y.a, y.b, undefined, endInserts);\n\t\tyIndex++;\n\t}\n\n\tif (localPatches.length > 0 || inserts.length > 0 || endInserts)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 8, rootIndex, {\n\t\t\tw: localPatches,\n\t\t\tx: inserts,\n\t\t\ty: endInserts\n\t\t});\n\t}\n}\n\n\n\n// CHANGES FROM KEYED DIFF\n\n\nvar _VirtualDom_POSTFIX = '_elmW6BL';\n\n\nfunction _VirtualDom_insertNode(changes, localPatches, key, vnode, yIndex, inserts)\n{\n\tvar entry = changes[key];\n\n\t// never seen this key before\n\tif (!entry)\n\t{\n\t\tentry = {\n\t\t\tc: 0,\n\t\t\tz: vnode,\n\t\t\tr: yIndex,\n\t\t\ts: undefined\n\t\t};\n\n\t\tinserts.push({ r: yIndex, A: entry });\n\t\tchanges[key] = entry;\n\n\t\treturn;\n\t}\n\n\t// this key was removed earlier, a match!\n\tif (entry.c === 1)\n\t{\n\t\tinserts.push({ r: yIndex, A: entry });\n\n\t\tentry.c = 2;\n\t\tvar subPatches = [];\n\t\t_VirtualDom_diffHelp(entry.z, vnode, subPatches, entry.r);\n\t\tentry.r = yIndex;\n\t\tentry.s.s = {\n\t\t\tw: subPatches,\n\t\t\tA: entry\n\t\t};\n\n\t\treturn;\n\t}\n\n\t// this key has already been inserted or moved, a duplicate!\n\t_VirtualDom_insertNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, yIndex, inserts);\n}\n\n\nfunction _VirtualDom_removeNode(changes, localPatches, key, vnode, index)\n{\n\tvar entry = changes[key];\n\n\t// never seen this key before\n\tif (!entry)\n\t{\n\t\tvar patch = _VirtualDom_pushPatch(localPatches, 9, index, undefined);\n\n\t\tchanges[key] = {\n\t\t\tc: 1,\n\t\t\tz: vnode,\n\t\t\tr: index,\n\t\t\ts: patch\n\t\t};\n\n\t\treturn;\n\t}\n\n\t// this key was inserted earlier, a match!\n\tif (entry.c === 0)\n\t{\n\t\tentry.c = 2;\n\t\tvar subPatches = [];\n\t\t_VirtualDom_diffHelp(vnode, entry.z, subPatches, index);\n\n\t\t_VirtualDom_pushPatch(localPatches, 9, index, {\n\t\t\tw: subPatches,\n\t\t\tA: entry\n\t\t});\n\n\t\treturn;\n\t}\n\n\t// this key has already been removed or moved, a duplicate!\n\t_VirtualDom_removeNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, index);\n}\n\n\n\n// ADD DOM NODES\n//\n// Each DOM node has an \"index\" assigned in order of traversal. It is important\n// to minimize our crawl over the actual DOM, so these indexes (along with the\n// descendantsCount of virtual nodes) let us skip touching entire subtrees of\n// the DOM if we know there are no patches there.\n\n\nfunction _VirtualDom_addDomNodes(domNode, vNode, patches, eventNode)\n{\n\t_VirtualDom_addDomNodesHelp(domNode, vNode, patches, 0, 0, vNode.b, eventNode);\n}\n\n\n// assumes `patches` is non-empty and indexes increase monotonically.\nfunction _VirtualDom_addDomNodesHelp(domNode, vNode, patches, i, low, high, eventNode)\n{\n\tvar patch = patches[i];\n\tvar index = patch.r;\n\n\twhile (index === low)\n\t{\n\t\tvar patchType = patch.$;\n\n\t\tif (patchType === 1)\n\t\t{\n\t\t\t_VirtualDom_addDomNodes(domNode, vNode.k, patch.s, eventNode);\n\t\t}\n\t\telse if (patchType === 8)\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\n\t\t\tvar subPatches = patch.s.w;\n\t\t\tif (subPatches.length > 0)\n\t\t\t{\n\t\t\t\t_VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);\n\t\t\t}\n\t\t}\n\t\telse if (patchType === 9)\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\n\t\t\tvar data = patch.s;\n\t\t\tif (data)\n\t\t\t{\n\t\t\t\tdata.A.s = domNode;\n\t\t\t\tvar subPatches = data.w;\n\t\t\t\tif (subPatches.length > 0)\n\t\t\t\t{\n\t\t\t\t\t_VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\t\t}\n\n\t\ti++;\n\n\t\tif (!(patch = patches[i]) || (index = patch.r) > high)\n\t\t{\n\t\t\treturn i;\n\t\t}\n\t}\n\n\tvar tag = vNode.$;\n\n\tif (tag === 4)\n\t{\n\t\tvar subNode = vNode.k;\n\n\t\twhile (subNode.$ === 4)\n\t\t{\n\t\t\tsubNode = subNode.k;\n\t\t}\n\n\t\treturn _VirtualDom_addDomNodesHelp(domNode, subNode, patches, i, low + 1, high, domNode.elm_event_node_ref);\n\t}\n\n\t// tag must be 1 or 2 at this point\n\n\tvar vKids = vNode.e;\n\tvar childNodes = domNode.childNodes;\n\tfor (var j = 0; j < vKids.length; j++)\n\t{\n\t\tlow++;\n\t\tvar vKid = tag === 1 ? vKids[j] : vKids[j].b;\n\t\tvar nextLow = low + (vKid.b || 0);\n\t\tif (low <= index && index <= nextLow)\n\t\t{\n\t\t\ti = _VirtualDom_addDomNodesHelp(childNodes[j], vKid, patches, i, low, nextLow, eventNode);\n\t\t\tif (!(patch = patches[i]) || (index = patch.r) > high)\n\t\t\t{\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\tlow = nextLow;\n\t}\n\treturn i;\n}\n\n\n\n// APPLY PATCHES\n\n\nfunction _VirtualDom_applyPatches(rootDomNode, oldVirtualNode, patches, eventNode)\n{\n\tif (patches.length === 0)\n\t{\n\t\treturn rootDomNode;\n\t}\n\n\t_VirtualDom_addDomNodes(rootDomNode, oldVirtualNode, patches, eventNode);\n\treturn _VirtualDom_applyPatchesHelp(rootDomNode, patches);\n}\n\nfunction _VirtualDom_applyPatchesHelp(rootDomNode, patches)\n{\n\tfor (var i = 0; i < patches.length; i++)\n\t{\n\t\tvar patch = patches[i];\n\t\tvar localDomNode = patch.t\n\t\tvar newNode = _VirtualDom_applyPatch(localDomNode, patch);\n\t\tif (localDomNode === rootDomNode)\n\t\t{\n\t\t\trootDomNode = newNode;\n\t\t}\n\t}\n\treturn rootDomNode;\n}\n\nfunction _VirtualDom_applyPatch(domNode, patch)\n{\n\tswitch (patch.$)\n\t{\n\t\tcase 0:\n\t\t\treturn _VirtualDom_applyPatchRedraw(domNode, patch.s, patch.u);\n\n\t\tcase 4:\n\t\t\t_VirtualDom_applyFacts(domNode, patch.u, patch.s);\n\t\t\treturn domNode;\n\n\t\tcase 3:\n\t\t\tdomNode.replaceData(0, domNode.length, patch.s);\n\t\t\treturn domNode;\n\n\t\tcase 1:\n\t\t\treturn _VirtualDom_applyPatchesHelp(domNode, patch.s);\n\n\t\tcase 2:\n\t\t\tif (domNode.elm_event_node_ref)\n\t\t\t{\n\t\t\t\tdomNode.elm_event_node_ref.j = patch.s;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tdomNode.elm_event_node_ref = { j: patch.s, p: patch.u };\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 6:\n\t\t\tvar data = patch.s;\n\t\t\tfor (var i = 0; i < data.i; i++)\n\t\t\t{\n\t\t\t\tdomNode.removeChild(domNode.childNodes[data.v]);\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 7:\n\t\t\tvar data = patch.s;\n\t\t\tvar kids = data.e;\n\t\t\tvar i = data.v;\n\t\t\tvar theEnd = domNode.childNodes[i];\n\t\t\tfor (; i < kids.length; i++)\n\t\t\t{\n\t\t\t\tdomNode.insertBefore(_VirtualDom_render(kids[i], patch.u), theEnd);\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 9:\n\t\t\tvar data = patch.s;\n\t\t\tif (!data)\n\t\t\t{\n\t\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t\t\treturn domNode;\n\t\t\t}\n\t\t\tvar entry = data.A;\n\t\t\tif (typeof entry.r !== 'undefined')\n\t\t\t{\n\t\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t\t}\n\t\t\tentry.s = _VirtualDom_applyPatchesHelp(domNode, data.w);\n\t\t\treturn domNode;\n\n\t\tcase 8:\n\t\t\treturn _VirtualDom_applyPatchReorder(domNode, patch);\n\n\t\tcase 5:\n\t\t\treturn patch.s(domNode);\n\n\t\tdefault:\n\t\t\t_Debug_crash(10); // 'Ran into an unknown patch!'\n\t}\n}\n\n\nfunction _VirtualDom_applyPatchRedraw(domNode, vNode, eventNode)\n{\n\tvar parentNode = domNode.parentNode;\n\tvar newNode = _VirtualDom_render(vNode, eventNode);\n\n\tif (!newNode.elm_event_node_ref)\n\t{\n\t\tnewNode.elm_event_node_ref = domNode.elm_event_node_ref;\n\t}\n\n\tif (parentNode && newNode !== domNode)\n\t{\n\t\tparentNode.replaceChild(newNode, domNode);\n\t}\n\treturn newNode;\n}\n\n\nfunction _VirtualDom_applyPatchReorder(domNode, patch)\n{\n\tvar data = patch.s;\n\n\t// remove end inserts\n\tvar frag = _VirtualDom_applyPatchReorderEndInsertsHelp(data.y, patch);\n\n\t// removals\n\tdomNode = _VirtualDom_applyPatchesHelp(domNode, data.w);\n\n\t// inserts\n\tvar inserts = data.x;\n\tfor (var i = 0; i < inserts.length; i++)\n\t{\n\t\tvar insert = inserts[i];\n\t\tvar entry = insert.A;\n\t\tvar node = entry.c === 2\n\t\t\t? entry.s\n\t\t\t: _VirtualDom_render(entry.z, patch.u);\n\t\tdomNode.insertBefore(node, domNode.childNodes[insert.r]);\n\t}\n\n\t// add end inserts\n\tif (frag)\n\t{\n\t\t_VirtualDom_appendChild(domNode, frag);\n\t}\n\n\treturn domNode;\n}\n\n\nfunction _VirtualDom_applyPatchReorderEndInsertsHelp(endInserts, patch)\n{\n\tif (!endInserts)\n\t{\n\t\treturn;\n\t}\n\n\tvar frag = _VirtualDom_doc.createDocumentFragment();\n\tfor (var i = 0; i < endInserts.length; i++)\n\t{\n\t\tvar insert = endInserts[i];\n\t\tvar entry = insert.A;\n\t\t_VirtualDom_appendChild(frag, entry.c === 2\n\t\t\t? entry.s\n\t\t\t: _VirtualDom_render(entry.z, patch.u)\n\t\t);\n\t}\n\treturn frag;\n}\n\n\nfunction _VirtualDom_virtualize(node)\n{\n\t// TEXT NODES\n\n\tif (node.nodeType === 3)\n\t{\n\t\treturn _VirtualDom_text(node.textContent);\n\t}\n\n\n\t// WEIRD NODES\n\n\tif (node.nodeType !== 1)\n\t{\n\t\treturn _VirtualDom_text('');\n\t}\n\n\n\t// ELEMENT NODES\n\n\tvar attrList = _List_Nil;\n\tvar attrs = node.attributes;\n\tfor (var i = attrs.length; i--; )\n\t{\n\t\tvar attr = attrs[i];\n\t\tvar name = attr.name;\n\t\tvar value = attr.value;\n\t\tattrList = _List_Cons( A2(_VirtualDom_attribute, name, value), attrList );\n\t}\n\n\tvar tag = node.tagName.toLowerCase();\n\tvar kidList = _List_Nil;\n\tvar kids = node.childNodes;\n\n\tfor (var i = kids.length; i--; )\n\t{\n\t\tkidList = _List_Cons(_VirtualDom_virtualize(kids[i]), kidList);\n\t}\n\treturn A3(_VirtualDom_node, tag, attrList, kidList);\n}\n\nfunction _VirtualDom_dekey(keyedNode)\n{\n\tvar keyedKids = keyedNode.e;\n\tvar len = keyedKids.length;\n\tvar kids = new Array(len);\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tkids[i] = keyedKids[i].b;\n\t}\n\n\treturn {\n\t\t$: 1,\n\t\tc: keyedNode.c,\n\t\td: keyedNode.d,\n\t\te: kids,\n\t\tf: keyedNode.f,\n\t\tb: keyedNode.b\n\t};\n}\n\n\n\n\n// ELEMENT\n\n\nvar _Debugger_element;\n\nvar _Browser_element = _Debugger_element || F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.fa,\n\t\timpl.fZ,\n\t\timpl.fN,\n\t\tfunction(sendToApp, initialModel) {\n\t\t\tvar view = impl.f0;\n\t\t\t/**/\n\t\t\tvar domNode = args['node'];\n\t\t\t//*/\n\t\t\t/**_UNUSED/\n\t\t\tvar domNode = args && args['node'] ? args['node'] : _Debug_crash(0);\n\t\t\t//*/\n\t\t\tvar currNode = _VirtualDom_virtualize(domNode);\n\n\t\t\treturn _Browser_makeAnimator(initialModel, function(model)\n\t\t\t{\n\t\t\t\tvar nextNode = view(model);\n\t\t\t\tvar patches = _VirtualDom_diff(currNode, nextNode);\n\t\t\t\tdomNode = _VirtualDom_applyPatches(domNode, currNode, patches, sendToApp);\n\t\t\t\tcurrNode = nextNode;\n\t\t\t});\n\t\t}\n\t);\n});\n\n\n\n// DOCUMENT\n\n\nvar _Debugger_document;\n\nvar _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.fa,\n\t\timpl.fZ,\n\t\timpl.fN,\n\t\tfunction(sendToApp, initialModel) {\n\t\t\tvar divertHrefToApp = impl.cY && impl.cY(sendToApp)\n\t\t\tvar view = impl.f0;\n\t\t\tvar title = _VirtualDom_doc.title;\n\t\t\tvar bodyNode = _VirtualDom_doc.body;\n\t\t\tvar currNode = _VirtualDom_virtualize(bodyNode);\n\t\t\treturn _Browser_makeAnimator(initialModel, function(model)\n\t\t\t{\n\t\t\t\t_VirtualDom_divertHrefToApp = divertHrefToApp;\n\t\t\t\tvar doc = view(model);\n\t\t\t\tvar nextNode = _VirtualDom_node('body')(_List_Nil)(doc.eJ);\n\t\t\t\tvar patches = _VirtualDom_diff(currNode, nextNode);\n\t\t\t\tbodyNode = _VirtualDom_applyPatches(bodyNode, currNode, patches, sendToApp);\n\t\t\t\tcurrNode = nextNode;\n\t\t\t\t_VirtualDom_divertHrefToApp = 0;\n\t\t\t\t(title !== doc.fR) && (_VirtualDom_doc.title = title = doc.fR);\n\t\t\t});\n\t\t}\n\t);\n});\n\n\n\n// ANIMATION\n\n\nvar _Browser_cancelAnimationFrame =\n\ttypeof cancelAnimationFrame !== 'undefined'\n\t\t? cancelAnimationFrame\n\t\t: function(id) { clearTimeout(id); };\n\nvar _Browser_requestAnimationFrame =\n\ttypeof requestAnimationFrame !== 'undefined'\n\t\t? requestAnimationFrame\n\t\t: function(callback) { return setTimeout(callback, 1000 / 60); };\n\n\nfunction _Browser_makeAnimator(model, draw)\n{\n\tdraw(model);\n\n\tvar state = 0;\n\n\tfunction updateIfNeeded()\n\t{\n\t\tstate = state === 1\n\t\t\t? 0\n\t\t\t: ( _Browser_requestAnimationFrame(updateIfNeeded), draw(model), 1 );\n\t}\n\n\treturn function(nextModel, isSync)\n\t{\n\t\tmodel = nextModel;\n\n\t\tisSync\n\t\t\t? ( draw(model),\n\t\t\t\tstate === 2 && (state = 1)\n\t\t\t\t)\n\t\t\t: ( state === 0 && _Browser_requestAnimationFrame(updateIfNeeded),\n\t\t\t\tstate = 2\n\t\t\t\t);\n\t};\n}\n\n\n\n// APPLICATION\n\n\nfunction _Browser_application(impl)\n{\n\tvar onUrlChange = impl.fw;\n\tvar onUrlRequest = impl.fx;\n\tvar key = function() { key.a(onUrlChange(_Browser_getUrl())); };\n\n\treturn _Browser_document({\n\t\tcY: function(sendToApp)\n\t\t{\n\t\t\tkey.a = sendToApp;\n\t\t\t_Browser_window.addEventListener('popstate', key);\n\t\t\t_Browser_window.navigator.userAgent.indexOf('Trident') < 0 || _Browser_window.addEventListener('hashchange', key);\n\n\t\t\treturn F2(function(domNode, event)\n\t\t\t{\n\t\t\t\tif (!event.ctrlKey && !event.metaKey && !event.shiftKey && event.button < 1 && !domNode.target && !domNode.hasAttribute('download'))\n\t\t\t\t{\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tvar href = domNode.href;\n\t\t\t\t\tvar curr = _Browser_getUrl();\n\t\t\t\t\tvar next = $elm$url$Url$fromString(href).a;\n\t\t\t\t\tsendToApp(onUrlRequest(\n\t\t\t\t\t\t(next\n\t\t\t\t\t\t\t&& curr.d3 === next.d3\n\t\t\t\t\t\t\t&& curr.e6 === next.e6\n\t\t\t\t\t\t\t&& curr.d_.a === next.d_.a\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\t? $elm$browser$Browser$Internal(next)\n\t\t\t\t\t\t\t: $elm$browser$Browser$External(href)\n\t\t\t\t\t));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tfa: function(flags)\n\t\t{\n\t\t\treturn A3(impl.fa, flags, _Browser_getUrl(), key);\n\t\t},\n\t\tf0: impl.f0,\n\t\tfZ: impl.fZ,\n\t\tfN: impl.fN\n\t});\n}\n\nfunction _Browser_getUrl()\n{\n\treturn $elm$url$Url$fromString(_VirtualDom_doc.location.href).a || _Debug_crash(1);\n}\n\nvar _Browser_go = F2(function(key, n)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\tn && history.go(n);\n\t\tkey();\n\t}));\n});\n\nvar _Browser_pushUrl = F2(function(key, url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\thistory.pushState({}, '', url);\n\t\tkey();\n\t}));\n});\n\nvar _Browser_replaceUrl = F2(function(key, url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\thistory.replaceState({}, '', url);\n\t\tkey();\n\t}));\n});\n\n\n\n// GLOBAL EVENTS\n\n\nvar _Browser_fakeNode = { addEventListener: function() {}, removeEventListener: function() {} };\nvar _Browser_doc = typeof document !== 'undefined' ? document : _Browser_fakeNode;\nvar _Browser_window = typeof window !== 'undefined' ? window : _Browser_fakeNode;\n\nvar _Browser_on = F3(function(node, eventName, sendToSelf)\n{\n\treturn _Scheduler_spawn(_Scheduler_binding(function(callback)\n\t{\n\t\tfunction handler(event)\t{ _Scheduler_rawSpawn(sendToSelf(event)); }\n\t\tnode.addEventListener(eventName, handler, _VirtualDom_passiveSupported && { passive: true });\n\t\treturn function() { node.removeEventListener(eventName, handler); };\n\t}));\n});\n\nvar _Browser_decodeEvent = F2(function(decoder, event)\n{\n\tvar result = _Json_runHelp(decoder, event);\n\treturn $elm$core$Result$isOk(result) ? $elm$core$Maybe$Just(result.a) : $elm$core$Maybe$Nothing;\n});\n\n\n\n// PAGE VISIBILITY\n\n\nfunction _Browser_visibilityInfo()\n{\n\treturn (typeof _VirtualDom_doc.hidden !== 'undefined')\n\t\t? { e5: 'hidden', eM: 'visibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.mozHidden !== 'undefined')\n\t\t? { e5: 'mozHidden', eM: 'mozvisibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.msHidden !== 'undefined')\n\t\t? { e5: 'msHidden', eM: 'msvisibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.webkitHidden !== 'undefined')\n\t\t? { e5: 'webkitHidden', eM: 'webkitvisibilitychange' }\n\t\t: { e5: 'hidden', eM: 'visibilitychange' };\n}\n\n\n\n// ANIMATION FRAMES\n\n\nfunction _Browser_rAF()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar id = _Browser_requestAnimationFrame(function() {\n\t\t\tcallback(_Scheduler_succeed(Date.now()));\n\t\t});\n\n\t\treturn function() {\n\t\t\t_Browser_cancelAnimationFrame(id);\n\t\t};\n\t});\n}\n\n\nfunction _Browser_now()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tcallback(_Scheduler_succeed(Date.now()));\n\t});\n}\n\n\n\n// DOM STUFF\n\n\nfunction _Browser_withNode(id, doStuff)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_Browser_requestAnimationFrame(function() {\n\t\t\tvar node = document.getElementById(id);\n\t\t\tcallback(node\n\t\t\t\t? _Scheduler_succeed(doStuff(node))\n\t\t\t\t: _Scheduler_fail($elm$browser$Browser$Dom$NotFound(id))\n\t\t\t);\n\t\t});\n\t});\n}\n\n\nfunction _Browser_withWindow(doStuff)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_Browser_requestAnimationFrame(function() {\n\t\t\tcallback(_Scheduler_succeed(doStuff()));\n\t\t});\n\t});\n}\n\n\n// FOCUS and BLUR\n\n\nvar _Browser_call = F2(function(functionName, id)\n{\n\treturn _Browser_withNode(id, function(node) {\n\t\tnode[functionName]();\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// WINDOW VIEWPORT\n\n\nfunction _Browser_getViewport()\n{\n\treturn {\n\t\ted: _Browser_getScene(),\n\t\teA: {\n\t\t\teC: _Browser_window.pageXOffset,\n\t\t\teD: _Browser_window.pageYOffset,\n\t\t\teB: _Browser_doc.documentElement.clientWidth,\n\t\t\tdA: _Browser_doc.documentElement.clientHeight\n\t\t}\n\t};\n}\n\nfunction _Browser_getScene()\n{\n\tvar body = _Browser_doc.body;\n\tvar elem = _Browser_doc.documentElement;\n\treturn {\n\t\teB: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth),\n\t\tdA: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight)\n\t};\n}\n\nvar _Browser_setViewport = F2(function(x, y)\n{\n\treturn _Browser_withWindow(function()\n\t{\n\t\t_Browser_window.scroll(x, y);\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// ELEMENT VIEWPORT\n\n\nfunction _Browser_getViewportOf(id)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\treturn {\n\t\t\ted: {\n\t\t\t\teB: node.scrollWidth,\n\t\t\t\tdA: node.scrollHeight\n\t\t\t},\n\t\t\teA: {\n\t\t\t\teC: node.scrollLeft,\n\t\t\t\teD: node.scrollTop,\n\t\t\t\teB: node.clientWidth,\n\t\t\t\tdA: node.clientHeight\n\t\t\t}\n\t\t};\n\t});\n}\n\n\nvar _Browser_setViewportOf = F3(function(id, x, y)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\tnode.scrollLeft = x;\n\t\tnode.scrollTop = y;\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// ELEMENT\n\n\nfunction _Browser_getElement(id)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\tvar rect = node.getBoundingClientRect();\n\t\tvar x = _Browser_window.pageXOffset;\n\t\tvar y = _Browser_window.pageYOffset;\n\t\treturn {\n\t\t\ted: _Browser_getScene(),\n\t\t\teA: {\n\t\t\t\teC: x,\n\t\t\t\teD: y,\n\t\t\t\teB: _Browser_doc.documentElement.clientWidth,\n\t\t\t\tdA: _Browser_doc.documentElement.clientHeight\n\t\t\t},\n\t\t\teU: {\n\t\t\t\teC: x + rect.left,\n\t\t\t\teD: y + rect.top,\n\t\t\t\teB: rect.width,\n\t\t\t\tdA: rect.height\n\t\t\t}\n\t\t};\n\t});\n}\n\n\n\n// LOAD and RELOAD\n\n\nfunction _Browser_reload(skipCache)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)\n\t{\n\t\t_VirtualDom_doc.location.reload(skipCache);\n\t}));\n}\n\nfunction _Browser_load(url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)\n\t{\n\t\ttry\n\t\t{\n\t\t\t_Browser_window.location = url;\n\t\t}\n\t\tcatch(err)\n\t\t{\n\t\t\t// Only Firefox can throw a NS_ERROR_MALFORMED_URI exception here.\n\t\t\t// Other browsers reload the page, so let's be consistent about that.\n\t\t\t_VirtualDom_doc.location.reload(false);\n\t\t}\n\t}));\n}\n\n\nfunction _Url_percentEncode(string)\n{\n\treturn encodeURIComponent(string);\n}\n\nfunction _Url_percentDecode(string)\n{\n\ttry\n\t{\n\t\treturn $elm$core$Maybe$Just(decodeURIComponent(string));\n\t}\n\tcatch (e)\n\t{\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n}\n\n\n// SEND REQUEST\n\nvar _Http_toTask = F3(function(router, toTask, request)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tfunction done(response) {\n\t\t\tcallback(toTask(request.eX.a(response)));\n\t\t}\n\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.addEventListener('error', function() { done($elm$http$Http$NetworkError_); });\n\t\txhr.addEventListener('timeout', function() { done($elm$http$Http$Timeout_); });\n\t\txhr.addEventListener('load', function() { done(_Http_toResponse(request.eX.b, xhr)); });\n\t\t$elm$core$Maybe$isJust(request.fY) && _Http_track(router, xhr, request.fY.a);\n\n\t\ttry {\n\t\t\txhr.open(request.fg, request.f_, true);\n\t\t} catch (e) {\n\t\t\treturn done($elm$http$Http$BadUrl_(request.f_));\n\t\t}\n\n\t\t_Http_configureRequest(xhr, request);\n\n\t\trequest.eJ.a && xhr.setRequestHeader('Content-Type', request.eJ.a);\n\t\txhr.send(request.eJ.b);\n\n\t\treturn function() { xhr.c = true; xhr.abort(); };\n\t});\n});\n\n\n// CONFIGURE\n\nfunction _Http_configureRequest(xhr, request)\n{\n\tfor (var headers = request.e3; headers.b; headers = headers.b) // WHILE_CONS\n\t{\n\t\txhr.setRequestHeader(headers.a.a, headers.a.b);\n\t}\n\txhr.timeout = request.fQ.a || 0;\n\txhr.responseType = request.eX.d;\n\txhr.withCredentials = request.eH;\n}\n\n\n// RESPONSES\n\nfunction _Http_toResponse(toBody, xhr)\n{\n\treturn A2(\n\t\t200 <= xhr.status && xhr.status < 300 ? $elm$http$Http$GoodStatus_ : $elm$http$Http$BadStatus_,\n\t\t_Http_toMetadata(xhr),\n\t\ttoBody(xhr.response)\n\t);\n}\n\n\n// METADATA\n\nfunction _Http_toMetadata(xhr)\n{\n\treturn {\n\t\tf_: xhr.responseURL,\n\t\tfL: xhr.status,\n\t\tfM: xhr.statusText,\n\t\te3: _Http_parseHeaders(xhr.getAllResponseHeaders())\n\t};\n}\n\n\n// HEADERS\n\nfunction _Http_parseHeaders(rawHeaders)\n{\n\tif (!rawHeaders)\n\t{\n\t\treturn $elm$core$Dict$empty;\n\t}\n\n\tvar headers = $elm$core$Dict$empty;\n\tvar headerPairs = rawHeaders.split('\\r\\n');\n\tfor (var i = headerPairs.length; i--; )\n\t{\n\t\tvar headerPair = headerPairs[i];\n\t\tvar index = headerPair.indexOf(': ');\n\t\tif (index > 0)\n\t\t{\n\t\t\tvar key = headerPair.substring(0, index);\n\t\t\tvar value = headerPair.substring(index + 2);\n\n\t\t\theaders = A3($elm$core$Dict$update, key, function(oldValue) {\n\t\t\t\treturn $elm$core$Maybe$Just($elm$core$Maybe$isJust(oldValue)\n\t\t\t\t\t? value + ', ' + oldValue.a\n\t\t\t\t\t: value\n\t\t\t\t);\n\t\t\t}, headers);\n\t\t}\n\t}\n\treturn headers;\n}\n\n\n// EXPECT\n\nvar _Http_expect = F3(function(type, toBody, toValue)\n{\n\treturn {\n\t\t$: 0,\n\t\td: type,\n\t\tb: toBody,\n\t\ta: toValue\n\t};\n});\n\nvar _Http_mapExpect = F2(function(func, expect)\n{\n\treturn {\n\t\t$: 0,\n\t\td: expect.d,\n\t\tb: expect.b,\n\t\ta: function(x) { return func(expect.a(x)); }\n\t};\n});\n\nfunction _Http_toDataView(arrayBuffer)\n{\n\treturn new DataView(arrayBuffer);\n}\n\n\n// BODY and PARTS\n\nvar _Http_emptyBody = { $: 0 };\nvar _Http_pair = F2(function(a, b) { return { $: 0, a: a, b: b }; });\n\nfunction _Http_toFormData(parts)\n{\n\tfor (var formData = new FormData(); parts.b; parts = parts.b) // WHILE_CONS\n\t{\n\t\tvar part = parts.a;\n\t\tformData.append(part.a, part.b);\n\t}\n\treturn formData;\n}\n\nvar _Http_bytesToBlob = F2(function(mime, bytes)\n{\n\treturn new Blob([bytes], { type: mime });\n});\n\n\n// PROGRESS\n\nfunction _Http_track(router, xhr, tracker)\n{\n\t// TODO check out lengthComputable on loadstart event\n\n\txhr.upload.addEventListener('progress', function(event) {\n\t\tif (xhr.c) { return; }\n\t\t_Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Sending({\n\t\t\tfJ: event.loaded,\n\t\t\teh: event.total\n\t\t}))));\n\t});\n\txhr.addEventListener('progress', function(event) {\n\t\tif (xhr.c) { return; }\n\t\t_Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Receiving({\n\t\t\tfD: event.loaded,\n\t\t\teh: event.lengthComputable ? $elm$core$Maybe$Just(event.total) : $elm$core$Maybe$Nothing\n\t\t}))));\n\t});\n}var $author$project$Main$LinkClicked = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Main$UrlChanged = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$core$Basics$EQ = 1;\nvar $elm$core$Basics$GT = 2;\nvar $elm$core$Basics$LT = 0;\nvar $elm$core$List$cons = _List_cons;\nvar $elm$core$Dict$foldr = F3(\n\tfunction (func, acc, t) {\n\t\tfoldr:\n\t\twhile (true) {\n\t\t\tif (t.$ === -2) {\n\t\t\t\treturn acc;\n\t\t\t} else {\n\t\t\t\tvar key = t.b;\n\t\t\t\tvar value = t.c;\n\t\t\t\tvar left = t.d;\n\t\t\t\tvar right = t.e;\n\t\t\t\tvar $temp$func = func,\n\t\t\t\t\t$temp$acc = A3(\n\t\t\t\t\tfunc,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tA3($elm$core$Dict$foldr, func, acc, right)),\n\t\t\t\t\t$temp$t = left;\n\t\t\t\tfunc = $temp$func;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tt = $temp$t;\n\t\t\t\tcontinue foldr;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$toList = function (dict) {\n\treturn A3(\n\t\t$elm$core$Dict$foldr,\n\t\tF3(\n\t\t\tfunction (key, value, list) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t_Utils_Tuple2(key, value),\n\t\t\t\t\tlist);\n\t\t\t}),\n\t\t_List_Nil,\n\t\tdict);\n};\nvar $elm$core$Dict$keys = function (dict) {\n\treturn A3(\n\t\t$elm$core$Dict$foldr,\n\t\tF3(\n\t\t\tfunction (key, value, keyList) {\n\t\t\t\treturn A2($elm$core$List$cons, key, keyList);\n\t\t\t}),\n\t\t_List_Nil,\n\t\tdict);\n};\nvar $elm$core$Set$toList = function (_v0) {\n\tvar dict = _v0;\n\treturn $elm$core$Dict$keys(dict);\n};\nvar $elm$core$Elm$JsArray$foldr = _JsArray_foldr;\nvar $elm$core$Array$foldr = F3(\n\tfunction (func, baseCase, _v0) {\n\t\tvar tree = _v0.c;\n\t\tvar tail = _v0.d;\n\t\tvar helper = F2(\n\t\t\tfunction (node, acc) {\n\t\t\t\tif (!node.$) {\n\t\t\t\t\tvar subTree = node.a;\n\t\t\t\t\treturn A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree);\n\t\t\t\t} else {\n\t\t\t\t\tvar values = node.a;\n\t\t\t\t\treturn A3($elm$core$Elm$JsArray$foldr, func, acc, values);\n\t\t\t\t}\n\t\t\t});\n\t\treturn A3(\n\t\t\t$elm$core$Elm$JsArray$foldr,\n\t\t\thelper,\n\t\t\tA3($elm$core$Elm$JsArray$foldr, func, baseCase, tail),\n\t\t\ttree);\n\t});\nvar $elm$core$Array$toList = function (array) {\n\treturn A3($elm$core$Array$foldr, $elm$core$List$cons, _List_Nil, array);\n};\nvar $elm$core$Result$Err = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$json$Json$Decode$Failure = F2(\n\tfunction (a, b) {\n\t\treturn {$: 3, a: a, b: b};\n\t});\nvar $elm$json$Json$Decode$Field = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $elm$json$Json$Decode$Index = F2(\n\tfunction (a, b) {\n\t\treturn {$: 1, a: a, b: b};\n\t});\nvar $elm$core$Result$Ok = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$json$Json$Decode$OneOf = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$core$Basics$False = 1;\nvar $elm$core$Basics$add = _Basics_add;\nvar $elm$core$Maybe$Just = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$core$Maybe$Nothing = {$: 1};\nvar $elm$core$String$all = _String_all;\nvar $elm$core$Basics$and = _Basics_and;\nvar $elm$core$Basics$append = _Utils_append;\nvar $elm$json$Json$Encode$encode = _Json_encode;\nvar $elm$core$String$fromInt = _String_fromNumber;\nvar $elm$core$String$join = F2(\n\tfunction (sep, chunks) {\n\t\treturn A2(\n\t\t\t_String_join,\n\t\t\tsep,\n\t\t\t_List_toArray(chunks));\n\t});\nvar $elm$core$String$split = F2(\n\tfunction (sep, string) {\n\t\treturn _List_fromArray(\n\t\t\tA2(_String_split, sep, string));\n\t});\nvar $elm$json$Json$Decode$indent = function (str) {\n\treturn A2(\n\t\t$elm$core$String$join,\n\t\t'\\n ',\n\t\tA2($elm$core$String$split, '\\n', str));\n};\nvar $elm$core$List$foldl = F3(\n\tfunction (func, acc, list) {\n\t\tfoldl:\n\t\twhile (true) {\n\t\t\tif (!list.b) {\n\t\t\t\treturn acc;\n\t\t\t} else {\n\t\t\t\tvar x = list.a;\n\t\t\t\tvar xs = list.b;\n\t\t\t\tvar $temp$func = func,\n\t\t\t\t\t$temp$acc = A2(func, x, acc),\n\t\t\t\t\t$temp$list = xs;\n\t\t\t\tfunc = $temp$func;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tlist = $temp$list;\n\t\t\t\tcontinue foldl;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$length = function (xs) {\n\treturn A3(\n\t\t$elm$core$List$foldl,\n\t\tF2(\n\t\t\tfunction (_v0, i) {\n\t\t\t\treturn i + 1;\n\t\t\t}),\n\t\t0,\n\t\txs);\n};\nvar $elm$core$List$map2 = _List_map2;\nvar $elm$core$Basics$le = _Utils_le;\nvar $elm$core$Basics$sub = _Basics_sub;\nvar $elm$core$List$rangeHelp = F3(\n\tfunction (lo, hi, list) {\n\t\trangeHelp:\n\t\twhile (true) {\n\t\t\tif (_Utils_cmp(lo, hi) < 1) {\n\t\t\t\tvar $temp$lo = lo,\n\t\t\t\t\t$temp$hi = hi - 1,\n\t\t\t\t\t$temp$list = A2($elm$core$List$cons, hi, list);\n\t\t\t\tlo = $temp$lo;\n\t\t\t\thi = $temp$hi;\n\t\t\t\tlist = $temp$list;\n\t\t\t\tcontinue rangeHelp;\n\t\t\t} else {\n\t\t\t\treturn list;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$range = F2(\n\tfunction (lo, hi) {\n\t\treturn A3($elm$core$List$rangeHelp, lo, hi, _List_Nil);\n\t});\nvar $elm$core$List$indexedMap = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$map2,\n\t\t\tf,\n\t\t\tA2(\n\t\t\t\t$elm$core$List$range,\n\t\t\t\t0,\n\t\t\t\t$elm$core$List$length(xs) - 1),\n\t\t\txs);\n\t});\nvar $elm$core$Char$toCode = _Char_toCode;\nvar $elm$core$Char$isLower = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (97 <= code) && (code <= 122);\n};\nvar $elm$core$Char$isUpper = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (code <= 90) && (65 <= code);\n};\nvar $elm$core$Basics$or = _Basics_or;\nvar $elm$core$Char$isAlpha = function (_char) {\n\treturn $elm$core$Char$isLower(_char) || $elm$core$Char$isUpper(_char);\n};\nvar $elm$core$Char$isDigit = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (code <= 57) && (48 <= code);\n};\nvar $elm$core$Char$isAlphaNum = function (_char) {\n\treturn $elm$core$Char$isLower(_char) || ($elm$core$Char$isUpper(_char) || $elm$core$Char$isDigit(_char));\n};\nvar $elm$core$List$reverse = function (list) {\n\treturn A3($elm$core$List$foldl, $elm$core$List$cons, _List_Nil, list);\n};\nvar $elm$core$String$uncons = _String_uncons;\nvar $elm$json$Json$Decode$errorOneOf = F2(\n\tfunction (i, error) {\n\t\treturn '\\n\\n(' + ($elm$core$String$fromInt(i + 1) + (') ' + $elm$json$Json$Decode$indent(\n\t\t\t$elm$json$Json$Decode$errorToString(error))));\n\t});\nvar $elm$json$Json$Decode$errorToString = function (error) {\n\treturn A2($elm$json$Json$Decode$errorToStringHelp, error, _List_Nil);\n};\nvar $elm$json$Json$Decode$errorToStringHelp = F2(\n\tfunction (error, context) {\n\t\terrorToStringHelp:\n\t\twhile (true) {\n\t\t\tswitch (error.$) {\n\t\t\t\tcase 0:\n\t\t\t\t\tvar f = error.a;\n\t\t\t\t\tvar err = error.b;\n\t\t\t\t\tvar isSimple = function () {\n\t\t\t\t\t\tvar _v1 = $elm$core$String$uncons(f);\n\t\t\t\t\t\tif (_v1.$ === 1) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar _v2 = _v1.a;\n\t\t\t\t\t\t\tvar _char = _v2.a;\n\t\t\t\t\t\t\tvar rest = _v2.b;\n\t\t\t\t\t\t\treturn $elm$core$Char$isAlpha(_char) && A2($elm$core$String$all, $elm$core$Char$isAlphaNum, rest);\n\t\t\t\t\t\t}\n\t\t\t\t\t}();\n\t\t\t\t\tvar fieldName = isSimple ? ('.' + f) : ('[\\'' + (f + '\\']'));\n\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t$temp$context = A2($elm$core$List$cons, fieldName, context);\n\t\t\t\t\terror = $temp$error;\n\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\tcase 1:\n\t\t\t\t\tvar i = error.a;\n\t\t\t\t\tvar err = error.b;\n\t\t\t\t\tvar indexName = '[' + ($elm$core$String$fromInt(i) + ']');\n\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t$temp$context = A2($elm$core$List$cons, indexName, context);\n\t\t\t\t\terror = $temp$error;\n\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\tcase 2:\n\t\t\t\t\tvar errors = error.a;\n\t\t\t\t\tif (!errors.b) {\n\t\t\t\t\t\treturn 'Ran into a Json.Decode.oneOf with no possibilities' + function () {\n\t\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\t\treturn '!';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn ' at json' + A2(\n\t\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t$elm$core$List$reverse(context));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!errors.b.b) {\n\t\t\t\t\t\t\tvar err = errors.a;\n\t\t\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t\t\t$temp$context = context;\n\t\t\t\t\t\t\terror = $temp$error;\n\t\t\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar starter = function () {\n\t\t\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\t\t\treturn 'Json.Decode.oneOf';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn 'The Json.Decode.oneOf at json' + A2(\n\t\t\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t\t$elm$core$List$reverse(context));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}();\n\t\t\t\t\t\t\tvar introduction = starter + (' failed in the following ' + ($elm$core$String$fromInt(\n\t\t\t\t\t\t\t\t$elm$core$List$length(errors)) + ' ways:'));\n\t\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t'\\n\\n',\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t\t\t\t\tintroduction,\n\t\t\t\t\t\t\t\t\tA2($elm$core$List$indexedMap, $elm$json$Json$Decode$errorOneOf, errors)));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tvar msg = error.a;\n\t\t\t\t\tvar json = error.b;\n\t\t\t\t\tvar introduction = function () {\n\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\treturn 'Problem with the given value:\\n\\n';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn 'Problem with the value at json' + (A2(\n\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t$elm$core$List$reverse(context)) + ':\\n\\n ');\n\t\t\t\t\t\t}\n\t\t\t\t\t}();\n\t\t\t\t\treturn introduction + ($elm$json$Json$Decode$indent(\n\t\t\t\t\t\tA2($elm$json$Json$Encode$encode, 4, json)) + ('\\n\\n' + msg));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Array$branchFactor = 32;\nvar $elm$core$Array$Array_elm_builtin = F4(\n\tfunction (a, b, c, d) {\n\t\treturn {$: 0, a: a, b: b, c: c, d: d};\n\t});\nvar $elm$core$Elm$JsArray$empty = _JsArray_empty;\nvar $elm$core$Basics$ceiling = _Basics_ceiling;\nvar $elm$core$Basics$fdiv = _Basics_fdiv;\nvar $elm$core$Basics$logBase = F2(\n\tfunction (base, number) {\n\t\treturn _Basics_log(number) / _Basics_log(base);\n\t});\nvar $elm$core$Basics$toFloat = _Basics_toFloat;\nvar $elm$core$Array$shiftStep = $elm$core$Basics$ceiling(\n\tA2($elm$core$Basics$logBase, 2, $elm$core$Array$branchFactor));\nvar $elm$core$Array$empty = A4($elm$core$Array$Array_elm_builtin, 0, $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, $elm$core$Elm$JsArray$empty);\nvar $elm$core$Elm$JsArray$initialize = _JsArray_initialize;\nvar $elm$core$Array$Leaf = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$core$Basics$apL = F2(\n\tfunction (f, x) {\n\t\treturn f(x);\n\t});\nvar $elm$core$Basics$apR = F2(\n\tfunction (x, f) {\n\t\treturn f(x);\n\t});\nvar $elm$core$Basics$eq = _Utils_equal;\nvar $elm$core$Basics$floor = _Basics_floor;\nvar $elm$core$Elm$JsArray$length = _JsArray_length;\nvar $elm$core$Basics$gt = _Utils_gt;\nvar $elm$core$Basics$max = F2(\n\tfunction (x, y) {\n\t\treturn (_Utils_cmp(x, y) > 0) ? x : y;\n\t});\nvar $elm$core$Basics$mul = _Basics_mul;\nvar $elm$core$Array$SubTree = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$core$Elm$JsArray$initializeFromList = _JsArray_initializeFromList;\nvar $elm$core$Array$compressNodes = F2(\n\tfunction (nodes, acc) {\n\t\tcompressNodes:\n\t\twhile (true) {\n\t\t\tvar _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodes);\n\t\t\tvar node = _v0.a;\n\t\t\tvar remainingNodes = _v0.b;\n\t\t\tvar newAcc = A2(\n\t\t\t\t$elm$core$List$cons,\n\t\t\t\t$elm$core$Array$SubTree(node),\n\t\t\t\tacc);\n\t\t\tif (!remainingNodes.b) {\n\t\t\t\treturn $elm$core$List$reverse(newAcc);\n\t\t\t} else {\n\t\t\t\tvar $temp$nodes = remainingNodes,\n\t\t\t\t\t$temp$acc = newAcc;\n\t\t\t\tnodes = $temp$nodes;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tcontinue compressNodes;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Tuple$first = function (_v0) {\n\tvar x = _v0.a;\n\treturn x;\n};\nvar $elm$core$Array$treeFromBuilder = F2(\n\tfunction (nodeList, nodeListSize) {\n\t\ttreeFromBuilder:\n\t\twhile (true) {\n\t\t\tvar newNodeSize = $elm$core$Basics$ceiling(nodeListSize / $elm$core$Array$branchFactor);\n\t\t\tif (newNodeSize === 1) {\n\t\t\t\treturn A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodeList).a;\n\t\t\t} else {\n\t\t\t\tvar $temp$nodeList = A2($elm$core$Array$compressNodes, nodeList, _List_Nil),\n\t\t\t\t\t$temp$nodeListSize = newNodeSize;\n\t\t\t\tnodeList = $temp$nodeList;\n\t\t\t\tnodeListSize = $temp$nodeListSize;\n\t\t\t\tcontinue treeFromBuilder;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Array$builderToArray = F2(\n\tfunction (reverseNodeList, builder) {\n\t\tif (!builder.g) {\n\t\t\treturn A4(\n\t\t\t\t$elm$core$Array$Array_elm_builtin,\n\t\t\t\t$elm$core$Elm$JsArray$length(builder.h),\n\t\t\t\t$elm$core$Array$shiftStep,\n\t\t\t\t$elm$core$Elm$JsArray$empty,\n\t\t\t\tbuilder.h);\n\t\t} else {\n\t\t\tvar treeLen = builder.g * $elm$core$Array$branchFactor;\n\t\t\tvar depth = $elm$core$Basics$floor(\n\t\t\t\tA2($elm$core$Basics$logBase, $elm$core$Array$branchFactor, treeLen - 1));\n\t\t\tvar correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.i) : builder.i;\n\t\t\tvar tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.g);\n\t\t\treturn A4(\n\t\t\t\t$elm$core$Array$Array_elm_builtin,\n\t\t\t\t$elm$core$Elm$JsArray$length(builder.h) + treeLen,\n\t\t\t\tA2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep),\n\t\t\t\ttree,\n\t\t\t\tbuilder.h);\n\t\t}\n\t});\nvar $elm$core$Basics$idiv = _Basics_idiv;\nvar $elm$core$Basics$lt = _Utils_lt;\nvar $elm$core$Array$initializeHelp = F5(\n\tfunction (fn, fromIndex, len, nodeList, tail) {\n\t\tinitializeHelp:\n\t\twhile (true) {\n\t\t\tif (fromIndex < 0) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Array$builderToArray,\n\t\t\t\t\tfalse,\n\t\t\t\t\t{i: nodeList, g: (len / $elm$core$Array$branchFactor) | 0, h: tail});\n\t\t\t} else {\n\t\t\t\tvar leaf = $elm$core$Array$Leaf(\n\t\t\t\t\tA3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn));\n\t\t\t\tvar $temp$fn = fn,\n\t\t\t\t\t$temp$fromIndex = fromIndex - $elm$core$Array$branchFactor,\n\t\t\t\t\t$temp$len = len,\n\t\t\t\t\t$temp$nodeList = A2($elm$core$List$cons, leaf, nodeList),\n\t\t\t\t\t$temp$tail = tail;\n\t\t\t\tfn = $temp$fn;\n\t\t\t\tfromIndex = $temp$fromIndex;\n\t\t\t\tlen = $temp$len;\n\t\t\t\tnodeList = $temp$nodeList;\n\t\t\t\ttail = $temp$tail;\n\t\t\t\tcontinue initializeHelp;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Basics$remainderBy = _Basics_remainderBy;\nvar $elm$core$Array$initialize = F2(\n\tfunction (len, fn) {\n\t\tif (len <= 0) {\n\t\t\treturn $elm$core$Array$empty;\n\t\t} else {\n\t\t\tvar tailLen = len % $elm$core$Array$branchFactor;\n\t\t\tvar tail = A3($elm$core$Elm$JsArray$initialize, tailLen, len - tailLen, fn);\n\t\t\tvar initialFromIndex = (len - tailLen) - $elm$core$Array$branchFactor;\n\t\t\treturn A5($elm$core$Array$initializeHelp, fn, initialFromIndex, len, _List_Nil, tail);\n\t\t}\n\t});\nvar $elm$core$Basics$True = 0;\nvar $elm$core$Result$isOk = function (result) {\n\tif (!result.$) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$json$Json$Decode$map = _Json_map1;\nvar $elm$json$Json$Decode$map2 = _Json_map2;\nvar $elm$json$Json$Decode$succeed = _Json_succeed;\nvar $elm$virtual_dom$VirtualDom$toHandlerInt = function (handler) {\n\tswitch (handler.$) {\n\t\tcase 0:\n\t\t\treturn 0;\n\t\tcase 1:\n\t\t\treturn 1;\n\t\tcase 2:\n\t\t\treturn 2;\n\t\tdefault:\n\t\t\treturn 3;\n\t}\n};\nvar $elm$browser$Browser$External = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$browser$Browser$Internal = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$core$Basics$identity = function (x) {\n\treturn x;\n};\nvar $elm$browser$Browser$Dom$NotFound = $elm$core$Basics$identity;\nvar $elm$url$Url$Http = 0;\nvar $elm$url$Url$Https = 1;\nvar $elm$url$Url$Url = F6(\n\tfunction (protocol, host, port_, path, query, fragment) {\n\t\treturn {dx: fragment, e6: host, dY: path, d_: port_, d3: protocol, cT: query};\n\t});\nvar $elm$core$String$contains = _String_contains;\nvar $elm$core$String$length = _String_length;\nvar $elm$core$String$slice = _String_slice;\nvar $elm$core$String$dropLeft = F2(\n\tfunction (n, string) {\n\t\treturn (n < 1) ? string : A3(\n\t\t\t$elm$core$String$slice,\n\t\t\tn,\n\t\t\t$elm$core$String$length(string),\n\t\t\tstring);\n\t});\nvar $elm$core$String$indexes = _String_indexes;\nvar $elm$core$String$isEmpty = function (string) {\n\treturn string === '';\n};\nvar $elm$core$String$left = F2(\n\tfunction (n, string) {\n\t\treturn (n < 1) ? '' : A3($elm$core$String$slice, 0, n, string);\n\t});\nvar $elm$core$String$toInt = _String_toInt;\nvar $elm$url$Url$chompBeforePath = F5(\n\tfunction (protocol, path, params, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str) || A2($elm$core$String$contains, '@', str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, ':', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t\tA6($elm$url$Url$Url, protocol, str, $elm$core$Maybe$Nothing, path, params, frag));\n\t\t\t} else {\n\t\t\t\tif (!_v0.b.b) {\n\t\t\t\t\tvar i = _v0.a;\n\t\t\t\t\tvar _v1 = $elm$core$String$toInt(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str));\n\t\t\t\t\tif (_v1.$ === 1) {\n\t\t\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar port_ = _v1;\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t\t\t\tA6(\n\t\t\t\t\t\t\t\t$elm$url$Url$Url,\n\t\t\t\t\t\t\t\tprotocol,\n\t\t\t\t\t\t\t\tA2($elm$core$String$left, i, str),\n\t\t\t\t\t\t\t\tport_,\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tparams,\n\t\t\t\t\t\t\t\tfrag));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompBeforeQuery = F4(\n\tfunction (protocol, params, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '/', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A5($elm$url$Url$chompBeforePath, protocol, '/', params, frag, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$url$Url$chompBeforePath,\n\t\t\t\t\tprotocol,\n\t\t\t\t\tA2($elm$core$String$dropLeft, i, str),\n\t\t\t\t\tparams,\n\t\t\t\t\tfrag,\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompBeforeFragment = F3(\n\tfunction (protocol, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '?', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A4($elm$url$Url$chompBeforeQuery, protocol, $elm$core$Maybe$Nothing, frag, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A4(\n\t\t\t\t\t$elm$url$Url$chompBeforeQuery,\n\t\t\t\t\tprotocol,\n\t\t\t\t\t$elm$core$Maybe$Just(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str)),\n\t\t\t\t\tfrag,\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompAfterProtocol = F2(\n\tfunction (protocol, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '#', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A3($elm$url$Url$chompBeforeFragment, protocol, $elm$core$Maybe$Nothing, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$url$Url$chompBeforeFragment,\n\t\t\t\t\tprotocol,\n\t\t\t\t\t$elm$core$Maybe$Just(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str)),\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$String$startsWith = _String_startsWith;\nvar $elm$url$Url$fromString = function (str) {\n\treturn A2($elm$core$String$startsWith, 'http://', str) ? A2(\n\t\t$elm$url$Url$chompAfterProtocol,\n\t\t0,\n\t\tA2($elm$core$String$dropLeft, 7, str)) : (A2($elm$core$String$startsWith, 'https://', str) ? A2(\n\t\t$elm$url$Url$chompAfterProtocol,\n\t\t1,\n\t\tA2($elm$core$String$dropLeft, 8, str)) : $elm$core$Maybe$Nothing);\n};\nvar $elm$core$Basics$never = function (_v0) {\n\tnever:\n\twhile (true) {\n\t\tvar nvr = _v0;\n\t\tvar $temp$_v0 = nvr;\n\t\t_v0 = $temp$_v0;\n\t\tcontinue never;\n\t}\n};\nvar $elm$core$Task$Perform = $elm$core$Basics$identity;\nvar $elm$core$Task$succeed = _Scheduler_succeed;\nvar $elm$core$Task$init = $elm$core$Task$succeed(0);\nvar $elm$core$List$foldrHelper = F4(\n\tfunction (fn, acc, ctr, ls) {\n\t\tif (!ls.b) {\n\t\t\treturn acc;\n\t\t} else {\n\t\t\tvar a = ls.a;\n\t\t\tvar r1 = ls.b;\n\t\t\tif (!r1.b) {\n\t\t\t\treturn A2(fn, a, acc);\n\t\t\t} else {\n\t\t\t\tvar b = r1.a;\n\t\t\t\tvar r2 = r1.b;\n\t\t\t\tif (!r2.b) {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\tfn,\n\t\t\t\t\t\ta,\n\t\t\t\t\t\tA2(fn, b, acc));\n\t\t\t\t} else {\n\t\t\t\t\tvar c = r2.a;\n\t\t\t\t\tvar r3 = r2.b;\n\t\t\t\t\tif (!r3.b) {\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\ta,\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\tb,\n\t\t\t\t\t\t\t\tA2(fn, c, acc)));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar d = r3.a;\n\t\t\t\t\t\tvar r4 = r3.b;\n\t\t\t\t\t\tvar res = (ctr > 500) ? A3(\n\t\t\t\t\t\t\t$elm$core$List$foldl,\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\tacc,\n\t\t\t\t\t\t\t$elm$core$List$reverse(r4)) : A4($elm$core$List$foldrHelper, fn, acc, ctr + 1, r4);\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\ta,\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\tb,\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\t\tc,\n\t\t\t\t\t\t\t\t\tA2(fn, d, res))));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$foldr = F3(\n\tfunction (fn, acc, ls) {\n\t\treturn A4($elm$core$List$foldrHelper, fn, acc, 0, ls);\n\t});\nvar $elm$core$List$map = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\tF2(\n\t\t\t\tfunction (x, acc) {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t\tf(x),\n\t\t\t\t\t\tacc);\n\t\t\t\t}),\n\t\t\t_List_Nil,\n\t\t\txs);\n\t});\nvar $elm$core$Task$andThen = _Scheduler_andThen;\nvar $elm$core$Task$map = F2(\n\tfunction (func, taskA) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (a) {\n\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\tfunc(a));\n\t\t\t},\n\t\t\ttaskA);\n\t});\nvar $elm$core$Task$map2 = F3(\n\tfunction (func, taskA, taskB) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (a) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\tfunction (b) {\n\t\t\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\t\t\tA2(func, a, b));\n\t\t\t\t\t},\n\t\t\t\t\ttaskB);\n\t\t\t},\n\t\t\ttaskA);\n\t});\nvar $elm$core$Task$sequence = function (tasks) {\n\treturn A3(\n\t\t$elm$core$List$foldr,\n\t\t$elm$core$Task$map2($elm$core$List$cons),\n\t\t$elm$core$Task$succeed(_List_Nil),\n\t\ttasks);\n};\nvar $elm$core$Platform$sendToApp = _Platform_sendToApp;\nvar $elm$core$Task$spawnCmd = F2(\n\tfunction (router, _v0) {\n\t\tvar task = _v0;\n\t\treturn _Scheduler_spawn(\n\t\t\tA2(\n\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t$elm$core$Platform$sendToApp(router),\n\t\t\t\ttask));\n\t});\nvar $elm$core$Task$onEffects = F3(\n\tfunction (router, commands, state) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$map,\n\t\t\tfunction (_v0) {\n\t\t\t\treturn 0;\n\t\t\t},\n\t\t\t$elm$core$Task$sequence(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t$elm$core$Task$spawnCmd(router),\n\t\t\t\t\tcommands)));\n\t});\nvar $elm$core$Task$onSelfMsg = F3(\n\tfunction (_v0, _v1, _v2) {\n\t\treturn $elm$core$Task$succeed(0);\n\t});\nvar $elm$core$Task$cmdMap = F2(\n\tfunction (tagger, _v0) {\n\t\tvar task = _v0;\n\t\treturn A2($elm$core$Task$map, tagger, task);\n\t});\n_Platform_effectManagers['Task'] = _Platform_createManager($elm$core$Task$init, $elm$core$Task$onEffects, $elm$core$Task$onSelfMsg, $elm$core$Task$cmdMap);\nvar $elm$core$Task$command = _Platform_leaf('Task');\nvar $elm$core$Task$perform = F2(\n\tfunction (toMessage, task) {\n\t\treturn $elm$core$Task$command(\n\t\t\tA2($elm$core$Task$map, toMessage, task));\n\t});\nvar $elm$browser$Browser$application = _Browser_application;\nvar $elm$core$Basics$composeR = F3(\n\tfunction (f, g, x) {\n\t\treturn g(\n\t\t\tf(x));\n\t});\nvar $author$project$Main$Model = F2(\n\tfunction (shared, page) {\n\t\treturn {C: page, x: shared};\n\t});\nvar $author$project$Main$Pages = function (a) {\n\treturn {$: 3, a: a};\n};\nvar $author$project$Main$Shared = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$core$Platform$Cmd$batch = _Platform_batch;\nvar $author$project$Spa$Generated$Route$NotFound = {$: 2};\nvar $elm$url$Url$Parser$State = F5(\n\tfunction (visited, unvisited, params, frag, value) {\n\t\treturn {S: frag, fA: params, N: unvisited, ez: value, W: visited};\n\t});\nvar $elm$url$Url$Parser$getFirstMatch = function (states) {\n\tgetFirstMatch:\n\twhile (true) {\n\t\tif (!states.b) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar state = states.a;\n\t\t\tvar rest = states.b;\n\t\t\tvar _v1 = state.N;\n\t\t\tif (!_v1.b) {\n\t\t\t\treturn $elm$core$Maybe$Just(state.ez);\n\t\t\t} else {\n\t\t\t\tif ((_v1.a === '') && (!_v1.b.b)) {\n\t\t\t\t\treturn $elm$core$Maybe$Just(state.ez);\n\t\t\t\t} else {\n\t\t\t\t\tvar $temp$states = rest;\n\t\t\t\t\tstates = $temp$states;\n\t\t\t\t\tcontinue getFirstMatch;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\nvar $elm$url$Url$Parser$removeFinalEmpty = function (segments) {\n\tif (!segments.b) {\n\t\treturn _List_Nil;\n\t} else {\n\t\tif ((segments.a === '') && (!segments.b.b)) {\n\t\t\treturn _List_Nil;\n\t\t} else {\n\t\t\tvar segment = segments.a;\n\t\t\tvar rest = segments.b;\n\t\t\treturn A2(\n\t\t\t\t$elm$core$List$cons,\n\t\t\t\tsegment,\n\t\t\t\t$elm$url$Url$Parser$removeFinalEmpty(rest));\n\t\t}\n\t}\n};\nvar $elm$url$Url$Parser$preparePath = function (path) {\n\tvar _v0 = A2($elm$core$String$split, '/', path);\n\tif (_v0.b && (_v0.a === '')) {\n\t\tvar segments = _v0.b;\n\t\treturn $elm$url$Url$Parser$removeFinalEmpty(segments);\n\t} else {\n\t\tvar segments = _v0;\n\t\treturn $elm$url$Url$Parser$removeFinalEmpty(segments);\n\t}\n};\nvar $elm$url$Url$Parser$addToParametersHelp = F2(\n\tfunction (value, maybeList) {\n\t\tif (maybeList.$ === 1) {\n\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[value]));\n\t\t} else {\n\t\t\tvar list = maybeList.a;\n\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\tA2($elm$core$List$cons, value, list));\n\t\t}\n\t});\nvar $elm$url$Url$percentDecode = _Url_percentDecode;\nvar $elm$core$Basics$compare = _Utils_compare;\nvar $elm$core$Dict$get = F2(\n\tfunction (targetKey, dict) {\n\t\tget:\n\t\twhile (true) {\n\t\t\tif (dict.$ === -2) {\n\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t} else {\n\t\t\t\tvar key = dict.b;\n\t\t\t\tvar value = dict.c;\n\t\t\t\tvar left = dict.d;\n\t\t\t\tvar right = dict.e;\n\t\t\t\tvar _v1 = A2($elm$core$Basics$compare, targetKey, key);\n\t\t\t\tswitch (_v1) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tvar $temp$targetKey = targetKey,\n\t\t\t\t\t\t\t$temp$dict = left;\n\t\t\t\t\t\ttargetKey = $temp$targetKey;\n\t\t\t\t\t\tdict = $temp$dict;\n\t\t\t\t\t\tcontinue get;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(value);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar $temp$targetKey = targetKey,\n\t\t\t\t\t\t\t$temp$dict = right;\n\t\t\t\t\t\ttargetKey = $temp$targetKey;\n\t\t\t\t\t\tdict = $temp$dict;\n\t\t\t\t\t\tcontinue get;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$Black = 1;\nvar $elm$core$Dict$RBNode_elm_builtin = F5(\n\tfunction (a, b, c, d, e) {\n\t\treturn {$: -1, a: a, b: b, c: c, d: d, e: e};\n\t});\nvar $elm$core$Dict$RBEmpty_elm_builtin = {$: -2};\nvar $elm$core$Dict$Red = 0;\nvar $elm$core$Dict$balance = F5(\n\tfunction (color, key, value, left, right) {\n\t\tif ((right.$ === -1) && (!right.a)) {\n\t\t\tvar _v1 = right.a;\n\t\t\tvar rK = right.b;\n\t\t\tvar rV = right.c;\n\t\t\tvar rLeft = right.d;\n\t\t\tvar rRight = right.e;\n\t\t\tif ((left.$ === -1) && (!left.a)) {\n\t\t\t\tvar _v3 = left.a;\n\t\t\t\tvar lK = left.b;\n\t\t\t\tvar lV = left.c;\n\t\t\t\tvar lLeft = left.d;\n\t\t\t\tvar lRight = left.e;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t0,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\tcolor,\n\t\t\t\t\trK,\n\t\t\t\t\trV,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, left, rLeft),\n\t\t\t\t\trRight);\n\t\t\t}\n\t\t} else {\n\t\t\tif ((((left.$ === -1) && (!left.a)) && (left.d.$ === -1)) && (!left.d.a)) {\n\t\t\t\tvar _v5 = left.a;\n\t\t\t\tvar lK = left.b;\n\t\t\t\tvar lV = left.c;\n\t\t\t\tvar _v6 = left.d;\n\t\t\t\tvar _v7 = _v6.a;\n\t\t\t\tvar llK = _v6.b;\n\t\t\t\tvar llV = _v6.c;\n\t\t\t\tvar llLeft = _v6.d;\n\t\t\t\tvar llRight = _v6.e;\n\t\t\t\tvar lRight = left.e;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t0,\n\t\t\t\t\tlK,\n\t\t\t\t\tlV,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, llK, llV, llLeft, llRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, key, value, lRight, right));\n\t\t\t} else {\n\t\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right);\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$insertHelp = F3(\n\tfunction (key, value, dict) {\n\t\tif (dict.$ === -2) {\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin);\n\t\t} else {\n\t\t\tvar nColor = dict.a;\n\t\t\tvar nKey = dict.b;\n\t\t\tvar nValue = dict.c;\n\t\t\tvar nLeft = dict.d;\n\t\t\tvar nRight = dict.e;\n\t\t\tvar _v1 = A2($elm$core$Basics$compare, key, nKey);\n\t\t\tswitch (_v1) {\n\t\t\t\tcase 0:\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\tA3($elm$core$Dict$insertHelp, key, value, nLeft),\n\t\t\t\t\t\tnRight);\n\t\t\t\tcase 1:\n\t\t\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight);\n\t\t\t\tdefault:\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\tnLeft,\n\t\t\t\t\t\tA3($elm$core$Dict$insertHelp, key, value, nRight));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$insert = F3(\n\tfunction (key, value, dict) {\n\t\tvar _v0 = A3($elm$core$Dict$insertHelp, key, value, dict);\n\t\tif ((_v0.$ === -1) && (!_v0.a)) {\n\t\t\tvar _v1 = _v0.a;\n\t\t\tvar k = _v0.b;\n\t\t\tvar v = _v0.c;\n\t\t\tvar l = _v0.d;\n\t\t\tvar r = _v0.e;\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, 1, k, v, l, r);\n\t\t} else {\n\t\t\tvar x = _v0;\n\t\t\treturn x;\n\t\t}\n\t});\nvar $elm$core$Dict$getMin = function (dict) {\n\tgetMin:\n\twhile (true) {\n\t\tif ((dict.$ === -1) && (dict.d.$ === -1)) {\n\t\t\tvar left = dict.d;\n\t\t\tvar $temp$dict = left;\n\t\t\tdict = $temp$dict;\n\t\t\tcontinue getMin;\n\t\t} else {\n\t\t\treturn dict;\n\t\t}\n\t}\n};\nvar $elm$core$Dict$moveRedLeft = function (dict) {\n\tif (((dict.$ === -1) && (dict.d.$ === -1)) && (dict.e.$ === -1)) {\n\t\tif ((dict.e.d.$ === -1) && (!dict.e.d.a)) {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v1 = dict.d;\n\t\t\tvar lClr = _v1.a;\n\t\t\tvar lK = _v1.b;\n\t\t\tvar lV = _v1.c;\n\t\t\tvar lLeft = _v1.d;\n\t\t\tvar lRight = _v1.e;\n\t\t\tvar _v2 = dict.e;\n\t\t\tvar rClr = _v2.a;\n\t\t\tvar rK = _v2.b;\n\t\t\tvar rV = _v2.c;\n\t\t\tvar rLeft = _v2.d;\n\t\t\tvar _v3 = rLeft.a;\n\t\t\tvar rlK = rLeft.b;\n\t\t\tvar rlV = rLeft.c;\n\t\t\tvar rlL = rLeft.d;\n\t\t\tvar rlR = rLeft.e;\n\t\t\tvar rRight = _v2.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t0,\n\t\t\t\trlK,\n\t\t\t\trlV,\n\t\t\t\tA5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\trlL),\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, rK, rV, rlR, rRight));\n\t\t} else {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v4 = dict.d;\n\t\t\tvar lClr = _v4.a;\n\t\t\tvar lK = _v4.b;\n\t\t\tvar lV = _v4.c;\n\t\t\tvar lLeft = _v4.d;\n\t\t\tvar lRight = _v4.e;\n\t\t\tvar _v5 = dict.e;\n\t\t\tvar rClr = _v5.a;\n\t\t\tvar rK = _v5.b;\n\t\t\tvar rV = _v5.c;\n\t\t\tvar rLeft = _v5.d;\n\t\t\tvar rRight = _v5.e;\n\t\t\tif (clr === 1) {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn dict;\n\t}\n};\nvar $elm$core$Dict$moveRedRight = function (dict) {\n\tif (((dict.$ === -1) && (dict.d.$ === -1)) && (dict.e.$ === -1)) {\n\t\tif ((dict.d.d.$ === -1) && (!dict.d.d.a)) {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v1 = dict.d;\n\t\t\tvar lClr = _v1.a;\n\t\t\tvar lK = _v1.b;\n\t\t\tvar lV = _v1.c;\n\t\t\tvar _v2 = _v1.d;\n\t\t\tvar _v3 = _v2.a;\n\t\t\tvar llK = _v2.b;\n\t\t\tvar llV = _v2.c;\n\t\t\tvar llLeft = _v2.d;\n\t\t\tvar llRight = _v2.e;\n\t\t\tvar lRight = _v1.e;\n\t\t\tvar _v4 = dict.e;\n\t\t\tvar rClr = _v4.a;\n\t\t\tvar rK = _v4.b;\n\t\t\tvar rV = _v4.c;\n\t\t\tvar rLeft = _v4.d;\n\t\t\tvar rRight = _v4.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t0,\n\t\t\t\tlK,\n\t\t\t\tlV,\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, llK, llV, llLeft, llRight),\n\t\t\t\tA5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tlRight,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight)));\n\t\t} else {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v5 = dict.d;\n\t\t\tvar lClr = _v5.a;\n\t\t\tvar lK = _v5.b;\n\t\t\tvar lV = _v5.c;\n\t\t\tvar lLeft = _v5.d;\n\t\t\tvar lRight = _v5.e;\n\t\t\tvar _v6 = dict.e;\n\t\t\tvar rClr = _v6.a;\n\t\t\tvar rK = _v6.b;\n\t\t\tvar rV = _v6.c;\n\t\t\tvar rLeft = _v6.d;\n\t\t\tvar rRight = _v6.e;\n\t\t\tif (clr === 1) {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn dict;\n\t}\n};\nvar $elm$core$Dict$removeHelpPrepEQGT = F7(\n\tfunction (targetKey, dict, color, key, value, left, right) {\n\t\tif ((left.$ === -1) && (!left.a)) {\n\t\t\tvar _v1 = left.a;\n\t\t\tvar lK = left.b;\n\t\t\tvar lV = left.c;\n\t\t\tvar lLeft = left.d;\n\t\t\tvar lRight = left.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\tcolor,\n\t\t\t\tlK,\n\t\t\t\tlV,\n\t\t\t\tlLeft,\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, lRight, right));\n\t\t} else {\n\t\t\t_v2$2:\n\t\t\twhile (true) {\n\t\t\t\tif ((right.$ === -1) && (right.a === 1)) {\n\t\t\t\t\tif (right.d.$ === -1) {\n\t\t\t\t\t\tif (right.d.a === 1) {\n\t\t\t\t\t\t\tvar _v3 = right.a;\n\t\t\t\t\t\t\tvar _v4 = right.d;\n\t\t\t\t\t\t\tvar _v5 = _v4.a;\n\t\t\t\t\t\t\treturn $elm$core$Dict$moveRedRight(dict);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbreak _v2$2;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _v6 = right.a;\n\t\t\t\t\t\tvar _v7 = right.d;\n\t\t\t\t\t\treturn $elm$core$Dict$moveRedRight(dict);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tbreak _v2$2;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dict;\n\t\t}\n\t});\nvar $elm$core$Dict$removeMin = function (dict) {\n\tif ((dict.$ === -1) && (dict.d.$ === -1)) {\n\t\tvar color = dict.a;\n\t\tvar key = dict.b;\n\t\tvar value = dict.c;\n\t\tvar left = dict.d;\n\t\tvar lColor = left.a;\n\t\tvar lLeft = left.d;\n\t\tvar right = dict.e;\n\t\tif (lColor === 1) {\n\t\t\tif ((lLeft.$ === -1) && (!lLeft.a)) {\n\t\t\t\tvar _v3 = lLeft.a;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\tcolor,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\t$elm$core$Dict$removeMin(left),\n\t\t\t\t\tright);\n\t\t\t} else {\n\t\t\t\tvar _v4 = $elm$core$Dict$moveRedLeft(dict);\n\t\t\t\tif (_v4.$ === -1) {\n\t\t\t\t\tvar nColor = _v4.a;\n\t\t\t\t\tvar nKey = _v4.b;\n\t\t\t\t\tvar nValue = _v4.c;\n\t\t\t\t\tvar nLeft = _v4.d;\n\t\t\t\t\tvar nRight = _v4.e;\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\t$elm$core$Dict$removeMin(nLeft),\n\t\t\t\t\t\tnRight);\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\tcolor,\n\t\t\t\tkey,\n\t\t\t\tvalue,\n\t\t\t\t$elm$core$Dict$removeMin(left),\n\t\t\t\tright);\n\t\t}\n\t} else {\n\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t}\n};\nvar $elm$core$Dict$removeHelp = F2(\n\tfunction (targetKey, dict) {\n\t\tif (dict.$ === -2) {\n\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t} else {\n\t\t\tvar color = dict.a;\n\t\t\tvar key = dict.b;\n\t\t\tvar value = dict.c;\n\t\t\tvar left = dict.d;\n\t\t\tvar right = dict.e;\n\t\t\tif (_Utils_cmp(targetKey, key) < 0) {\n\t\t\t\tif ((left.$ === -1) && (left.a === 1)) {\n\t\t\t\t\tvar _v4 = left.a;\n\t\t\t\t\tvar lLeft = left.d;\n\t\t\t\t\tif ((lLeft.$ === -1) && (!lLeft.a)) {\n\t\t\t\t\t\tvar _v6 = lLeft.a;\n\t\t\t\t\t\treturn A5(\n\t\t\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t\t\tcolor,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, left),\n\t\t\t\t\t\t\tright);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _v7 = $elm$core$Dict$moveRedLeft(dict);\n\t\t\t\t\t\tif (_v7.$ === -1) {\n\t\t\t\t\t\t\tvar nColor = _v7.a;\n\t\t\t\t\t\t\tvar nKey = _v7.b;\n\t\t\t\t\t\t\tvar nValue = _v7.c;\n\t\t\t\t\t\t\tvar nLeft = _v7.d;\n\t\t\t\t\t\t\tvar nRight = _v7.e;\n\t\t\t\t\t\t\treturn A5(\n\t\t\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\t\t\tnColor,\n\t\t\t\t\t\t\t\tnKey,\n\t\t\t\t\t\t\t\tnValue,\n\t\t\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, nLeft),\n\t\t\t\t\t\t\t\tnRight);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, left),\n\t\t\t\t\t\tright);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Dict$removeHelpEQGT,\n\t\t\t\t\ttargetKey,\n\t\t\t\t\tA7($elm$core$Dict$removeHelpPrepEQGT, targetKey, dict, color, key, value, left, right));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$removeHelpEQGT = F2(\n\tfunction (targetKey, dict) {\n\t\tif (dict.$ === -1) {\n\t\t\tvar color = dict.a;\n\t\t\tvar key = dict.b;\n\t\t\tvar value = dict.c;\n\t\t\tvar left = dict.d;\n\t\t\tvar right = dict.e;\n\t\t\tif (_Utils_eq(targetKey, key)) {\n\t\t\t\tvar _v1 = $elm$core$Dict$getMin(right);\n\t\t\t\tif (_v1.$ === -1) {\n\t\t\t\t\tvar minKey = _v1.b;\n\t\t\t\t\tvar minValue = _v1.c;\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tminKey,\n\t\t\t\t\t\tminValue,\n\t\t\t\t\t\tleft,\n\t\t\t\t\t\t$elm$core$Dict$removeMin(right));\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\tcolor,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tleft,\n\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, right));\n\t\t\t}\n\t\t} else {\n\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t}\n\t});\nvar $elm$core$Dict$remove = F2(\n\tfunction (key, dict) {\n\t\tvar _v0 = A2($elm$core$Dict$removeHelp, key, dict);\n\t\tif ((_v0.$ === -1) && (!_v0.a)) {\n\t\t\tvar _v1 = _v0.a;\n\t\t\tvar k = _v0.b;\n\t\t\tvar v = _v0.c;\n\t\t\tvar l = _v0.d;\n\t\t\tvar r = _v0.e;\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, 1, k, v, l, r);\n\t\t} else {\n\t\t\tvar x = _v0;\n\t\t\treturn x;\n\t\t}\n\t});\nvar $elm$core$Dict$update = F3(\n\tfunction (targetKey, alter, dictionary) {\n\t\tvar _v0 = alter(\n\t\t\tA2($elm$core$Dict$get, targetKey, dictionary));\n\t\tif (!_v0.$) {\n\t\t\tvar value = _v0.a;\n\t\t\treturn A3($elm$core$Dict$insert, targetKey, value, dictionary);\n\t\t} else {\n\t\t\treturn A2($elm$core$Dict$remove, targetKey, dictionary);\n\t\t}\n\t});\nvar $elm$url$Url$Parser$addParam = F2(\n\tfunction (segment, dict) {\n\t\tvar _v0 = A2($elm$core$String$split, '=', segment);\n\t\tif ((_v0.b && _v0.b.b) && (!_v0.b.b.b)) {\n\t\t\tvar rawKey = _v0.a;\n\t\t\tvar _v1 = _v0.b;\n\t\t\tvar rawValue = _v1.a;\n\t\t\tvar _v2 = $elm$url$Url$percentDecode(rawKey);\n\t\t\tif (_v2.$ === 1) {\n\t\t\t\treturn dict;\n\t\t\t} else {\n\t\t\t\tvar key = _v2.a;\n\t\t\t\tvar _v3 = $elm$url$Url$percentDecode(rawValue);\n\t\t\t\tif (_v3.$ === 1) {\n\t\t\t\t\treturn dict;\n\t\t\t\t} else {\n\t\t\t\t\tvar value = _v3.a;\n\t\t\t\t\treturn A3(\n\t\t\t\t\t\t$elm$core$Dict$update,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\t$elm$url$Url$Parser$addToParametersHelp(value),\n\t\t\t\t\t\tdict);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn dict;\n\t\t}\n\t});\nvar $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin;\nvar $elm$url$Url$Parser$prepareQuery = function (maybeQuery) {\n\tif (maybeQuery.$ === 1) {\n\t\treturn $elm$core$Dict$empty;\n\t} else {\n\t\tvar qry = maybeQuery.a;\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\t$elm$url$Url$Parser$addParam,\n\t\t\t$elm$core$Dict$empty,\n\t\t\tA2($elm$core$String$split, '&', qry));\n\t}\n};\nvar $elm$url$Url$Parser$parse = F2(\n\tfunction (_v0, url) {\n\t\tvar parser = _v0;\n\t\treturn $elm$url$Url$Parser$getFirstMatch(\n\t\t\tparser(\n\t\t\t\tA5(\n\t\t\t\t\t$elm$url$Url$Parser$State,\n\t\t\t\t\t_List_Nil,\n\t\t\t\t\t$elm$url$Url$Parser$preparePath(url.dY),\n\t\t\t\t\t$elm$url$Url$Parser$prepareQuery(url.cT),\n\t\t\t\t\turl.dx,\n\t\t\t\t\t$elm$core$Basics$identity)));\n\t});\nvar $author$project$Spa$Generated$Route$Login = {$: 1};\nvar $author$project$Spa$Generated$Route$Profile__Username_String = function (a) {\n\treturn {$: 6, a: a};\n};\nvar $author$project$Spa$Generated$Route$Projects = {$: 3};\nvar $author$project$Spa$Generated$Route$Register = {$: 4};\nvar $author$project$Spa$Generated$Route$Settings = {$: 5};\nvar $author$project$Spa$Generated$Route$Top = {$: 0};\nvar $elm$url$Url$Parser$Parser = $elm$core$Basics$identity;\nvar $elm$url$Url$Parser$mapState = F2(\n\tfunction (func, _v0) {\n\t\tvar visited = _v0.W;\n\t\tvar unvisited = _v0.N;\n\t\tvar params = _v0.fA;\n\t\tvar frag = _v0.S;\n\t\tvar value = _v0.ez;\n\t\treturn A5(\n\t\t\t$elm$url$Url$Parser$State,\n\t\t\tvisited,\n\t\t\tunvisited,\n\t\t\tparams,\n\t\t\tfrag,\n\t\t\tfunc(value));\n\t});\nvar $elm$url$Url$Parser$map = F2(\n\tfunction (subValue, _v0) {\n\t\tvar parseArg = _v0;\n\t\treturn function (_v1) {\n\t\t\tvar visited = _v1.W;\n\t\t\tvar unvisited = _v1.N;\n\t\t\tvar params = _v1.fA;\n\t\t\tvar frag = _v1.S;\n\t\t\tvar value = _v1.ez;\n\t\t\treturn A2(\n\t\t\t\t$elm$core$List$map,\n\t\t\t\t$elm$url$Url$Parser$mapState(value),\n\t\t\t\tparseArg(\n\t\t\t\t\tA5($elm$url$Url$Parser$State, visited, unvisited, params, frag, subValue)));\n\t\t};\n\t});\nvar $elm$core$List$append = F2(\n\tfunction (xs, ys) {\n\t\tif (!ys.b) {\n\t\t\treturn xs;\n\t\t} else {\n\t\t\treturn A3($elm$core$List$foldr, $elm$core$List$cons, ys, xs);\n\t\t}\n\t});\nvar $elm$core$List$concat = function (lists) {\n\treturn A3($elm$core$List$foldr, $elm$core$List$append, _List_Nil, lists);\n};\nvar $elm$core$List$concatMap = F2(\n\tfunction (f, list) {\n\t\treturn $elm$core$List$concat(\n\t\t\tA2($elm$core$List$map, f, list));\n\t});\nvar $elm$url$Url$Parser$oneOf = function (parsers) {\n\treturn function (state) {\n\t\treturn A2(\n\t\t\t$elm$core$List$concatMap,\n\t\t\tfunction (_v0) {\n\t\t\t\tvar parser = _v0;\n\t\t\t\treturn parser(state);\n\t\t\t},\n\t\t\tparsers);\n\t};\n};\nvar $elm$url$Url$Parser$s = function (str) {\n\treturn function (_v0) {\n\t\tvar visited = _v0.W;\n\t\tvar unvisited = _v0.N;\n\t\tvar params = _v0.fA;\n\t\tvar frag = _v0.S;\n\t\tvar value = _v0.ez;\n\t\tif (!unvisited.b) {\n\t\t\treturn _List_Nil;\n\t\t} else {\n\t\t\tvar next = unvisited.a;\n\t\t\tvar rest = unvisited.b;\n\t\t\treturn _Utils_eq(next, str) ? _List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA5(\n\t\t\t\t\t$elm$url$Url$Parser$State,\n\t\t\t\t\tA2($elm$core$List$cons, next, visited),\n\t\t\t\t\trest,\n\t\t\t\t\tparams,\n\t\t\t\t\tfrag,\n\t\t\t\t\tvalue)\n\t\t\t\t]) : _List_Nil;\n\t\t}\n\t};\n};\nvar $elm$url$Url$Parser$slash = F2(\n\tfunction (_v0, _v1) {\n\t\tvar parseBefore = _v0;\n\t\tvar parseAfter = _v1;\n\t\treturn function (state) {\n\t\t\treturn A2(\n\t\t\t\t$elm$core$List$concatMap,\n\t\t\t\tparseAfter,\n\t\t\t\tparseBefore(state));\n\t\t};\n\t});\nvar $elm$url$Url$Parser$custom = F2(\n\tfunction (tipe, stringToSomething) {\n\t\treturn function (_v0) {\n\t\t\tvar visited = _v0.W;\n\t\t\tvar unvisited = _v0.N;\n\t\t\tvar params = _v0.fA;\n\t\t\tvar frag = _v0.S;\n\t\t\tvar value = _v0.ez;\n\t\t\tif (!unvisited.b) {\n\t\t\t\treturn _List_Nil;\n\t\t\t} else {\n\t\t\t\tvar next = unvisited.a;\n\t\t\t\tvar rest = unvisited.b;\n\t\t\t\tvar _v2 = stringToSomething(next);\n\t\t\t\tif (!_v2.$) {\n\t\t\t\t\tvar nextValue = _v2.a;\n\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA5(\n\t\t\t\t\t\t\t$elm$url$Url$Parser$State,\n\t\t\t\t\t\t\tA2($elm$core$List$cons, next, visited),\n\t\t\t\t\t\t\trest,\n\t\t\t\t\t\t\tparams,\n\t\t\t\t\t\t\tfrag,\n\t\t\t\t\t\t\tvalue(nextValue))\n\t\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\treturn _List_Nil;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\nvar $elm$url$Url$Parser$string = A2($elm$url$Url$Parser$custom, 'STRING', $elm$core$Maybe$Just);\nvar $elm$url$Url$Parser$top = function (state) {\n\treturn _List_fromArray(\n\t\t[state]);\n};\nvar $author$project$Spa$Generated$Route$routes = $elm$url$Url$Parser$oneOf(\n\t_List_fromArray(\n\t\t[\n\t\t\tA2($elm$url$Url$Parser$map, $author$project$Spa$Generated$Route$Top, $elm$url$Url$Parser$top),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Login,\n\t\t\t$elm$url$Url$Parser$s('login')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$NotFound,\n\t\t\t$elm$url$Url$Parser$s('not-found')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Projects,\n\t\t\t$elm$url$Url$Parser$s('projects')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Register,\n\t\t\t$elm$url$Url$Parser$s('register')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Settings,\n\t\t\t$elm$url$Url$Parser$s('settings')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Profile__Username_String,\n\t\t\tA2(\n\t\t\t\t$elm$url$Url$Parser$map,\n\t\t\t\tfunction (username) {\n\t\t\t\t\treturn {cg: username};\n\t\t\t\t},\n\t\t\t\tA2(\n\t\t\t\t\t$elm$url$Url$Parser$slash,\n\t\t\t\t\t$elm$url$Url$Parser$s('profile'),\n\t\t\t\t\t$elm$url$Url$Parser$string)))\n\t\t]));\nvar $author$project$Spa$Generated$Route$fromUrl = $elm$url$Url$Parser$parse($author$project$Spa$Generated$Route$routes);\nvar $elm$core$Maybe$withDefault = F2(\n\tfunction (_default, maybe) {\n\t\tif (!maybe.$) {\n\t\t\tvar value = maybe.a;\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn _default;\n\t\t}\n\t});\nvar $author$project$Utils$Route$fromUrl = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Route$fromUrl,\n\t$elm$core$Maybe$withDefault($author$project$Spa$Generated$Route$NotFound));\nvar $author$project$Shared$Model = F3(\n\tfunction (url, key, user) {\n\t\treturn {fc: key, f_: url, O: user};\n\t});\nvar $elm$json$Json$Decode$decodeValue = _Json_run;\nvar $author$project$Api$User$User = F3(\n\tfunction (email, token, username) {\n\t\treturn {av: email, da: token, cg: username};\n\t});\nvar $author$project$Api$Token$Token = $elm$core$Basics$identity;\nvar $elm$json$Json$Decode$string = _Json_decodeString;\nvar $author$project$Api$Token$decoder = A2($elm$json$Json$Decode$map, $elm$core$Basics$identity, $elm$json$Json$Decode$string);\nvar $elm$json$Json$Decode$field = _Json_decodeField;\nvar $elm$json$Json$Decode$map3 = _Json_map3;\nvar $author$project$Api$User$decoder = A4(\n\t$elm$json$Json$Decode$map3,\n\t$author$project$Api$User$User,\n\tA2($elm$json$Json$Decode$field, 'email', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'token', $author$project$Api$Token$decoder),\n\tA2($elm$json$Json$Decode$field, 'username', $elm$json$Json$Decode$string));\nvar $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil);\nvar $elm$core$Result$toMaybe = function (result) {\n\tif (!result.$) {\n\t\tvar v = result.a;\n\t\treturn $elm$core$Maybe$Just(v);\n\t} else {\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n};\nvar $author$project$Shared$init = F3(\n\tfunction (json, url, key) {\n\t\tvar user = $elm$core$Result$toMaybe(\n\t\t\tA2(\n\t\t\t\t$elm$json$Json$Decode$decodeValue,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder),\n\t\t\t\tjson));\n\t\treturn _Utils_Tuple2(\n\t\t\tA3($author$project$Shared$Model, url, key, user),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Spa$Generated$Pages$Login__Model = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Login__Msg = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $author$project$Spa$Generated$Pages$NotFound__Model = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Spa$Generated$Pages$NotFound__Msg = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Profile__Username_String__Model = function (a) {\n\treturn {$: 6, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Profile__Username_String__Msg = function (a) {\n\treturn {$: 6, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Projects__Model = function (a) {\n\treturn {$: 3, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Projects__Msg = function (a) {\n\treturn {$: 3, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Register__Model = function (a) {\n\treturn {$: 4, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Register__Msg = function (a) {\n\treturn {$: 4, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Settings__Model = function (a) {\n\treturn {$: 5, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Settings__Msg = function (a) {\n\treturn {$: 5, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Top__Model = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Top__Msg = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Spa$Page$application = function (page) {\n\treturn page;\n};\nvar $author$project$Pages$Login$Model = F5(\n\tfunction (user, key, url, email, password) {\n\t\treturn {av: email, fc: key, cO: password, f_: url, O: user};\n\t});\nvar $author$project$Api$Data$NotAsked = {$: 0};\nvar $author$project$Api$Data$Success = function (a) {\n\treturn {$: 3, a: a};\n};\nvar $author$project$Pages$Login$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar key = _v0.fc;\n\t\treturn _Utils_Tuple2(\n\t\t\tA5(\n\t\t\t\t$author$project$Pages$Login$Model,\n\t\t\t\tfunction () {\n\t\t\t\t\tvar _v1 = shared.O;\n\t\t\t\t\tif (!_v1.$) {\n\t\t\t\t\t\tvar user = _v1.a;\n\t\t\t\t\t\treturn $author$project$Api$Data$Success(user);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn $author$project$Api$Data$NotAsked;\n\t\t\t\t\t}\n\t\t\t\t}(),\n\t\t\t\tkey,\n\t\t\t\tshared.f_,\n\t\t\t\t'',\n\t\t\t\t''),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Login$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Api$Data$toMaybe = function (data) {\n\tif (data.$ === 3) {\n\t\tvar value = data.a;\n\t\treturn $elm$core$Maybe$Just(value);\n\t} else {\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n};\nvar $author$project$Pages$Login$save = F2(\n\tfunction (model, shared) {\n\t\treturn _Utils_update(\n\t\t\tshared,\n\t\t\t{\n\t\t\t\tO: function () {\n\t\t\t\t\tvar _v0 = $author$project$Api$Data$toMaybe(model.O);\n\t\t\t\t\tif (!_v0.$) {\n\t\t\t\t\t\tvar user = _v0.a;\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(user);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn shared.O;\n\t\t\t\t\t}\n\t\t\t\t}()\n\t\t\t});\n\t});\nvar $elm$core$Platform$Sub$batch = _Platform_batch;\nvar $elm$core$Platform$Sub$none = $elm$core$Platform$Sub$batch(_List_Nil);\nvar $author$project$Pages$Login$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Login$GotUser = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$json$Json$Decode$decodeString = _Json_runOnString;\nvar $elm$json$Json$Decode$keyValuePairs = _Json_decodeKeyValuePairs;\nvar $elm$json$Json$Decode$list = _Json_decodeList;\nvar $author$project$Api$Data$errorDecoder = A2(\n\t$elm$json$Json$Decode$map,\n\t$elm$core$List$concatMap(\n\t\tfunction (_v0) {\n\t\t\tvar key = _v0.a;\n\t\t\tvar values = _v0.b;\n\t\t\treturn A2(\n\t\t\t\t$elm$core$List$map,\n\t\t\t\tfunction (value) {\n\t\t\t\t\treturn key + (' ' + value);\n\t\t\t\t},\n\t\t\t\tvalues);\n\t\t}),\n\tA2(\n\t\t$elm$json$Json$Decode$field,\n\t\t'errors',\n\t\t$elm$json$Json$Decode$keyValuePairs(\n\t\t\t$elm$json$Json$Decode$list($elm$json$Json$Decode$string))));\nvar $elm$http$Http$BadStatus_ = F2(\n\tfunction (a, b) {\n\t\treturn {$: 3, a: a, b: b};\n\t});\nvar $elm$http$Http$BadUrl_ = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$http$Http$GoodStatus_ = F2(\n\tfunction (a, b) {\n\t\treturn {$: 4, a: a, b: b};\n\t});\nvar $elm$http$Http$NetworkError_ = {$: 2};\nvar $elm$http$Http$Receiving = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$http$Http$Sending = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$http$Http$Timeout_ = {$: 1};\nvar $elm$core$Maybe$isJust = function (maybe) {\n\tif (!maybe.$) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$core$Platform$sendToSelf = _Platform_sendToSelf;\nvar $elm$http$Http$expectStringResponse = F2(\n\tfunction (toMsg, toResult) {\n\t\treturn A3(\n\t\t\t_Http_expect,\n\t\t\t'',\n\t\t\t$elm$core$Basics$identity,\n\t\t\tA2($elm$core$Basics$composeR, toResult, toMsg));\n\t});\nvar $author$project$Api$Data$Failure = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Api$Data$fromResult = function (result) {\n\tif (!result.$) {\n\t\tvar value = result.a;\n\t\treturn $author$project$Api$Data$Success(value);\n\t} else {\n\t\tvar reasons = result.a;\n\t\treturn $author$project$Api$Data$Failure(reasons);\n\t}\n};\nvar $author$project$Api$Data$expectJson = F2(\n\tfunction (toMsg, decoder) {\n\t\treturn A2(\n\t\t\t$elm$http$Http$expectStringResponse,\n\t\t\tA2($elm$core$Basics$composeR, $author$project$Api$Data$fromResult, toMsg),\n\t\t\tfunction (response) {\n\t\t\t\tswitch (response.$) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t['Bad URL']));\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t['Request timeout']));\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t['Connection issues']));\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tvar body = response.b;\n\t\t\t\t\t\tvar _v1 = A2($elm$json$Json$Decode$decodeString, $author$project$Api$Data$errorDecoder, body);\n\t\t\t\t\t\tif (!_v1.$) {\n\t\t\t\t\t\t\tvar errors = _v1.a;\n\t\t\t\t\t\t\treturn $elm$core$Result$Err(errors);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t['Bad status code']));\n\t\t\t\t\t\t}\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar body = response.b;\n\t\t\t\t\t\tvar _v2 = A2($elm$json$Json$Decode$decodeString, decoder, body);\n\t\t\t\t\t\tif (!_v2.$) {\n\t\t\t\t\t\t\tvar value = _v2.a;\n\t\t\t\t\t\t\treturn $elm$core$Result$Ok(value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar err = _v2.a;\n\t\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$json$Json$Decode$errorToString(err)\n\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t});\nvar $author$project$Api$User$loginUrl = function (url) {\n\treturn A2($elm$core$String$contains, 'localhost', url) ? 'http://localhost:8000/auth' : '/auth';\n};\nvar $elm$http$Http$multipartBody = function (parts) {\n\treturn A2(\n\t\t_Http_pair,\n\t\t'',\n\t\t_Http_toFormData(parts));\n};\nvar $elm$http$Http$Request = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$http$Http$State = F2(\n\tfunction (reqs, subs) {\n\t\treturn {d6: reqs, em: subs};\n\t});\nvar $elm$http$Http$init = $elm$core$Task$succeed(\n\tA2($elm$http$Http$State, $elm$core$Dict$empty, _List_Nil));\nvar $elm$core$Process$kill = _Scheduler_kill;\nvar $elm$core$Process$spawn = _Scheduler_spawn;\nvar $elm$http$Http$updateReqs = F3(\n\tfunction (router, cmds, reqs) {\n\t\tupdateReqs:\n\t\twhile (true) {\n\t\t\tif (!cmds.b) {\n\t\t\t\treturn $elm$core$Task$succeed(reqs);\n\t\t\t} else {\n\t\t\t\tvar cmd = cmds.a;\n\t\t\t\tvar otherCmds = cmds.b;\n\t\t\t\tif (!cmd.$) {\n\t\t\t\t\tvar tracker = cmd.a;\n\t\t\t\t\tvar _v2 = A2($elm$core$Dict$get, tracker, reqs);\n\t\t\t\t\tif (_v2.$ === 1) {\n\t\t\t\t\t\tvar $temp$router = router,\n\t\t\t\t\t\t\t$temp$cmds = otherCmds,\n\t\t\t\t\t\t\t$temp$reqs = reqs;\n\t\t\t\t\t\trouter = $temp$router;\n\t\t\t\t\t\tcmds = $temp$cmds;\n\t\t\t\t\t\treqs = $temp$reqs;\n\t\t\t\t\t\tcontinue updateReqs;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar pid = _v2.a;\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\t\t\tfunction (_v3) {\n\t\t\t\t\t\t\t\treturn A3(\n\t\t\t\t\t\t\t\t\t$elm$http$Http$updateReqs,\n\t\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t\totherCmds,\n\t\t\t\t\t\t\t\t\tA2($elm$core$Dict$remove, tracker, reqs));\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t$elm$core$Process$kill(pid));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar req = cmd.a;\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\t\tfunction (pid) {\n\t\t\t\t\t\t\tvar _v4 = req.fY;\n\t\t\t\t\t\t\tif (_v4.$ === 1) {\n\t\t\t\t\t\t\t\treturn A3($elm$http$Http$updateReqs, router, otherCmds, reqs);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvar tracker = _v4.a;\n\t\t\t\t\t\t\t\treturn A3(\n\t\t\t\t\t\t\t\t\t$elm$http$Http$updateReqs,\n\t\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t\totherCmds,\n\t\t\t\t\t\t\t\t\tA3($elm$core$Dict$insert, tracker, pid, reqs));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t$elm$core$Process$spawn(\n\t\t\t\t\t\t\tA3(\n\t\t\t\t\t\t\t\t_Http_toTask,\n\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t$elm$core$Platform$sendToApp(router),\n\t\t\t\t\t\t\t\treq)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$http$Http$onEffects = F4(\n\tfunction (router, cmds, subs, state) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (reqs) {\n\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\tA2($elm$http$Http$State, reqs, subs));\n\t\t\t},\n\t\t\tA3($elm$http$Http$updateReqs, router, cmds, state.d6));\n\t});\nvar $elm$core$List$maybeCons = F3(\n\tfunction (f, mx, xs) {\n\t\tvar _v0 = f(mx);\n\t\tif (!_v0.$) {\n\t\t\tvar x = _v0.a;\n\t\t\treturn A2($elm$core$List$cons, x, xs);\n\t\t} else {\n\t\t\treturn xs;\n\t\t}\n\t});\nvar $elm$core$List$filterMap = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\t$elm$core$List$maybeCons(f),\n\t\t\t_List_Nil,\n\t\t\txs);\n\t});\nvar $elm$http$Http$maybeSend = F4(\n\tfunction (router, desiredTracker, progress, _v0) {\n\t\tvar actualTracker = _v0.a;\n\t\tvar toMsg = _v0.b;\n\t\treturn _Utils_eq(desiredTracker, actualTracker) ? $elm$core$Maybe$Just(\n\t\t\tA2(\n\t\t\t\t$elm$core$Platform$sendToApp,\n\t\t\t\trouter,\n\t\t\t\ttoMsg(progress))) : $elm$core$Maybe$Nothing;\n\t});\nvar $elm$http$Http$onSelfMsg = F3(\n\tfunction (router, _v0, state) {\n\t\tvar tracker = _v0.a;\n\t\tvar progress = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (_v1) {\n\t\t\t\treturn $elm$core$Task$succeed(state);\n\t\t\t},\n\t\t\t$elm$core$Task$sequence(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$filterMap,\n\t\t\t\t\tA3($elm$http$Http$maybeSend, router, tracker, progress),\n\t\t\t\t\tstate.em)));\n\t});\nvar $elm$http$Http$Cancel = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$http$Http$cmdMap = F2(\n\tfunction (func, cmd) {\n\t\tif (!cmd.$) {\n\t\t\tvar tracker = cmd.a;\n\t\t\treturn $elm$http$Http$Cancel(tracker);\n\t\t} else {\n\t\t\tvar r = cmd.a;\n\t\t\treturn $elm$http$Http$Request(\n\t\t\t\t{\n\t\t\t\t\teH: r.eH,\n\t\t\t\t\teJ: r.eJ,\n\t\t\t\t\teX: A2(_Http_mapExpect, func, r.eX),\n\t\t\t\t\te3: r.e3,\n\t\t\t\t\tfg: r.fg,\n\t\t\t\t\tfQ: r.fQ,\n\t\t\t\t\tfY: r.fY,\n\t\t\t\t\tf_: r.f_\n\t\t\t\t});\n\t\t}\n\t});\nvar $elm$http$Http$MySub = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $elm$http$Http$subMap = F2(\n\tfunction (func, _v0) {\n\t\tvar tracker = _v0.a;\n\t\tvar toMsg = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$http$Http$MySub,\n\t\t\ttracker,\n\t\t\tA2($elm$core$Basics$composeR, toMsg, func));\n\t});\n_Platform_effectManagers['Http'] = _Platform_createManager($elm$http$Http$init, $elm$http$Http$onEffects, $elm$http$Http$onSelfMsg, $elm$http$Http$cmdMap, $elm$http$Http$subMap);\nvar $elm$http$Http$command = _Platform_leaf('Http');\nvar $elm$http$Http$subscription = _Platform_leaf('Http');\nvar $elm$http$Http$request = function (r) {\n\treturn $elm$http$Http$command(\n\t\t$elm$http$Http$Request(\n\t\t\t{eH: false, eJ: r.eJ, eX: r.eX, e3: r.e3, fg: r.fg, fQ: r.fQ, fY: r.fY, f_: r.f_}));\n};\nvar $elm$http$Http$post = function (r) {\n\treturn $elm$http$Http$request(\n\t\t{eJ: r.eJ, eX: r.eX, e3: _List_Nil, fg: 'POST', fQ: $elm$core$Maybe$Nothing, fY: $elm$core$Maybe$Nothing, f_: r.f_});\n};\nvar $elm$http$Http$stringPart = _Http_pair;\nvar $author$project$Api$User$authentication = function (options) {\n\tvar body = $elm$http$Http$multipartBody(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2($elm$http$Http$stringPart, 'username', options.O.av),\n\t\t\t\tA2($elm$http$Http$stringPart, 'password', options.O.cO)\n\t\t\t]));\n\treturn $elm$http$Http$post(\n\t\t{\n\t\t\teJ: body,\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fu,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder)),\n\t\t\tf_: $author$project$Api$User$loginUrl(options.eL)\n\t\t});\n};\nvar $elm$browser$Browser$Navigation$pushUrl = _Browser_pushUrl;\nvar $elm$core$String$append = _String_append;\nvar $author$project$Spa$Generated$Route$toString = function (route) {\n\tvar segments = function () {\n\t\tswitch (route.$) {\n\t\t\tcase 0:\n\t\t\t\treturn _List_Nil;\n\t\t\tcase 1:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['login']);\n\t\t\tcase 2:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['not-found']);\n\t\t\tcase 3:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['projects']);\n\t\t\tcase 4:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['register']);\n\t\t\tcase 5:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['settings']);\n\t\t\tdefault:\n\t\t\t\tvar username = route.a.cg;\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['profile', username]);\n\t\t}\n\t}();\n\treturn A2(\n\t\t$elm$core$String$append,\n\t\t'/',\n\t\tA2($elm$core$String$join, '/', segments));\n};\nvar $author$project$Utils$Route$navigate = F2(\n\tfunction (key, route) {\n\t\treturn A2(\n\t\t\t$elm$browser$Browser$Navigation$pushUrl,\n\t\t\tkey,\n\t\t\t$author$project$Spa$Generated$Route$toString(route));\n\t});\nvar $elm$json$Json$Encode$string = _Json_wrap;\nvar $author$project$Api$Token$encode = function (_v0) {\n\tvar token = _v0;\n\treturn $elm$json$Json$Encode$string(token);\n};\nvar $elm$json$Json$Encode$object = function (pairs) {\n\treturn _Json_wrap(\n\t\tA3(\n\t\t\t$elm$core$List$foldl,\n\t\t\tF2(\n\t\t\t\tfunction (_v0, obj) {\n\t\t\t\t\tvar k = _v0.a;\n\t\t\t\t\tvar v = _v0.b;\n\t\t\t\t\treturn A3(_Json_addField, k, v, obj);\n\t\t\t\t}),\n\t\t\t_Json_emptyObject(0),\n\t\t\tpairs));\n};\nvar $author$project$Api$User$encode = function (user) {\n\treturn $elm$json$Json$Encode$object(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'username',\n\t\t\t\t$elm$json$Json$Encode$string(user.cg)),\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'email',\n\t\t\t\t$elm$json$Json$Encode$string(user.av)),\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'token',\n\t\t\t\t$author$project$Api$Token$encode(user.da))\n\t\t\t]));\n};\nvar $author$project$Ports$outgoing = _Platform_outgoingPort(\n\t'outgoing',\n\tfunction ($) {\n\t\treturn $elm$json$Json$Encode$object(\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t'data',\n\t\t\t\t\t$elm$core$Basics$identity($.ct)),\n\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t'tag',\n\t\t\t\t\t$elm$json$Json$Encode$string($.c8))\n\t\t\t\t]));\n\t});\nvar $author$project$Ports$saveUser = function (user) {\n\treturn $author$project$Ports$outgoing(\n\t\t{\n\t\t\tct: $author$project$Api$User$encode(user),\n\t\t\tc8: 'saveUser'\n\t\t});\n};\nvar $author$project$Pages$Login$update = F2(\n\tfunction (msg, model) {\n\t\tswitch (msg.$) {\n\t\t\tcase 0:\n\t\t\t\tif (!msg.a) {\n\t\t\t\t\tvar _v1 = msg.a;\n\t\t\t\t\tvar email = msg.b;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t{av: email}),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t} else {\n\t\t\t\t\tvar _v2 = msg.a;\n\t\t\t\t\tvar password = msg.b;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t{cO: password}),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t}\n\t\t\tcase 1:\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\tmodel,\n\t\t\t\t\t$author$project$Api$User$authentication(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\teL: model.f_.e6,\n\t\t\t\t\t\t\tfu: $author$project$Pages$Login$GotUser,\n\t\t\t\t\t\t\tO: {av: model.av, cO: model.cO}\n\t\t\t\t\t\t}));\n\t\t\tdefault:\n\t\t\t\tvar user = msg.a;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{O: user}),\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\tvar _v3 = $author$project$Api$Data$toMaybe(user);\n\t\t\t\t\t\tif (!_v3.$) {\n\t\t\t\t\t\t\tvar user_ = _v3.a;\n\t\t\t\t\t\t\treturn $elm$core$Platform$Cmd$batch(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$author$project$Ports$saveUser(user_),\n\t\t\t\t\t\t\t\t\t\tA2($author$project$Utils$Route$navigate, model.fc, $author$project$Spa$Generated$Route$Projects)\n\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Platform$Cmd$none;\n\t\t\t\t\t\t}\n\t\t\t\t\t}());\n\t\t}\n\t});\nvar $author$project$Pages$Login$AttemptedSignIn = {$: 1};\nvar $author$project$Pages$Login$Email = 0;\nvar $author$project$Pages$Login$Password = 1;\nvar $author$project$Pages$Login$Updated = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $elm$html$Html$a = _VirtualDom_node('a');\nvar $elm$html$Html$button = _VirtualDom_node('button');\nvar $elm$html$Html$Attributes$stringProperty = F2(\n\tfunction (key, string) {\n\t\treturn A2(\n\t\t\t_VirtualDom_property,\n\t\t\tkey,\n\t\t\t$elm$json$Json$Encode$string(string));\n\t});\nvar $elm$html$Html$Attributes$class = $elm$html$Html$Attributes$stringProperty('className');\nvar $elm$html$Html$div = _VirtualDom_node('div');\nvar $elm$html$Html$form = _VirtualDom_node('form');\nvar $elm$html$Html$h1 = _VirtualDom_node('h1');\nvar $elm$html$Html$Attributes$href = function (url) {\n\treturn A2(\n\t\t$elm$html$Html$Attributes$stringProperty,\n\t\t'href',\n\t\t_VirtualDom_noJavaScriptUri(url));\n};\nvar $elm$html$Html$Events$alwaysPreventDefault = function (msg) {\n\treturn _Utils_Tuple2(msg, true);\n};\nvar $elm$virtual_dom$VirtualDom$MayPreventDefault = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$virtual_dom$VirtualDom$on = _VirtualDom_on;\nvar $elm$html$Html$Events$preventDefaultOn = F2(\n\tfunction (event, decoder) {\n\t\treturn A2(\n\t\t\t$elm$virtual_dom$VirtualDom$on,\n\t\t\tevent,\n\t\t\t$elm$virtual_dom$VirtualDom$MayPreventDefault(decoder));\n\t});\nvar $elm$html$Html$Events$onSubmit = function (msg) {\n\treturn A2(\n\t\t$elm$html$Html$Events$preventDefaultOn,\n\t\t'submit',\n\t\tA2(\n\t\t\t$elm$json$Json$Decode$map,\n\t\t\t$elm$html$Html$Events$alwaysPreventDefault,\n\t\t\t$elm$json$Json$Decode$succeed(msg)));\n};\nvar $elm$html$Html$p = _VirtualDom_node('p');\nvar $elm$virtual_dom$VirtualDom$text = _VirtualDom_text;\nvar $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text;\nvar $elm$core$List$isEmpty = function (xs) {\n\tif (!xs.b) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$html$Html$li = _VirtualDom_node('li');\nvar $elm$html$Html$ul = _VirtualDom_node('ul');\nvar $author$project$Components$ErrorList$view = function (reasons) {\n\treturn $elm$core$List$isEmpty(reasons) ? $elm$html$Html$text('') : A2(\n\t\t$elm$html$Html$ul,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('error-messages')\n\t\t\t]),\n\t\tA2(\n\t\t\t$elm$core$List$map,\n\t\t\tfunction (message) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$html$Html$li,\n\t\t\t\t\t_List_Nil,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text(message)\n\t\t\t\t\t\t]));\n\t\t\t},\n\t\t\treasons));\n};\nvar $elm$html$Html$fieldset = _VirtualDom_node('fieldset');\nvar $elm$html$Html$input = _VirtualDom_node('input');\nvar $elm$html$Html$Events$alwaysStop = function (x) {\n\treturn _Utils_Tuple2(x, true);\n};\nvar $elm$virtual_dom$VirtualDom$MayStopPropagation = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$html$Html$Events$stopPropagationOn = F2(\n\tfunction (event, decoder) {\n\t\treturn A2(\n\t\t\t$elm$virtual_dom$VirtualDom$on,\n\t\t\tevent,\n\t\t\t$elm$virtual_dom$VirtualDom$MayStopPropagation(decoder));\n\t});\nvar $elm$json$Json$Decode$at = F2(\n\tfunction (fields, decoder) {\n\t\treturn A3($elm$core$List$foldr, $elm$json$Json$Decode$field, decoder, fields);\n\t});\nvar $elm$html$Html$Events$targetValue = A2(\n\t$elm$json$Json$Decode$at,\n\t_List_fromArray(\n\t\t['target', 'value']),\n\t$elm$json$Json$Decode$string);\nvar $elm$html$Html$Events$onInput = function (tagger) {\n\treturn A2(\n\t\t$elm$html$Html$Events$stopPropagationOn,\n\t\t'input',\n\t\tA2(\n\t\t\t$elm$json$Json$Decode$map,\n\t\t\t$elm$html$Html$Events$alwaysStop,\n\t\t\tA2($elm$json$Json$Decode$map, tagger, $elm$html$Html$Events$targetValue)));\n};\nvar $elm$html$Html$Attributes$placeholder = $elm$html$Html$Attributes$stringProperty('placeholder');\nvar $elm$html$Html$Attributes$type_ = $elm$html$Html$Attributes$stringProperty('type');\nvar $elm$html$Html$Attributes$value = $elm$html$Html$Attributes$stringProperty('value');\nvar $author$project$Components$UserForm$viewField = function (options) {\n\treturn A2(\n\t\t$elm$html$Html$fieldset,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('form-group')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$input,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-control form-control-lg'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder(options.fd),\n\t\t\t\t\t\t$elm$html$Html$Attributes$type_(options.ex),\n\t\t\t\t\t\t$elm$html$Html$Attributes$value(options.ez),\n\t\t\t\t\t\t$elm$html$Html$Events$onInput(options.dV)\n\t\t\t\t\t]),\n\t\t\t\t_List_Nil)\n\t\t\t]));\n};\nvar $author$project$Components$UserForm$view = function (options) {\n\treturn A2(\n\t\t$elm$html$Html$div,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('auth-page')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('row')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('col-md-6 offset-md-3 col-xs-12')\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$h1,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-xs-center')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(options.fd)\n\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$p,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-xs-center')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Spa$Generated$Route$toString(options.df.fH))\n\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(options.df.fd)\n\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t\t\tvar _v0 = options.O;\n\t\t\t\t\t\t\t\t\t\tif (_v0.$ === 2) {\n\t\t\t\t\t\t\t\t\t\t\tvar reasons = _v0.a;\n\t\t\t\t\t\t\t\t\t\t\treturn $author$project$Components$ErrorList$view(reasons);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\treturn $elm$html$Html$text('');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}(),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$form,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onSubmit(options.fs)\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t$elm$core$List$concat(\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$core$List$map, $author$project$Components$UserForm$viewField, options.e0),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-lg btn-primary pull-xs-right')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(options.fd)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t\t\t])))\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]));\n};\nvar $author$project$Pages$Login$view = function (model) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[\n\t\t\t\t$author$project$Components$UserForm$view(\n\t\t\t\t{\n\t\t\t\t\tdf: {fd: 'Need an account?', fH: $author$project$Spa$Generated$Route$Register},\n\t\t\t\t\te0: _List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfd: 'Email',\n\t\t\t\t\t\t\tdV: $author$project$Pages$Login$Updated(0),\n\t\t\t\t\t\t\tex: 'text',\n\t\t\t\t\t\t\tez: model.av\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfd: 'Password',\n\t\t\t\t\t\t\tdV: $author$project$Pages$Login$Updated(1),\n\t\t\t\t\t\t\tex: 'password',\n\t\t\t\t\t\t\tez: model.cO\n\t\t\t\t\t\t}\n\t\t\t\t\t\t]),\n\t\t\t\t\tfd: 'Sign in',\n\t\t\t\t\tfs: $author$project$Pages$Login$AttemptedSignIn,\n\t\t\t\t\tO: model.O\n\t\t\t\t})\n\t\t\t]),\n\t\tfR: 'Sign in'\n\t};\n};\nvar $author$project$Pages$Login$page = $author$project$Spa$Page$application(\n\t{fa: $author$project$Pages$Login$init, ff: $author$project$Pages$Login$load, fI: $author$project$Pages$Login$save, fN: $author$project$Pages$Login$subscriptions, fZ: $author$project$Pages$Login$update, f0: $author$project$Pages$Login$view});\nvar $elm$core$Basics$always = F2(\n\tfunction (a, _v0) {\n\t\treturn a;\n\t});\nvar $author$project$Spa$Page$ignoreEffect = function (model) {\n\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n};\nvar $author$project$Spa$Page$static = function (page) {\n\treturn {\n\t\tfa: F2(\n\t\t\tfunction (_v0, url) {\n\t\t\t\treturn _Utils_Tuple2(url, $elm$core$Platform$Cmd$none);\n\t\t\t}),\n\t\tff: $elm$core$Basics$always(\n\t\t\tA2($elm$core$Basics$composeR, $elm$core$Basics$identity, $author$project$Spa$Page$ignoreEffect)),\n\t\tfI: $elm$core$Basics$always($elm$core$Basics$identity),\n\t\tfN: function (_v1) {\n\t\t\treturn $elm$core$Platform$Sub$none;\n\t\t},\n\t\tfZ: F2(\n\t\t\tfunction (_v2, model) {\n\t\t\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t\t\t}),\n\t\tf0: page.f0\n\t};\n};\nvar $elm$html$Html$h2 = _VirtualDom_node('h2');\nvar $elm$html$Html$h5 = _VirtualDom_node('h5');\nvar $author$project$Components$NotFound$view = A2(\n\t$elm$html$Html$div,\n\t_List_fromArray(\n\t\t[\n\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t]),\n\t_List_fromArray(\n\t\t[\n\t\t\tA2(\n\t\t\t$elm$html$Html$h2,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$text('Page not found.')\n\t\t\t\t])),\n\t\t\tA2(\n\t\t\t$elm$html$Html$h5,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$text('But here\\'s the '),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('/')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text('homepage')\n\t\t\t\t\t\t])),\n\t\t\t\t\t$elm$html$Html$text('!')\n\t\t\t\t]))\n\t\t]));\nvar $author$project$Pages$NotFound$view = function (_v0) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[$author$project$Components$NotFound$view]),\n\t\tfR: '404'\n\t};\n};\nvar $author$project$Pages$NotFound$page = $author$project$Spa$Page$static(\n\t{f0: $author$project$Pages$NotFound$view});\nvar $author$project$Pages$Profile$Username_String$GotProfile = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Api$Data$Loading = {$: 1};\nvar $author$project$Pages$Profile$Username_String$MyArticles = 0;\nvar $author$project$Api$Profile$Profile = F2(\n\tfunction (username, following) {\n\t\treturn {e1: following, cg: username};\n\t});\nvar $elm$json$Json$Decode$bool = _Json_decodeBool;\nvar $author$project$Api$Profile$decoder = A3(\n\t$elm$json$Json$Decode$map2,\n\t$author$project$Api$Profile$Profile,\n\tA2($elm$json$Json$Decode$field, 'username', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'following', $elm$json$Json$Decode$bool));\nvar $elm$http$Http$emptyBody = _Http_emptyBody;\nvar $elm$http$Http$Header = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $elm$http$Http$header = $elm$http$Http$Header;\nvar $author$project$Api$Token$request = F4(\n\tfunction (method, body, maybeToken, options) {\n\t\treturn $elm$http$Http$request(\n\t\t\t{\n\t\t\t\teJ: body,\n\t\t\t\teX: options.eX,\n\t\t\t\te3: function () {\n\t\t\t\t\tif (!maybeToken.$) {\n\t\t\t\t\t\tvar token = maybeToken.a;\n\t\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2($elm$http$Http$header, 'Authorization', 'Bearer ' + token)\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn _List_Nil;\n\t\t\t\t\t}\n\t\t\t\t}(),\n\t\t\t\tfg: method,\n\t\t\t\tfQ: $elm$core$Maybe$Just(1000 * 60),\n\t\t\t\tfY: $elm$core$Maybe$Nothing,\n\t\t\t\tf_: options.f_\n\t\t\t});\n\t});\nvar $author$project$Api$Token$get = A2($author$project$Api$Token$request, 'GET', $elm$http$Http$emptyBody);\nvar $author$project$Api$Profile$get = function (options) {\n\treturn A2(\n\t\t$author$project$Api$Token$get,\n\t\toptions.da,\n\t\t{\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fu,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'profile', $author$project$Api$Profile$decoder)),\n\t\t\tf_: 'https://conduit.productionready.io/api/profiles/' + options.cg\n\t\t});\n};\nvar $elm$core$Maybe$map = F2(\n\tfunction (f, maybe) {\n\t\tif (!maybe.$) {\n\t\t\tvar value = maybe.a;\n\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\tf(value));\n\t\t} else {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t}\n\t});\nvar $author$project$Pages$Profile$Username_String$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar params = _v0.fA;\n\t\tvar token = A2(\n\t\t\t$elm$core$Maybe$map,\n\t\t\tfunction ($) {\n\t\t\t\treturn $.da;\n\t\t\t},\n\t\t\tshared.O);\n\t\treturn _Utils_Tuple2(\n\t\t\t{dN: $author$project$Api$Data$Loading, C: 1, cS: $author$project$Api$Data$Loading, cX: 0, O: shared.O, cg: params.cg},\n\t\t\t$elm$core$Platform$Cmd$batch(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$author$project$Api$Profile$get(\n\t\t\t\t\t\t{fu: $author$project$Pages$Profile$Username_String$GotProfile, da: token, cg: params.cg})\n\t\t\t\t\t])));\n\t});\nvar $author$project$Pages$Profile$Username_String$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Profile$Username_String$save = F2(\n\tfunction (_v0, shared) {\n\t\treturn shared;\n\t});\nvar $author$project$Pages$Profile$Username_String$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Profile$Username_String$update = F2(\n\tfunction (msg, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Profile$Username_String$Clicked = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Pages$Profile$Username_String$FavoritedArticles = 1;\nvar $elm$core$List$filter = F2(\n\tfunction (isGood, list) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\tF2(\n\t\t\t\tfunction (x, xs) {\n\t\t\t\t\treturn isGood(x) ? A2($elm$core$List$cons, x, xs) : xs;\n\t\t\t\t}),\n\t\t\t_List_Nil,\n\t\t\tlist);\n\t});\nvar $elm$core$Tuple$second = function (_v0) {\n\tvar y = _v0.b;\n\treturn y;\n};\nvar $elm$html$Html$Attributes$classList = function (classes) {\n\treturn $elm$html$Html$Attributes$class(\n\t\tA2(\n\t\t\t$elm$core$String$join,\n\t\t\t' ',\n\t\t\tA2(\n\t\t\t\t$elm$core$List$map,\n\t\t\t\t$elm$core$Tuple$first,\n\t\t\t\tA2($elm$core$List$filter, $elm$core$Tuple$second, classes))));\n};\nvar $elm$virtual_dom$VirtualDom$Normal = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$html$Html$Events$on = F2(\n\tfunction (event, decoder) {\n\t\treturn A2(\n\t\t\t$elm$virtual_dom$VirtualDom$on,\n\t\t\tevent,\n\t\t\t$elm$virtual_dom$VirtualDom$Normal(decoder));\n\t});\nvar $elm$html$Html$Events$onClick = function (msg) {\n\treturn A2(\n\t\t$elm$html$Html$Events$on,\n\t\t'click',\n\t\t$elm$json$Json$Decode$succeed(msg));\n};\nvar $author$project$Pages$Profile$Username_String$viewProfile = F2(\n\tfunction (profile, model) {\n\t\tvar viewTab = function (tab) {\n\t\t\treturn A2(\n\t\t\t\t$elm$html$Html$li,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-item')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-link'),\n\t\t\t\t\t\t\t\t$elm$html$Html$Events$onClick(\n\t\t\t\t\t\t\t\t$author$project$Pages$Profile$Username_String$Clicked(tab)),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$classList(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t\t'active',\n\t\t\t\t\t\t\t\t\t\t_Utils_eq(tab, model.cX))\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text(\n\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t\tif (!tab) {\n\t\t\t\t\t\t\t\t\t\treturn 'My Articles';\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\treturn 'Favorited Articles';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}())\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]));\n\t\t};\n\t\tvar viewTabRow = A2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('articles-toggle')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$ul,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav nav-pills outline-active')\n\t\t\t\t\t\t]),\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t\tviewTab,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[0, 1])))\n\t\t\t\t]));\n\t\tvar isViewingOwnProfile = _Utils_eq(\n\t\t\tA2(\n\t\t\t\t$elm$core$Maybe$map,\n\t\t\t\tfunction ($) {\n\t\t\t\t\treturn $.cg;\n\t\t\t\t},\n\t\t\t\tmodel.O),\n\t\t\t$elm$core$Maybe$Just(profile.cg));\n\t\treturn A2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('profile-page')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('row')\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t]))\n\t\t\t\t]));\n\t});\nvar $author$project$Pages$Profile$Username_String$view = function (model) {\n\treturn {\n\t\teJ: function () {\n\t\t\tvar _v0 = model.cS;\n\t\t\tswitch (_v0.$) {\n\t\t\t\tcase 3:\n\t\t\t\t\tvar profile = _v0.a;\n\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA2($author$project$Pages$Profile$Username_String$viewProfile, profile, model)\n\t\t\t\t\t\t]);\n\t\t\t\tcase 2:\n\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t[$author$project$Components$NotFound$view]);\n\t\t\t\tdefault:\n\t\t\t\t\treturn _List_Nil;\n\t\t\t}\n\t\t}(),\n\t\tfR: 'Profile'\n\t};\n};\nvar $author$project$Pages$Profile$Username_String$page = $author$project$Spa$Page$application(\n\t{fa: $author$project$Pages$Profile$Username_String$init, ff: $author$project$Pages$Profile$Username_String$load, fI: $author$project$Pages$Profile$Username_String$save, fN: $author$project$Pages$Profile$Username_String$subscriptions, fZ: $author$project$Pages$Profile$Username_String$update, f0: $author$project$Pages$Profile$Username_String$view});\nvar $author$project$Pages$Projects$GotProjects = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Api$Project$Project = F5(\n\tfunction (name, description, state, errormsg, gitrepository) {\n\t\treturn {eS: description, eV: errormsg, e2: gitrepository, fi: name, fK: state};\n\t});\nvar $author$project$Api$Project$GitRepository = F2(\n\tfunction (url, version) {\n\t\treturn {f_: url, f$: version};\n\t});\nvar $author$project$Api$Project$gitRepositoryDecoder = A3(\n\t$elm$json$Json$Decode$map2,\n\t$author$project$Api$Project$GitRepository,\n\tA2($elm$json$Json$Decode$field, 'url', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'version', $elm$json$Json$Decode$string));\nvar $elm$json$Json$Decode$map5 = _Json_map5;\nvar $author$project$Api$Project$projectDecoder = A6(\n\t$elm$json$Json$Decode$map5,\n\t$author$project$Api$Project$Project,\n\tA2($elm$json$Json$Decode$field, 'name', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'description', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'state', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'errormsg', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'gitrepository', $author$project$Api$Project$gitRepositoryDecoder));\nvar $author$project$Api$Project$list = function (options) {\n\treturn A2(\n\t\t$author$project$Api$Token$get,\n\t\toptions.da,\n\t\t{\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fu,\n\t\t\t\t$elm$json$Json$Decode$list($author$project$Api$Project$projectDecoder)),\n\t\t\tf_: options.ey + '/api/v1/projects'\n\t\t});\n};\nvar $author$project$Pages$Projects$makeUrl = function (host) {\n\treturn A2($elm$core$String$contains, 'localhost', host) ? 'http://localhost:8000' : '';\n};\nvar $author$project$Pages$Projects$fetchProjects = F2(\n\tfunction (model, host) {\n\t\treturn $author$project$Api$Project$list(\n\t\t\t{\n\t\t\t\tfu: $author$project$Pages$Projects$GotProjects,\n\t\t\t\tda: A2(\n\t\t\t\t\t$elm$core$Maybe$map,\n\t\t\t\t\tfunction ($) {\n\t\t\t\t\t\treturn $.da;\n\t\t\t\t\t},\n\t\t\t\t\tmodel.O),\n\t\t\t\tey: $author$project$Pages$Projects$makeUrl(host)\n\t\t\t});\n\t});\nvar $author$project$Pages$Projects$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar model = {dN: $author$project$Api$Data$Loading, O: shared.O};\n\t\treturn _Utils_Tuple2(\n\t\t\tmodel,\n\t\t\t$elm$core$Platform$Cmd$batch(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2($author$project$Pages$Projects$fetchProjects, model, shared.f_.e6)\n\t\t\t\t\t])));\n\t});\nvar $author$project$Pages$Projects$load = F2(\n\tfunction (shared, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Projects$save = F2(\n\tfunction (model, shared) {\n\t\treturn shared;\n\t});\nvar $author$project$Pages$Projects$subscriptions = function (model) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Projects$update = F2(\n\tfunction (msg, model) {\n\t\tif (!msg.$) {\n\t\t\tvar listing = msg.a;\n\t\t\treturn _Utils_Tuple2(\n\t\t\t\t_Utils_update(\n\t\t\t\t\tmodel,\n\t\t\t\t\t{dN: listing}),\n\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t} else {\n\t\t\tvar project = msg.a;\n\t\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t\t}\n\t});\nvar $elm$html$Html$span = _VirtualDom_node('span');\nvar $elm$html$Html$Attributes$target = $elm$html$Html$Attributes$stringProperty('target');\nvar $author$project$Components$ProjectList$viewErrorDiv = function (listing) {\n\treturn ($elm$core$String$length(listing.eV) > 0) ? A2(\n\t\t$elm$html$Html$div,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('alert alert-warning')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$text(listing.eV)\n\t\t\t])) : $elm$html$Html$text('');\n};\nvar $author$project$Components$ProjectList$viewProject = function (listing) {\n\treturn A2(\n\t\t$elm$html$Html$div,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('highlight col-md-10')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$h5,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.fi)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$button,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-outline-secondary btn-xs pull-right'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$type_('button')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text('Start')\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$p,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.eS)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$p,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$target('_blank'),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('/public/v1/projects/1')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text('public')\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$p,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.e2.f_)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$p,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.e2.f$)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$span,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('badge badge-pill badge-secondary')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.fK)\n\t\t\t\t\t])),\n\t\t\t\t$author$project$Components$ProjectList$viewErrorDiv(listing)\n\t\t\t]));\n};\nvar $author$project$Components$ProjectList$view = function (options) {\n\tvar _v0 = options.fC;\n\tswitch (_v0.$) {\n\t\tcase 0:\n\t\t\treturn A2($elm$html$Html$div, _List_Nil, _List_Nil);\n\t\tcase 2:\n\t\t\treturn A2($elm$html$Html$div, _List_Nil, _List_Nil);\n\t\tcase 1:\n\t\t\treturn A2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('project-preview')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text('Loading...')\n\t\t\t\t\t]));\n\t\tdefault:\n\t\t\tvar listing = _v0.a;\n\t\t\treturn A2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('listings')\n\t\t\t\t\t]),\n\t\t\t\tA2($elm$core$List$map, $author$project$Components$ProjectList$viewProject, listing));\n\t}\n};\nvar $author$project$Pages$Projects$view = function (model) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('container')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$h1,\n\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text('Projects')\n\t\t\t\t\t\t\t])),\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('col-md-9')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$author$project$Components$ProjectList$view(\n\t\t\t\t\t\t\t\t{fC: model.dN, O: model.O})\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]),\n\t\tfR: 'Projects'\n\t};\n};\nvar $author$project$Pages$Projects$page = $author$project$Spa$Page$application(\n\t{fa: $author$project$Pages$Projects$init, ff: $author$project$Pages$Projects$load, fI: $author$project$Pages$Projects$save, fN: $author$project$Pages$Projects$subscriptions, fZ: $author$project$Pages$Projects$update, f0: $author$project$Pages$Projects$view});\nvar $author$project$Pages$Register$Model = F5(\n\tfunction (user, key, username, email, password) {\n\t\treturn {av: email, fc: key, cO: password, O: user, cg: username};\n\t});\nvar $author$project$Pages$Register$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar key = _v0.fc;\n\t\treturn _Utils_Tuple2(\n\t\t\tA5(\n\t\t\t\t$author$project$Pages$Register$Model,\n\t\t\t\tfunction () {\n\t\t\t\t\tvar _v1 = shared.O;\n\t\t\t\t\tif (!_v1.$) {\n\t\t\t\t\t\tvar user = _v1.a;\n\t\t\t\t\t\treturn $author$project$Api$Data$Success(user);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn $author$project$Api$Data$NotAsked;\n\t\t\t\t\t}\n\t\t\t\t}(),\n\t\t\t\tkey,\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t''),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Register$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Register$save = F2(\n\tfunction (model, shared) {\n\t\treturn _Utils_update(\n\t\t\tshared,\n\t\t\t{\n\t\t\t\tO: function () {\n\t\t\t\t\tvar _v0 = $author$project$Api$Data$toMaybe(model.O);\n\t\t\t\t\tif (!_v0.$) {\n\t\t\t\t\t\tvar user = _v0.a;\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(user);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn shared.O;\n\t\t\t\t\t}\n\t\t\t\t}()\n\t\t\t});\n\t});\nvar $author$project$Pages$Register$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Register$GotUser = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$http$Http$jsonBody = function (value) {\n\treturn A2(\n\t\t_Http_pair,\n\t\t'application/json',\n\t\tA2($elm$json$Json$Encode$encode, 0, value));\n};\nvar $author$project$Api$User$registration = function (options) {\n\tvar body = $elm$json$Json$Encode$object(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'user',\n\t\t\t\t$elm$json$Json$Encode$object(\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t'username',\n\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.cg)),\n\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t'email',\n\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.av)),\n\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t'password',\n\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.cO))\n\t\t\t\t\t\t])))\n\t\t\t]));\n\treturn $elm$http$Http$post(\n\t\t{\n\t\t\teJ: $elm$http$Http$jsonBody(body),\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fu,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder)),\n\t\t\tf_: 'https://conduit.productionready.io/api/users'\n\t\t});\n};\nvar $author$project$Pages$Register$update = F2(\n\tfunction (msg, model) {\n\t\tswitch (msg.$) {\n\t\t\tcase 0:\n\t\t\t\tswitch (msg.a) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tvar _v1 = msg.a;\n\t\t\t\t\t\tvar username = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{cg: username}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tvar _v2 = msg.a;\n\t\t\t\t\t\tvar email = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{av: email}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar _v3 = msg.a;\n\t\t\t\t\t\tvar password = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{cO: password}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t}\n\t\t\tcase 1:\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\tmodel,\n\t\t\t\t\t$author$project$Api$User$registration(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfu: $author$project$Pages$Register$GotUser,\n\t\t\t\t\t\t\tO: {av: model.av, cO: model.cO, cg: model.cg}\n\t\t\t\t\t\t}));\n\t\t\tdefault:\n\t\t\t\tvar user = msg.a;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{O: user}),\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\tvar _v4 = $author$project$Api$Data$toMaybe(user);\n\t\t\t\t\t\tif (!_v4.$) {\n\t\t\t\t\t\t\tvar user_ = _v4.a;\n\t\t\t\t\t\t\treturn $elm$core$Platform$Cmd$batch(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$author$project$Ports$saveUser(user_),\n\t\t\t\t\t\t\t\t\t\tA2($author$project$Utils$Route$navigate, model.fc, $author$project$Spa$Generated$Route$Top)\n\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Platform$Cmd$none;\n\t\t\t\t\t\t}\n\t\t\t\t\t}());\n\t\t}\n\t});\nvar $author$project$Pages$Register$AttemptedSignUp = {$: 1};\nvar $author$project$Pages$Register$Email = 1;\nvar $author$project$Pages$Register$Password = 2;\nvar $author$project$Pages$Register$Updated = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $author$project$Pages$Register$Username = 0;\nvar $author$project$Pages$Register$view = function (model) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[\n\t\t\t\t$author$project$Components$UserForm$view(\n\t\t\t\t{\n\t\t\t\t\tdf: {fd: 'Have an account?', fH: $author$project$Spa$Generated$Route$Login},\n\t\t\t\t\te0: _List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfd: 'Your Name',\n\t\t\t\t\t\t\tdV: $author$project$Pages$Register$Updated(0),\n\t\t\t\t\t\t\tex: 'text',\n\t\t\t\t\t\t\tez: model.cg\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfd: 'Email',\n\t\t\t\t\t\t\tdV: $author$project$Pages$Register$Updated(1),\n\t\t\t\t\t\t\tex: 'email',\n\t\t\t\t\t\t\tez: model.av\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfd: 'Password',\n\t\t\t\t\t\t\tdV: $author$project$Pages$Register$Updated(2),\n\t\t\t\t\t\t\tex: 'password',\n\t\t\t\t\t\t\tez: model.cO\n\t\t\t\t\t\t}\n\t\t\t\t\t\t]),\n\t\t\t\t\tfd: 'Sign up',\n\t\t\t\t\tfs: $author$project$Pages$Register$AttemptedSignUp,\n\t\t\t\t\tO: model.O\n\t\t\t\t})\n\t\t\t]),\n\t\tfR: 'Sign up'\n\t};\n};\nvar $author$project$Pages$Register$page = $author$project$Spa$Page$application(\n\t{fa: $author$project$Pages$Register$init, ff: $author$project$Pages$Register$load, fI: $author$project$Pages$Register$save, fN: $author$project$Pages$Register$subscriptions, fZ: $author$project$Pages$Register$update, f0: $author$project$Pages$Register$view});\nvar $author$project$Pages$Settings$init = F2(\n\tfunction (shared, _v0) {\n\t\treturn _Utils_Tuple2(\n\t\t\tfunction () {\n\t\t\t\tvar _v1 = shared.O;\n\t\t\t\tif (!_v1.$) {\n\t\t\t\t\tvar user = _v1.a;\n\t\t\t\t\treturn {av: user.av, ab: _List_Nil, ah: $elm$core$Maybe$Nothing, cO: $elm$core$Maybe$Nothing, O: shared.O, cg: user.cg};\n\t\t\t\t} else {\n\t\t\t\t\treturn {av: '', ab: _List_Nil, ah: $elm$core$Maybe$Nothing, cO: $elm$core$Maybe$Nothing, O: shared.O, cg: ''};\n\t\t\t\t}\n\t\t\t}(),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Settings$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Utils$Auth$protected = F2(\n\tfunction (view, model) {\n\t\tvar _v0 = model.O;\n\t\tif (!_v0.$) {\n\t\t\tvar user = _v0.a;\n\t\t\treturn A2(view, user, model);\n\t\t} else {\n\t\t\treturn {\n\t\t\t\teJ: _List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$h2,\n\t\t\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Not signed in.')\n\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$h5,\n\t\t\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Please '),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('/login')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('sign in')\n\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(' to view this page.')\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]),\n\t\t\t\tfR: '401'\n\t\t\t};\n\t\t}\n\t});\nvar $author$project$Pages$Settings$save = F2(\n\tfunction (model, shared) {\n\t\treturn _Utils_update(\n\t\t\tshared,\n\t\t\t{O: model.O});\n\t});\nvar $author$project$Pages$Settings$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Settings$GotUser = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Api$Token$put = F2(\n\tfunction (token, options) {\n\t\treturn A4($author$project$Api$Token$request, 'PUT', options.eJ, token, options);\n\t});\nvar $author$project$Api$User$update = function (options) {\n\tvar body = $elm$json$Json$Encode$object(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'user',\n\t\t\t\t$elm$json$Json$Encode$object(\n\t\t\t\t\t$elm$core$List$concat(\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t'username',\n\t\t\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.cg)),\n\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t'email',\n\t\t\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.av))\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\tvar _v0 = options.O.cO;\n\t\t\t\t\t\t\t\tif (!_v0.$) {\n\t\t\t\t\t\t\t\t\tvar password = _v0.a;\n\t\t\t\t\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t\t\t'password',\n\t\t\t\t\t\t\t\t\t\t\t$elm$json$Json$Encode$string(password))\n\t\t\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn _List_Nil;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}()\n\t\t\t\t\t\t\t]))))\n\t\t\t]));\n\treturn A2(\n\t\t$author$project$Api$Token$put,\n\t\t$elm$core$Maybe$Just(options.da),\n\t\t{\n\t\t\teJ: $elm$http$Http$jsonBody(body),\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fu,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder)),\n\t\t\tf_: 'https://conduit.productionready.io/api/user'\n\t\t});\n};\nvar $author$project$Pages$Settings$update = F2(\n\tfunction (msg, model) {\n\t\tswitch (msg.$) {\n\t\t\tcase 0:\n\t\t\t\tswitch (msg.a) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tvar _v1 = msg.a;\n\t\t\t\t\t\tvar value = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{cg: value}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tvar _v2 = msg.a;\n\t\t\t\t\t\tvar value = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{av: value}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar _v3 = msg.a;\n\t\t\t\t\t\tvar value = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcO: $elm$core$Maybe$Just(value)\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t}\n\t\t\tcase 1:\n\t\t\t\tvar user = msg.a;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{ab: _List_Nil, ah: $elm$core$Maybe$Nothing}),\n\t\t\t\t\t$author$project$Api$User$update(\n\t\t\t\t\t\t{fu: $author$project$Pages$Settings$GotUser, da: user.da, O: model}));\n\t\t\tdefault:\n\t\t\t\tswitch (msg.a.$) {\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tvar user = msg.a.a;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tah: $elm$core$Maybe$Just('User updated!'),\n\t\t\t\t\t\t\t\t\tO: $elm$core$Maybe$Just(user)\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t$author$project$Ports$saveUser(user));\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tvar reasons = msg.a.a;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{ab: reasons}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t\t\t\t}\n\t\t}\n\t});\nvar $author$project$Pages$Settings$Email = 1;\nvar $author$project$Pages$Settings$Password = 2;\nvar $author$project$Pages$Settings$SubmittedForm = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $author$project$Pages$Settings$Updated = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $author$project$Pages$Settings$Username = 0;\nvar $elm$html$Html$br = _VirtualDom_node('br');\nvar $author$project$Utils$Maybe$view = F2(\n\tfunction (maybe, toView) {\n\t\tif (!maybe.$) {\n\t\t\tvar value = maybe.a;\n\t\t\treturn toView(value);\n\t\t} else {\n\t\t\treturn $elm$html$Html$text('');\n\t\t}\n\t});\nvar $author$project$Pages$Settings$view = F2(\n\tfunction (user, model) {\n\t\treturn {\n\t\t\teJ: _List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('settings-page')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('row')\n\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('col-md-6 offset-md-3 col-xs-12')\n\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$h1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-xs-center')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Your Settings')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$br, _List_Nil, _List_Nil),\n\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Components$ErrorList$view(model.ab),\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Utils$Maybe$view,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel.ah,\n\t\t\t\t\t\t\t\t\t\t\t\t\tfunction (message) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$p,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-success')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(message)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$form,\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onSubmit(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Pages$Settings$SubmittedForm(user))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$fieldset,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$fieldset,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-group')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-control form-control-lg'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder('Your Username'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$type_('text'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$value(model.cg),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Pages$Settings$Updated(0))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$fieldset,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-group')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-control form-control-lg'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder('Email'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$type_('text'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$value(model.av),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Pages$Settings$Updated(1))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$fieldset,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-group')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-control form-control-lg'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder('Password'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$type_('password'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$value(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$core$Maybe$withDefault, '', model.cO)),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Pages$Settings$Updated(2))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-lg btn-primary pull-xs-right')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Update Settings')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t]))\n\t\t\t\t]),\n\t\t\tfR: 'Settings'\n\t\t};\n\t});\nvar $author$project$Pages$Settings$page = $author$project$Spa$Page$application(\n\t{\n\t\tfa: $author$project$Pages$Settings$init,\n\t\tff: $author$project$Pages$Settings$load,\n\t\tfI: $author$project$Pages$Settings$save,\n\t\tfN: $author$project$Pages$Settings$subscriptions,\n\t\tfZ: $author$project$Pages$Settings$update,\n\t\tf0: $author$project$Utils$Auth$protected($author$project$Pages$Settings$view)\n\t});\nvar $author$project$Pages$Top$FeedFor = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Pages$Top$Global = {$: 1};\nvar $author$project$Pages$Top$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar activeTab = A2(\n\t\t\t$elm$core$Maybe$withDefault,\n\t\t\t$author$project$Pages$Top$Global,\n\t\t\tA2($elm$core$Maybe$map, $author$project$Pages$Top$FeedFor, shared.O));\n\t\tvar model = {dc: activeTab, dN: $author$project$Api$Data$Loading, eo: $author$project$Api$Data$Loading, O: shared.O};\n\t\treturn _Utils_Tuple2(\n\t\t\tmodel,\n\t\t\t$elm$core$Platform$Cmd$batch(_List_Nil));\n\t});\nvar $author$project$Pages$Top$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Top$save = F2(\n\tfunction (_v0, shared) {\n\t\treturn shared;\n\t});\nvar $author$project$Pages$Top$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Top$update = F2(\n\tfunction (msg, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Top$view = function (model) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('home-page')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('banner')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container')\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t])),\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('row')\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('col-md-9')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]),\n\t\tfR: ''\n\t};\n};\nvar $author$project$Pages$Top$page = $author$project$Spa$Page$application(\n\t{fa: $author$project$Pages$Top$init, ff: $author$project$Pages$Top$load, fI: $author$project$Pages$Top$save, fN: $author$project$Pages$Top$subscriptions, fZ: $author$project$Pages$Top$update, f0: $author$project$Pages$Top$view});\nvar $elm$core$List$drop = F2(\n\tfunction (n, list) {\n\t\tdrop:\n\t\twhile (true) {\n\t\t\tif (n <= 0) {\n\t\t\t\treturn list;\n\t\t\t} else {\n\t\t\t\tif (!list.b) {\n\t\t\t\t\treturn list;\n\t\t\t\t} else {\n\t\t\t\t\tvar x = list.a;\n\t\t\t\t\tvar xs = list.b;\n\t\t\t\t\tvar $temp$n = n - 1,\n\t\t\t\t\t\t$temp$list = xs;\n\t\t\t\t\tn = $temp$n;\n\t\t\t\t\tlist = $temp$list;\n\t\t\t\t\tcontinue drop;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$fromList = function (assocs) {\n\treturn A3(\n\t\t$elm$core$List$foldl,\n\t\tF2(\n\t\t\tfunction (_v0, dict) {\n\t\t\t\tvar key = _v0.a;\n\t\t\t\tvar value = _v0.b;\n\t\t\t\treturn A3($elm$core$Dict$insert, key, value, dict);\n\t\t\t}),\n\t\t$elm$core$Dict$empty,\n\t\tassocs);\n};\nvar $elm$core$List$head = function (list) {\n\tif (list.b) {\n\t\tvar x = list.a;\n\t\tvar xs = list.b;\n\t\treturn $elm$core$Maybe$Just(x);\n\t} else {\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n};\nvar $elm$core$Tuple$mapBoth = F3(\n\tfunction (funcA, funcB, _v0) {\n\t\tvar x = _v0.a;\n\t\tvar y = _v0.b;\n\t\treturn _Utils_Tuple2(\n\t\t\tfuncA(x),\n\t\t\tfuncB(y));\n\t});\nvar $author$project$Spa$Url$toQueryDict = function (queryString) {\n\tvar second = A2(\n\t\t$elm$core$Basics$composeR,\n\t\t$elm$core$List$drop(1),\n\t\t$elm$core$List$head);\n\tvar toTuple = function (list) {\n\t\treturn A2(\n\t\t\t$elm$core$Maybe$map,\n\t\t\tfunction (first) {\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\tfirst,\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$core$Maybe$withDefault,\n\t\t\t\t\t\t'',\n\t\t\t\t\t\tsecond(list)));\n\t\t\t},\n\t\t\t$elm$core$List$head(list));\n\t};\n\tvar decode = A2(\n\t\t$elm$core$Basics$composeR,\n\t\t$elm$url$Url$percentDecode,\n\t\t$elm$core$Maybe$withDefault(''));\n\treturn $elm$core$Dict$fromList(\n\t\tA2(\n\t\t\t$elm$core$List$map,\n\t\t\tA2($elm$core$Tuple$mapBoth, decode, decode),\n\t\t\tA2(\n\t\t\t\t$elm$core$List$filterMap,\n\t\t\t\ttoTuple,\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t$elm$core$String$split('='),\n\t\t\t\t\tA2($elm$core$String$split, '&', queryString)))));\n};\nvar $author$project$Spa$Url$create = F3(\n\tfunction (params, key, url) {\n\t\treturn {\n\t\t\tfc: key,\n\t\t\tfA: params,\n\t\t\tcT: A2(\n\t\t\t\t$elm$core$Maybe$withDefault,\n\t\t\t\t$elm$core$Dict$empty,\n\t\t\t\tA2($elm$core$Maybe$map, $author$project$Spa$Url$toQueryDict, url.cT)),\n\t\t\td4: url\n\t\t};\n\t});\nvar $elm$core$Platform$Cmd$map = _Platform_map;\nvar $elm$core$Platform$Sub$map = _Platform_map;\nvar $elm$virtual_dom$VirtualDom$map = _VirtualDom_map;\nvar $elm$html$Html$map = $elm$virtual_dom$VirtualDom$map;\nvar $author$project$Spa$Document$map = F2(\n\tfunction (fn, doc) {\n\t\treturn {\n\t\t\teJ: A2(\n\t\t\t\t$elm$core$List$map,\n\t\t\t\t$elm$html$Html$map(fn),\n\t\t\t\tdoc.eJ),\n\t\t\tfR: doc.fR\n\t\t};\n\t});\nvar $author$project$Spa$Generated$Pages$upgrade = F3(\n\tfunction (toModel, toMsg, page) {\n\t\tvar update_ = F2(\n\t\t\tfunction (msg, model) {\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$core$Tuple$mapBoth,\n\t\t\t\t\ttoModel,\n\t\t\t\t\t$elm$core$Platform$Cmd$map(toMsg),\n\t\t\t\t\tA2(page.fZ, msg, model));\n\t\t\t});\n\t\tvar load_ = F2(\n\t\t\tfunction (model, shared) {\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$core$Tuple$mapBoth,\n\t\t\t\t\ttoModel,\n\t\t\t\t\t$elm$core$Platform$Cmd$map(toMsg),\n\t\t\t\t\tA2(page.ff, shared, model));\n\t\t\t});\n\t\tvar init_ = F2(\n\t\t\tfunction (params, shared) {\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$core$Tuple$mapBoth,\n\t\t\t\t\ttoModel,\n\t\t\t\t\t$elm$core$Platform$Cmd$map(toMsg),\n\t\t\t\t\tA2(\n\t\t\t\t\t\tpage.fa,\n\t\t\t\t\t\tshared,\n\t\t\t\t\t\tA3($author$project$Spa$Url$create, params, shared.fc, shared.f_)));\n\t\t\t});\n\t\tvar bundle_ = function (model) {\n\t\t\treturn {\n\t\t\t\tff: load_(model),\n\t\t\t\tfI: page.fI(model),\n\t\t\t\tfN: A2(\n\t\t\t\t\t$elm$core$Platform$Sub$map,\n\t\t\t\t\ttoMsg,\n\t\t\t\t\tpage.fN(model)),\n\t\t\t\tf0: A2(\n\t\t\t\t\t$author$project$Spa$Document$map,\n\t\t\t\t\ttoMsg,\n\t\t\t\t\tpage.f0(model))\n\t\t\t};\n\t\t};\n\t\treturn {D: bundle_, fa: init_, fZ: update_};\n\t});\nvar $author$project$Spa$Generated$Pages$pages = {\n\tbu: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Login__Model, $author$project$Spa$Generated$Pages$Login__Msg, $author$project$Pages$Login$page),\n\tby: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$NotFound__Model, $author$project$Spa$Generated$Pages$NotFound__Msg, $author$project$Pages$NotFound$page),\n\tbR: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Profile__Username_String__Model, $author$project$Spa$Generated$Pages$Profile__Username_String__Msg, $author$project$Pages$Profile$Username_String$page),\n\tbS: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Projects__Model, $author$project$Spa$Generated$Pages$Projects__Msg, $author$project$Pages$Projects$page),\n\tb2: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Register__Model, $author$project$Spa$Generated$Pages$Register__Msg, $author$project$Pages$Register$page),\n\tb9: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Settings__Model, $author$project$Spa$Generated$Pages$Settings__Msg, $author$project$Pages$Settings$page),\n\tcd: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Top__Model, $author$project$Spa$Generated$Pages$Top__Msg, $author$project$Pages$Top$page)\n};\nvar $author$project$Spa$Generated$Pages$init = function (route) {\n\tswitch (route.$) {\n\t\tcase 0:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.cd.fa(0);\n\t\tcase 1:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bu.fa(0);\n\t\tcase 2:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.by.fa(0);\n\t\tcase 3:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bS.fa(0);\n\t\tcase 4:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.b2.fa(0);\n\t\tcase 5:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.b9.fa(0);\n\t\tdefault:\n\t\t\tvar params = route.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bR.fa(params);\n\t}\n};\nvar $author$project$Main$init = F3(\n\tfunction (flags, url, key) {\n\t\tvar _v0 = A3($author$project$Shared$init, flags, url, key);\n\t\tvar shared = _v0.a;\n\t\tvar sharedCmd = _v0.b;\n\t\tvar _v1 = A2(\n\t\t\t$author$project$Spa$Generated$Pages$init,\n\t\t\t$author$project$Utils$Route$fromUrl(url),\n\t\t\tshared);\n\t\tvar page = _v1.a;\n\t\tvar pageCmd = _v1.b;\n\t\treturn _Utils_Tuple2(\n\t\t\tA2($author$project$Main$Model, shared, page),\n\t\t\t$elm$core$Platform$Cmd$batch(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Shared, sharedCmd),\n\t\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd)\n\t\t\t\t\t])));\n\t});\nvar $author$project$Shared$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Spa$Generated$Pages$bundle = function (bigModel) {\n\tswitch (bigModel.$) {\n\t\tcase 0:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.cd.D(model);\n\t\tcase 1:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bu.D(model);\n\t\tcase 2:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.by.D(model);\n\t\tcase 3:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bS.D(model);\n\t\tcase 4:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.b2.D(model);\n\t\tcase 5:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.b9.D(model);\n\t\tdefault:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bR.D(model);\n\t}\n};\nvar $author$project$Spa$Generated$Pages$subscriptions = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Pages$bundle,\n\tfunction ($) {\n\t\treturn $.fN;\n\t});\nvar $author$project$Main$subscriptions = function (model) {\n\treturn $elm$core$Platform$Sub$batch(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$core$Platform$Sub$map,\n\t\t\t\t$author$project$Main$Shared,\n\t\t\t\t$author$project$Shared$subscriptions(model.x)),\n\t\t\t\tA2(\n\t\t\t\t$elm$core$Platform$Sub$map,\n\t\t\t\t$author$project$Main$Pages,\n\t\t\t\t$author$project$Spa$Generated$Pages$subscriptions(model.C))\n\t\t\t]));\n};\nvar $author$project$Spa$Document$toBrowserDocument = function (doc) {\n\treturn {eJ: doc.eJ, fR: doc.fR};\n};\nvar $elm$browser$Browser$Navigation$load = _Browser_load;\nvar $author$project$Spa$Generated$Pages$load = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Pages$bundle,\n\tfunction ($) {\n\t\treturn $.ff;\n\t});\nvar $author$project$Spa$Generated$Pages$save = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Pages$bundle,\n\tfunction ($) {\n\t\treturn $.fI;\n\t});\nvar $elm$url$Url$addPort = F2(\n\tfunction (maybePort, starter) {\n\t\tif (maybePort.$ === 1) {\n\t\t\treturn starter;\n\t\t} else {\n\t\t\tvar port_ = maybePort.a;\n\t\t\treturn starter + (':' + $elm$core$String$fromInt(port_));\n\t\t}\n\t});\nvar $elm$url$Url$addPrefixed = F3(\n\tfunction (prefix, maybeSegment, starter) {\n\t\tif (maybeSegment.$ === 1) {\n\t\t\treturn starter;\n\t\t} else {\n\t\t\tvar segment = maybeSegment.a;\n\t\t\treturn _Utils_ap(\n\t\t\t\tstarter,\n\t\t\t\t_Utils_ap(prefix, segment));\n\t\t}\n\t});\nvar $elm$url$Url$toString = function (url) {\n\tvar http = function () {\n\t\tvar _v0 = url.d3;\n\t\tif (!_v0) {\n\t\t\treturn 'http://';\n\t\t} else {\n\t\t\treturn 'https://';\n\t\t}\n\t}();\n\treturn A3(\n\t\t$elm$url$Url$addPrefixed,\n\t\t'#',\n\t\turl.dx,\n\t\tA3(\n\t\t\t$elm$url$Url$addPrefixed,\n\t\t\t'?',\n\t\t\turl.cT,\n\t\t\t_Utils_ap(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$url$Url$addPort,\n\t\t\t\t\turl.d_,\n\t\t\t\t\t_Utils_ap(http, url.e6)),\n\t\t\t\turl.dY)));\n};\nvar $elm$json$Json$Encode$null = _Json_encodeNull;\nvar $author$project$Ports$clearUser = $author$project$Ports$outgoing(\n\t{ct: $elm$json$Json$Encode$null, c8: 'clearUser'});\nvar $author$project$Shared$update = F2(\n\tfunction (msg, model) {\n\t\treturn _Utils_Tuple2(\n\t\t\t_Utils_update(\n\t\t\t\tmodel,\n\t\t\t\t{O: $elm$core$Maybe$Nothing}),\n\t\t\t$author$project$Ports$clearUser);\n\t});\nvar $author$project$Spa$Generated$Pages$update = F2(\n\tfunction (bigMsg, bigModel) {\n\t\tvar _v0 = _Utils_Tuple2(bigMsg, bigModel);\n\t\t_v0$7:\n\t\twhile (true) {\n\t\t\tswitch (_v0.a.$) {\n\t\t\t\tcase 0:\n\t\t\t\t\tif (!_v0.b.$) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.cd.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 1:\n\t\t\t\t\tif (_v0.b.$ === 1) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.bu.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 2:\n\t\t\t\t\tif (_v0.b.$ === 2) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.by.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 3:\n\t\t\t\t\tif (_v0.b.$ === 3) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.bS.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 4:\n\t\t\t\t\tif (_v0.b.$ === 4) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.b2.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 5:\n\t\t\t\t\tif (_v0.b.$ === 5) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.b9.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tif (_v0.b.$ === 6) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.bR.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn _Utils_Tuple2(bigModel, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Main$update = F2(\n\tfunction (msg, model) {\n\t\tswitch (msg.$) {\n\t\t\tcase 0:\n\t\t\t\tif (!msg.a.$) {\n\t\t\t\t\tvar url = msg.a.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$browser$Browser$Navigation$pushUrl,\n\t\t\t\t\t\t\tmodel.x.fc,\n\t\t\t\t\t\t\t$elm$url$Url$toString(url)));\n\t\t\t\t} else {\n\t\t\t\t\tvar href = msg.a.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t$elm$browser$Browser$Navigation$load(href));\n\t\t\t\t}\n\t\t\tcase 1:\n\t\t\t\tvar url = msg.a;\n\t\t\t\tvar original = model.x;\n\t\t\t\tvar shared = _Utils_update(\n\t\t\t\t\toriginal,\n\t\t\t\t\t{f_: url});\n\t\t\t\tvar _v1 = _Utils_eq(url.dY, model.x.f_.dY) ? A2($author$project$Spa$Generated$Pages$load, model.C, shared) : A2(\n\t\t\t\t\t$author$project$Spa$Generated$Pages$init,\n\t\t\t\t\t$author$project$Utils$Route$fromUrl(url),\n\t\t\t\t\tshared);\n\t\t\t\tvar page = _v1.a;\n\t\t\t\tvar pageCmd = _v1.b;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tC: page,\n\t\t\t\t\t\t\tx: A2($author$project$Spa$Generated$Pages$save, page, shared)\n\t\t\t\t\t\t}),\n\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd));\n\t\t\tcase 2:\n\t\t\t\tvar sharedMsg = msg.a;\n\t\t\t\tvar _v2 = A2($author$project$Shared$update, sharedMsg, model.x);\n\t\t\t\tvar shared = _v2.a;\n\t\t\t\tvar sharedCmd = _v2.b;\n\t\t\t\tvar _v3 = A2($author$project$Spa$Generated$Pages$load, model.C, shared);\n\t\t\t\tvar page = _v3.a;\n\t\t\t\tvar pageCmd = _v3.b;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{C: page, x: shared}),\n\t\t\t\t\t$elm$core$Platform$Cmd$batch(\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Shared, sharedCmd),\n\t\t\t\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd)\n\t\t\t\t\t\t\t])));\n\t\t\tdefault:\n\t\t\t\tvar pageMsg = msg.a;\n\t\t\t\tvar _v4 = A2($author$project$Spa$Generated$Pages$update, pageMsg, model.C);\n\t\t\t\tvar page = _v4.a;\n\t\t\t\tvar pageCmd = _v4.b;\n\t\t\t\tvar shared = A2($author$project$Spa$Generated$Pages$save, page, model.x);\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{C: page, x: shared}),\n\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd));\n\t\t}\n\t});\nvar $elm$json$Json$Decode$value = _Json_decodeValue;\nvar $author$project$Shared$ClickedSignOut = 0;\nvar $elm$virtual_dom$VirtualDom$node = function (tag) {\n\treturn _VirtualDom_node(\n\t\t_VirtualDom_noScript(tag));\n};\nvar $elm$html$Html$node = $elm$virtual_dom$VirtualDom$node;\nvar $elm$html$Html$Attributes$rel = _VirtualDom_attribute('rel');\nvar $author$project$Shared$slogan = 'Highly flexible Application Runtime Platform';\nvar $rundis$elm_bootstrap$Bootstrap$CDN$stylesheet = A3(\n\t$elm$html$Html$node,\n\t'link',\n\t_List_fromArray(\n\t\t[\n\t\t\t$elm$html$Html$Attributes$rel('stylesheet'),\n\t\t\t$elm$html$Html$Attributes$href('https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css')\n\t\t]),\n\t_List_Nil);\nvar $elm$html$Html$footer = _VirtualDom_node('footer');\nvar $author$project$Components$Footer$view = A2(\n\t$elm$html$Html$footer,\n\t_List_fromArray(\n\t\t[\n\t\t\t$elm$html$Html$Attributes$class('footer')\n\t\t]),\n\t_List_fromArray(\n\t\t[\n\t\t\tA2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('container text-center')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$span,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-muted')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text('© 2020 Copyright sahli.net')\n\t\t\t\t\t\t]))\n\t\t\t\t]))\n\t\t]));\nvar $elm$virtual_dom$VirtualDom$property = F2(\n\tfunction (key, value) {\n\t\treturn A2(\n\t\t\t_VirtualDom_property,\n\t\t\t_VirtualDom_noInnerHtmlOrFormAction(key),\n\t\t\t_VirtualDom_noJavaScriptOrHtmlUri(value));\n\t});\nvar $elm$html$Html$Attributes$property = $elm$virtual_dom$VirtualDom$property;\nvar $author$project$Components$Navbar$stringProperty = F2(\n\tfunction (name, string) {\n\t\treturn A2(\n\t\t\t$elm$html$Html$Attributes$property,\n\t\t\tname,\n\t\t\t$elm$json$Json$Encode$string(string));\n\t});\nvar $author$project$Components$Navbar$ariaControls = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'aria-controls', value);\n};\nvar $author$project$Components$Navbar$ariaExpanded = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'aria-expanded', value);\n};\nvar $author$project$Components$Navbar$ariaLabel = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'aria-label', value);\n};\nvar $author$project$Components$Navbar$dataTarget = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'data-target', value);\n};\nvar $author$project$Components$Navbar$dataToggle = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'data-toggle', value);\n};\nvar $elm$html$Html$i = _VirtualDom_node('i');\nvar $elm$html$Html$Attributes$id = $elm$html$Html$Attributes$stringProperty('id');\nvar $elm$html$Html$nav = _VirtualDom_node('nav');\nvar $elm$virtual_dom$VirtualDom$style = _VirtualDom_style;\nvar $elm$html$Html$Attributes$style = $elm$virtual_dom$VirtualDom$style;\nvar $author$project$Components$Navbar$viewLink = F2(\n\tfunction (currentRoute, _v0) {\n\t\tvar label = _v0.a;\n\t\tvar route = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$html$Html$li,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('nav-item')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-link'),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$classList(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t'active',\n\t\t\t\t\t\t\t\t\t_Utils_eq(currentRoute, route))\n\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t\t$author$project$Spa$Generated$Route$toString(route))\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text(label)\n\t\t\t\t\t\t]))\n\t\t\t\t]));\n\t});\nvar $author$project$Components$Navbar$view = function (options) {\n\treturn A2(\n\t\t$elm$html$Html$nav,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('navbar navbar-expand-lg navbar-light')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$a,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('navbar-brand'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t$author$project$Spa$Generated$Route$toString($author$project$Spa$Generated$Route$Top)),\n\t\t\t\t\t\tA2($elm$html$Html$Attributes$style, 'color', '#FF5733')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text('Tumbo')\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$button,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('navbar-toggler'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$type_('button'),\n\t\t\t\t\t\t$author$project$Components$Navbar$dataToggle('collapse'),\n\t\t\t\t\t\t$author$project$Components$Navbar$dataTarget('#navbarTogglerDemo02'),\n\t\t\t\t\t\t$author$project$Components$Navbar$ariaControls('navbarTogglerDemo02'),\n\t\t\t\t\t\t$author$project$Components$Navbar$ariaExpanded('false'),\n\t\t\t\t\t\t$author$project$Components$Navbar$ariaLabel('Toggle navigation')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$span,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('navbar-toggler-icon')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('collapse navbar-collapse'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$id('navbarTogglerDemo02')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$ul,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav navbar-nav ml-auto')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\tvar _v0 = options.O;\n\t\t\t\t\t\t\tif (!_v0.$) {\n\t\t\t\t\t\t\t\treturn $elm$core$List$concat(\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t\t\t\t\t\t\t$author$project$Components$Navbar$viewLink(options.dn),\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Home', $author$project$Spa$Generated$Route$Top),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Projects', $author$project$Spa$Generated$Route$Projects),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Settings', $author$project$Spa$Generated$Route$Settings)\n\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$li,\n\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-item')\n\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-link'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onClick(options.fv)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Sign out')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t\t\t\t\t$author$project$Components$Navbar$viewLink(options.dn),\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Home', $author$project$Spa$Generated$Route$Top),\n\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Sign in', $author$project$Spa$Generated$Route$Login),\n\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Sign up', $author$project$Spa$Generated$Route$Register)\n\t\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}()),\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$target('blank'),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('https://github.com/sahlinet/go-tumbo3')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$i,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('fa fa-github'),\n\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$Attributes$style, 'color', 'black')\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]));\n};\nvar $author$project$Shared$view = F2(\n\tfunction (_v0, model) {\n\t\tvar page = _v0.C;\n\t\tvar toMsg = _v0.fV;\n\t\treturn {\n\t\t\teJ: _List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA3(\n\t\t\t\t\t$elm$html$Html$node,\n\t\t\t\t\t'link',\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$rel('stylesheet'),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_Nil),\n\t\t\t\t\t$rundis$elm_bootstrap$Bootstrap$CDN$stylesheet,\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('layout')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$author$project$Components$Navbar$view(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdn: $author$project$Utils$Route$fromUrl(model.f_),\n\t\t\t\t\t\t\t\tfv: toMsg(0),\n\t\t\t\t\t\t\t\tO: model.O\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('jumbotron')\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$text($author$project$Shared$slogan)\n\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('page')\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\tpage.eJ),\n\t\t\t\t\t\t\t$author$project$Components$Footer$view\n\t\t\t\t\t\t]))\n\t\t\t\t]),\n\t\t\tfR: $elm$core$String$isEmpty(page.fR) ? 'Tumbo' : (page.fR + ' | Tumbo')\n\t\t};\n\t});\nvar $author$project$Spa$Generated$Pages$view = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Pages$bundle,\n\tfunction ($) {\n\t\treturn $.f0;\n\t});\nvar $author$project$Main$view = function (model) {\n\treturn A2(\n\t\t$author$project$Shared$view,\n\t\t{\n\t\t\tC: A2(\n\t\t\t\t$author$project$Spa$Document$map,\n\t\t\t\t$author$project$Main$Pages,\n\t\t\t\t$author$project$Spa$Generated$Pages$view(model.C)),\n\t\t\tfV: $author$project$Main$Shared\n\t\t},\n\t\tmodel.x);\n};\nvar $author$project$Main$main = $elm$browser$Browser$application(\n\t{\n\t\tfa: $author$project$Main$init,\n\t\tfw: $author$project$Main$UrlChanged,\n\t\tfx: $author$project$Main$LinkClicked,\n\t\tfN: $author$project$Main$subscriptions,\n\t\tfZ: $author$project$Main$update,\n\t\tf0: A2($elm$core$Basics$composeR, $author$project$Main$view, $author$project$Spa$Document$toBrowserDocument)\n\t});\n_Platform_export({'Main':{'init':$author$project$Main$main($elm$json$Json$Decode$value)(0)}});}(this));"), + Content: string("(function(scope){\n'use strict';\n\nfunction F(arity, fun, wrapper) {\n wrapper.a = arity;\n wrapper.f = fun;\n return wrapper;\n}\n\nfunction F2(fun) {\n return F(2, fun, function(a) { return function(b) { return fun(a,b); }; })\n}\nfunction F3(fun) {\n return F(3, fun, function(a) {\n return function(b) { return function(c) { return fun(a, b, c); }; };\n });\n}\nfunction F4(fun) {\n return F(4, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return fun(a, b, c, d); }; }; };\n });\n}\nfunction F5(fun) {\n return F(5, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return fun(a, b, c, d, e); }; }; }; };\n });\n}\nfunction F6(fun) {\n return F(6, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return fun(a, b, c, d, e, f); }; }; }; }; };\n });\n}\nfunction F7(fun) {\n return F(7, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return fun(a, b, c, d, e, f, g); }; }; }; }; }; };\n });\n}\nfunction F8(fun) {\n return F(8, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return function(h) {\n return fun(a, b, c, d, e, f, g, h); }; }; }; }; }; }; };\n });\n}\nfunction F9(fun) {\n return F(9, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return function(h) { return function(i) {\n return fun(a, b, c, d, e, f, g, h, i); }; }; }; }; }; }; }; };\n });\n}\n\nfunction A2(fun, a, b) {\n return fun.a === 2 ? fun.f(a, b) : fun(a)(b);\n}\nfunction A3(fun, a, b, c) {\n return fun.a === 3 ? fun.f(a, b, c) : fun(a)(b)(c);\n}\nfunction A4(fun, a, b, c, d) {\n return fun.a === 4 ? fun.f(a, b, c, d) : fun(a)(b)(c)(d);\n}\nfunction A5(fun, a, b, c, d, e) {\n return fun.a === 5 ? fun.f(a, b, c, d, e) : fun(a)(b)(c)(d)(e);\n}\nfunction A6(fun, a, b, c, d, e, f) {\n return fun.a === 6 ? fun.f(a, b, c, d, e, f) : fun(a)(b)(c)(d)(e)(f);\n}\nfunction A7(fun, a, b, c, d, e, f, g) {\n return fun.a === 7 ? fun.f(a, b, c, d, e, f, g) : fun(a)(b)(c)(d)(e)(f)(g);\n}\nfunction A8(fun, a, b, c, d, e, f, g, h) {\n return fun.a === 8 ? fun.f(a, b, c, d, e, f, g, h) : fun(a)(b)(c)(d)(e)(f)(g)(h);\n}\nfunction A9(fun, a, b, c, d, e, f, g, h, i) {\n return fun.a === 9 ? fun.f(a, b, c, d, e, f, g, h, i) : fun(a)(b)(c)(d)(e)(f)(g)(h)(i);\n}\n\n\n\n\n// EQUALITY\n\nfunction _Utils_eq(x, y)\n{\n\tfor (\n\t\tvar pair, stack = [], isEqual = _Utils_eqHelp(x, y, 0, stack);\n\t\tisEqual && (pair = stack.pop());\n\t\tisEqual = _Utils_eqHelp(pair.a, pair.b, 0, stack)\n\t\t)\n\t{}\n\n\treturn isEqual;\n}\n\nfunction _Utils_eqHelp(x, y, depth, stack)\n{\n\tif (x === y)\n\t{\n\t\treturn true;\n\t}\n\n\tif (typeof x !== 'object' || x === null || y === null)\n\t{\n\t\ttypeof x === 'function' && _Debug_crash(5);\n\t\treturn false;\n\t}\n\n\tif (depth > 100)\n\t{\n\t\tstack.push(_Utils_Tuple2(x,y));\n\t\treturn true;\n\t}\n\n\t/**_UNUSED/\n\tif (x.$ === 'Set_elm_builtin')\n\t{\n\t\tx = $elm$core$Set$toList(x);\n\t\ty = $elm$core$Set$toList(y);\n\t}\n\tif (x.$ === 'RBNode_elm_builtin' || x.$ === 'RBEmpty_elm_builtin')\n\t{\n\t\tx = $elm$core$Dict$toList(x);\n\t\ty = $elm$core$Dict$toList(y);\n\t}\n\t//*/\n\n\t/**/\n\tif (x.$ < 0)\n\t{\n\t\tx = $elm$core$Dict$toList(x);\n\t\ty = $elm$core$Dict$toList(y);\n\t}\n\t//*/\n\n\tfor (var key in x)\n\t{\n\t\tif (!_Utils_eqHelp(x[key], y[key], depth + 1, stack))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nvar _Utils_equal = F2(_Utils_eq);\nvar _Utils_notEqual = F2(function(a, b) { return !_Utils_eq(a,b); });\n\n\n\n// COMPARISONS\n\n// Code in Generate/JavaScript.hs, Basics.js, and List.js depends on\n// the particular integer values assigned to LT, EQ, and GT.\n\nfunction _Utils_cmp(x, y, ord)\n{\n\tif (typeof x !== 'object')\n\t{\n\t\treturn x === y ? /*EQ*/ 0 : x < y ? /*LT*/ -1 : /*GT*/ 1;\n\t}\n\n\t/**_UNUSED/\n\tif (x instanceof String)\n\t{\n\t\tvar a = x.valueOf();\n\t\tvar b = y.valueOf();\n\t\treturn a === b ? 0 : a < b ? -1 : 1;\n\t}\n\t//*/\n\n\t/**/\n\tif (typeof x.$ === 'undefined')\n\t//*/\n\t/**_UNUSED/\n\tif (x.$[0] === '#')\n\t//*/\n\t{\n\t\treturn (ord = _Utils_cmp(x.a, y.a))\n\t\t\t? ord\n\t\t\t: (ord = _Utils_cmp(x.b, y.b))\n\t\t\t\t? ord\n\t\t\t\t: _Utils_cmp(x.c, y.c);\n\t}\n\n\t// traverse conses until end of a list or a mismatch\n\tfor (; x.b && y.b && !(ord = _Utils_cmp(x.a, y.a)); x = x.b, y = y.b) {} // WHILE_CONSES\n\treturn ord || (x.b ? /*GT*/ 1 : y.b ? /*LT*/ -1 : /*EQ*/ 0);\n}\n\nvar _Utils_lt = F2(function(a, b) { return _Utils_cmp(a, b) < 0; });\nvar _Utils_le = F2(function(a, b) { return _Utils_cmp(a, b) < 1; });\nvar _Utils_gt = F2(function(a, b) { return _Utils_cmp(a, b) > 0; });\nvar _Utils_ge = F2(function(a, b) { return _Utils_cmp(a, b) >= 0; });\n\nvar _Utils_compare = F2(function(x, y)\n{\n\tvar n = _Utils_cmp(x, y);\n\treturn n < 0 ? $elm$core$Basics$LT : n ? $elm$core$Basics$GT : $elm$core$Basics$EQ;\n});\n\n\n// COMMON VALUES\n\nvar _Utils_Tuple0 = 0;\nvar _Utils_Tuple0_UNUSED = { $: '#0' };\n\nfunction _Utils_Tuple2(a, b) { return { a: a, b: b }; }\nfunction _Utils_Tuple2_UNUSED(a, b) { return { $: '#2', a: a, b: b }; }\n\nfunction _Utils_Tuple3(a, b, c) { return { a: a, b: b, c: c }; }\nfunction _Utils_Tuple3_UNUSED(a, b, c) { return { $: '#3', a: a, b: b, c: c }; }\n\nfunction _Utils_chr(c) { return c; }\nfunction _Utils_chr_UNUSED(c) { return new String(c); }\n\n\n// RECORDS\n\nfunction _Utils_update(oldRecord, updatedFields)\n{\n\tvar newRecord = {};\n\n\tfor (var key in oldRecord)\n\t{\n\t\tnewRecord[key] = oldRecord[key];\n\t}\n\n\tfor (var key in updatedFields)\n\t{\n\t\tnewRecord[key] = updatedFields[key];\n\t}\n\n\treturn newRecord;\n}\n\n\n// APPEND\n\nvar _Utils_append = F2(_Utils_ap);\n\nfunction _Utils_ap(xs, ys)\n{\n\t// append Strings\n\tif (typeof xs === 'string')\n\t{\n\t\treturn xs + ys;\n\t}\n\n\t// append Lists\n\tif (!xs.b)\n\t{\n\t\treturn ys;\n\t}\n\tvar root = _List_Cons(xs.a, ys);\n\txs = xs.b\n\tfor (var curr = root; xs.b; xs = xs.b) // WHILE_CONS\n\t{\n\t\tcurr = curr.b = _List_Cons(xs.a, ys);\n\t}\n\treturn root;\n}\n\n\n\nvar _List_Nil = { $: 0 };\nvar _List_Nil_UNUSED = { $: '[]' };\n\nfunction _List_Cons(hd, tl) { return { $: 1, a: hd, b: tl }; }\nfunction _List_Cons_UNUSED(hd, tl) { return { $: '::', a: hd, b: tl }; }\n\n\nvar _List_cons = F2(_List_Cons);\n\nfunction _List_fromArray(arr)\n{\n\tvar out = _List_Nil;\n\tfor (var i = arr.length; i--; )\n\t{\n\t\tout = _List_Cons(arr[i], out);\n\t}\n\treturn out;\n}\n\nfunction _List_toArray(xs)\n{\n\tfor (var out = []; xs.b; xs = xs.b) // WHILE_CONS\n\t{\n\t\tout.push(xs.a);\n\t}\n\treturn out;\n}\n\nvar _List_map2 = F3(function(f, xs, ys)\n{\n\tfor (var arr = []; xs.b && ys.b; xs = xs.b, ys = ys.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A2(f, xs.a, ys.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map3 = F4(function(f, xs, ys, zs)\n{\n\tfor (var arr = []; xs.b && ys.b && zs.b; xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A3(f, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map4 = F5(function(f, ws, xs, ys, zs)\n{\n\tfor (var arr = []; ws.b && xs.b && ys.b && zs.b; ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A4(f, ws.a, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map5 = F6(function(f, vs, ws, xs, ys, zs)\n{\n\tfor (var arr = []; vs.b && ws.b && xs.b && ys.b && zs.b; vs = vs.b, ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A5(f, vs.a, ws.a, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_sortBy = F2(function(f, xs)\n{\n\treturn _List_fromArray(_List_toArray(xs).sort(function(a, b) {\n\t\treturn _Utils_cmp(f(a), f(b));\n\t}));\n});\n\nvar _List_sortWith = F2(function(f, xs)\n{\n\treturn _List_fromArray(_List_toArray(xs).sort(function(a, b) {\n\t\tvar ord = A2(f, a, b);\n\t\treturn ord === $elm$core$Basics$EQ ? 0 : ord === $elm$core$Basics$LT ? -1 : 1;\n\t}));\n});\n\n\n\nvar _JsArray_empty = [];\n\nfunction _JsArray_singleton(value)\n{\n return [value];\n}\n\nfunction _JsArray_length(array)\n{\n return array.length;\n}\n\nvar _JsArray_initialize = F3(function(size, offset, func)\n{\n var result = new Array(size);\n\n for (var i = 0; i < size; i++)\n {\n result[i] = func(offset + i);\n }\n\n return result;\n});\n\nvar _JsArray_initializeFromList = F2(function (max, ls)\n{\n var result = new Array(max);\n\n for (var i = 0; i < max && ls.b; i++)\n {\n result[i] = ls.a;\n ls = ls.b;\n }\n\n result.length = i;\n return _Utils_Tuple2(result, ls);\n});\n\nvar _JsArray_unsafeGet = F2(function(index, array)\n{\n return array[index];\n});\n\nvar _JsArray_unsafeSet = F3(function(index, value, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = array[i];\n }\n\n result[index] = value;\n return result;\n});\n\nvar _JsArray_push = F2(function(value, array)\n{\n var length = array.length;\n var result = new Array(length + 1);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = array[i];\n }\n\n result[length] = value;\n return result;\n});\n\nvar _JsArray_foldl = F3(function(func, acc, array)\n{\n var length = array.length;\n\n for (var i = 0; i < length; i++)\n {\n acc = A2(func, array[i], acc);\n }\n\n return acc;\n});\n\nvar _JsArray_foldr = F3(function(func, acc, array)\n{\n for (var i = array.length - 1; i >= 0; i--)\n {\n acc = A2(func, array[i], acc);\n }\n\n return acc;\n});\n\nvar _JsArray_map = F2(function(func, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = func(array[i]);\n }\n\n return result;\n});\n\nvar _JsArray_indexedMap = F3(function(func, offset, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = A2(func, offset + i, array[i]);\n }\n\n return result;\n});\n\nvar _JsArray_slice = F3(function(from, to, array)\n{\n return array.slice(from, to);\n});\n\nvar _JsArray_appendN = F3(function(n, dest, source)\n{\n var destLen = dest.length;\n var itemsToCopy = n - destLen;\n\n if (itemsToCopy > source.length)\n {\n itemsToCopy = source.length;\n }\n\n var size = destLen + itemsToCopy;\n var result = new Array(size);\n\n for (var i = 0; i < destLen; i++)\n {\n result[i] = dest[i];\n }\n\n for (var i = 0; i < itemsToCopy; i++)\n {\n result[i + destLen] = source[i];\n }\n\n return result;\n});\n\n\n\n// LOG\n\nvar _Debug_log = F2(function(tag, value)\n{\n\treturn value;\n});\n\nvar _Debug_log_UNUSED = F2(function(tag, value)\n{\n\tconsole.log(tag + ': ' + _Debug_toString(value));\n\treturn value;\n});\n\n\n// TODOS\n\nfunction _Debug_todo(moduleName, region)\n{\n\treturn function(message) {\n\t\t_Debug_crash(8, moduleName, region, message);\n\t};\n}\n\nfunction _Debug_todoCase(moduleName, region, value)\n{\n\treturn function(message) {\n\t\t_Debug_crash(9, moduleName, region, value, message);\n\t};\n}\n\n\n// TO STRING\n\nfunction _Debug_toString(value)\n{\n\treturn '';\n}\n\nfunction _Debug_toString_UNUSED(value)\n{\n\treturn _Debug_toAnsiString(false, value);\n}\n\nfunction _Debug_toAnsiString(ansi, value)\n{\n\tif (typeof value === 'function')\n\t{\n\t\treturn _Debug_internalColor(ansi, '');\n\t}\n\n\tif (typeof value === 'boolean')\n\t{\n\t\treturn _Debug_ctorColor(ansi, value ? 'True' : 'False');\n\t}\n\n\tif (typeof value === 'number')\n\t{\n\t\treturn _Debug_numberColor(ansi, value + '');\n\t}\n\n\tif (value instanceof String)\n\t{\n\t\treturn _Debug_charColor(ansi, \"'\" + _Debug_addSlashes(value, true) + \"'\");\n\t}\n\n\tif (typeof value === 'string')\n\t{\n\t\treturn _Debug_stringColor(ansi, '\"' + _Debug_addSlashes(value, false) + '\"');\n\t}\n\n\tif (typeof value === 'object' && '$' in value)\n\t{\n\t\tvar tag = value.$;\n\n\t\tif (typeof tag === 'number')\n\t\t{\n\t\t\treturn _Debug_internalColor(ansi, '');\n\t\t}\n\n\t\tif (tag[0] === '#')\n\t\t{\n\t\t\tvar output = [];\n\t\t\tfor (var k in value)\n\t\t\t{\n\t\t\t\tif (k === '$') continue;\n\t\t\t\toutput.push(_Debug_toAnsiString(ansi, value[k]));\n\t\t\t}\n\t\t\treturn '(' + output.join(',') + ')';\n\t\t}\n\n\t\tif (tag === 'Set_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Set')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Set$toList(value));\n\t\t}\n\n\t\tif (tag === 'RBNode_elm_builtin' || tag === 'RBEmpty_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Dict')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Dict$toList(value));\n\t\t}\n\n\t\tif (tag === 'Array_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Array')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Array$toList(value));\n\t\t}\n\n\t\tif (tag === '::' || tag === '[]')\n\t\t{\n\t\t\tvar output = '[';\n\n\t\t\tvalue.b && (output += _Debug_toAnsiString(ansi, value.a), value = value.b)\n\n\t\t\tfor (; value.b; value = value.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\toutput += ',' + _Debug_toAnsiString(ansi, value.a);\n\t\t\t}\n\t\t\treturn output + ']';\n\t\t}\n\n\t\tvar output = '';\n\t\tfor (var i in value)\n\t\t{\n\t\t\tif (i === '$') continue;\n\t\t\tvar str = _Debug_toAnsiString(ansi, value[i]);\n\t\t\tvar c0 = str[0];\n\t\t\tvar parenless = c0 === '{' || c0 === '(' || c0 === '[' || c0 === '<' || c0 === '\"' || str.indexOf(' ') < 0;\n\t\t\toutput += ' ' + (parenless ? str : '(' + str + ')');\n\t\t}\n\t\treturn _Debug_ctorColor(ansi, tag) + output;\n\t}\n\n\tif (typeof DataView === 'function' && value instanceof DataView)\n\t{\n\t\treturn _Debug_stringColor(ansi, '<' + value.byteLength + ' bytes>');\n\t}\n\n\tif (typeof File !== 'undefined' && value instanceof File)\n\t{\n\t\treturn _Debug_internalColor(ansi, '<' + value.name + '>');\n\t}\n\n\tif (typeof value === 'object')\n\t{\n\t\tvar output = [];\n\t\tfor (var key in value)\n\t\t{\n\t\t\tvar field = key[0] === '_' ? key.slice(1) : key;\n\t\t\toutput.push(_Debug_fadeColor(ansi, field) + ' = ' + _Debug_toAnsiString(ansi, value[key]));\n\t\t}\n\t\tif (output.length === 0)\n\t\t{\n\t\t\treturn '{}';\n\t\t}\n\t\treturn '{ ' + output.join(', ') + ' }';\n\t}\n\n\treturn _Debug_internalColor(ansi, '');\n}\n\nfunction _Debug_addSlashes(str, isChar)\n{\n\tvar s = str\n\t\t.replace(/\\\\/g, '\\\\\\\\')\n\t\t.replace(/\\n/g, '\\\\n')\n\t\t.replace(/\\t/g, '\\\\t')\n\t\t.replace(/\\r/g, '\\\\r')\n\t\t.replace(/\\v/g, '\\\\v')\n\t\t.replace(/\\0/g, '\\\\0');\n\n\tif (isChar)\n\t{\n\t\treturn s.replace(/\\'/g, '\\\\\\'');\n\t}\n\telse\n\t{\n\t\treturn s.replace(/\\\"/g, '\\\\\"');\n\t}\n}\n\nfunction _Debug_ctorColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[96m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_numberColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[95m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_stringColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[93m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_charColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[92m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_fadeColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[37m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_internalColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[36m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_toHexDigit(n)\n{\n\treturn String.fromCharCode(n < 10 ? 48 + n : 55 + n);\n}\n\n\n// CRASH\n\n\nfunction _Debug_crash(identifier)\n{\n\tthrow new Error('https://github.com/elm/core/blob/1.0.0/hints/' + identifier + '.md');\n}\n\n\nfunction _Debug_crash_UNUSED(identifier, fact1, fact2, fact3, fact4)\n{\n\tswitch(identifier)\n\t{\n\t\tcase 0:\n\t\t\tthrow new Error('What node should I take over? In JavaScript I need something like:\\n\\n Elm.Main.init({\\n node: document.getElementById(\"elm-node\")\\n })\\n\\nYou need to do this with any Browser.sandbox or Browser.element program.');\n\n\t\tcase 1:\n\t\t\tthrow new Error('Browser.application programs cannot handle URLs like this:\\n\\n ' + document.location.href + '\\n\\nWhat is the root? The root of your file system? Try looking at this program with `elm reactor` or some other server.');\n\n\t\tcase 2:\n\t\t\tvar jsonErrorString = fact1;\n\t\t\tthrow new Error('Problem with the flags given to your Elm program on initialization.\\n\\n' + jsonErrorString);\n\n\t\tcase 3:\n\t\t\tvar portName = fact1;\n\t\t\tthrow new Error('There can only be one port named `' + portName + '`, but your program has multiple.');\n\n\t\tcase 4:\n\t\t\tvar portName = fact1;\n\t\t\tvar problem = fact2;\n\t\t\tthrow new Error('Trying to send an unexpected type of value through port `' + portName + '`:\\n' + problem);\n\n\t\tcase 5:\n\t\t\tthrow new Error('Trying to use `(==)` on functions.\\nThere is no way to know if functions are \"the same\" in the Elm sense.\\nRead more about this at https://package.elm-lang.org/packages/elm/core/latest/Basics#== which describes why it is this way and what the better version will look like.');\n\n\t\tcase 6:\n\t\t\tvar moduleName = fact1;\n\t\t\tthrow new Error('Your page is loading multiple Elm scripts with a module named ' + moduleName + '. Maybe a duplicate script is getting loaded accidentally? If not, rename one of them so I know which is which!');\n\n\t\tcase 8:\n\t\t\tvar moduleName = fact1;\n\t\t\tvar region = fact2;\n\t\t\tvar message = fact3;\n\t\t\tthrow new Error('TODO in module `' + moduleName + '` ' + _Debug_regionToString(region) + '\\n\\n' + message);\n\n\t\tcase 9:\n\t\t\tvar moduleName = fact1;\n\t\t\tvar region = fact2;\n\t\t\tvar value = fact3;\n\t\t\tvar message = fact4;\n\t\t\tthrow new Error(\n\t\t\t\t'TODO in module `' + moduleName + '` from the `case` expression '\n\t\t\t\t+ _Debug_regionToString(region) + '\\n\\nIt received the following value:\\n\\n '\n\t\t\t\t+ _Debug_toString(value).replace('\\n', '\\n ')\n\t\t\t\t+ '\\n\\nBut the branch that handles it says:\\n\\n ' + message.replace('\\n', '\\n ')\n\t\t\t);\n\n\t\tcase 10:\n\t\t\tthrow new Error('Bug in https://github.com/elm/virtual-dom/issues');\n\n\t\tcase 11:\n\t\t\tthrow new Error('Cannot perform mod 0. Division by zero error.');\n\t}\n}\n\nfunction _Debug_regionToString(region)\n{\n\tif (region.c2.aC === region.ds.aC)\n\t{\n\t\treturn 'on line ' + region.c2.aC;\n\t}\n\treturn 'on lines ' + region.c2.aC + ' through ' + region.ds.aC;\n}\n\n\n\n// MATH\n\nvar _Basics_add = F2(function(a, b) { return a + b; });\nvar _Basics_sub = F2(function(a, b) { return a - b; });\nvar _Basics_mul = F2(function(a, b) { return a * b; });\nvar _Basics_fdiv = F2(function(a, b) { return a / b; });\nvar _Basics_idiv = F2(function(a, b) { return (a / b) | 0; });\nvar _Basics_pow = F2(Math.pow);\n\nvar _Basics_remainderBy = F2(function(b, a) { return a % b; });\n\n// https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/divmodnote-letter.pdf\nvar _Basics_modBy = F2(function(modulus, x)\n{\n\tvar answer = x % modulus;\n\treturn modulus === 0\n\t\t? _Debug_crash(11)\n\t\t:\n\t((answer > 0 && modulus < 0) || (answer < 0 && modulus > 0))\n\t\t? answer + modulus\n\t\t: answer;\n});\n\n\n// TRIGONOMETRY\n\nvar _Basics_pi = Math.PI;\nvar _Basics_e = Math.E;\nvar _Basics_cos = Math.cos;\nvar _Basics_sin = Math.sin;\nvar _Basics_tan = Math.tan;\nvar _Basics_acos = Math.acos;\nvar _Basics_asin = Math.asin;\nvar _Basics_atan = Math.atan;\nvar _Basics_atan2 = F2(Math.atan2);\n\n\n// MORE MATH\n\nfunction _Basics_toFloat(x) { return x; }\nfunction _Basics_truncate(n) { return n | 0; }\nfunction _Basics_isInfinite(n) { return n === Infinity || n === -Infinity; }\n\nvar _Basics_ceiling = Math.ceil;\nvar _Basics_floor = Math.floor;\nvar _Basics_round = Math.round;\nvar _Basics_sqrt = Math.sqrt;\nvar _Basics_log = Math.log;\nvar _Basics_isNaN = isNaN;\n\n\n// BOOLEANS\n\nfunction _Basics_not(bool) { return !bool; }\nvar _Basics_and = F2(function(a, b) { return a && b; });\nvar _Basics_or = F2(function(a, b) { return a || b; });\nvar _Basics_xor = F2(function(a, b) { return a !== b; });\n\n\n\nvar _String_cons = F2(function(chr, str)\n{\n\treturn chr + str;\n});\n\nfunction _String_uncons(string)\n{\n\tvar word = string.charCodeAt(0);\n\treturn !isNaN(word)\n\t\t? $elm$core$Maybe$Just(\n\t\t\t0xD800 <= word && word <= 0xDBFF\n\t\t\t\t? _Utils_Tuple2(_Utils_chr(string[0] + string[1]), string.slice(2))\n\t\t\t\t: _Utils_Tuple2(_Utils_chr(string[0]), string.slice(1))\n\t\t)\n\t\t: $elm$core$Maybe$Nothing;\n}\n\nvar _String_append = F2(function(a, b)\n{\n\treturn a + b;\n});\n\nfunction _String_length(str)\n{\n\treturn str.length;\n}\n\nvar _String_map = F2(function(func, string)\n{\n\tvar len = string.length;\n\tvar array = new Array(len);\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tarray[i] = func(_Utils_chr(string[i] + string[i+1]));\n\t\t\ti += 2;\n\t\t\tcontinue;\n\t\t}\n\t\tarray[i] = func(_Utils_chr(string[i]));\n\t\ti++;\n\t}\n\treturn array.join('');\n});\n\nvar _String_filter = F2(function(isGood, str)\n{\n\tvar arr = [];\n\tvar len = str.length;\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar char = str[i];\n\t\tvar word = str.charCodeAt(i);\n\t\ti++;\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tchar += str[i];\n\t\t\ti++;\n\t\t}\n\n\t\tif (isGood(_Utils_chr(char)))\n\t\t{\n\t\t\tarr.push(char);\n\t\t}\n\t}\n\treturn arr.join('');\n});\n\nfunction _String_reverse(str)\n{\n\tvar len = str.length;\n\tvar arr = new Array(len);\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar word = str.charCodeAt(i);\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tarr[len - i] = str[i + 1];\n\t\t\ti++;\n\t\t\tarr[len - i] = str[i - 1];\n\t\t\ti++;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tarr[len - i] = str[i];\n\t\t\ti++;\n\t\t}\n\t}\n\treturn arr.join('');\n}\n\nvar _String_foldl = F3(function(func, state, string)\n{\n\tvar len = string.length;\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\ti++;\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tchar += string[i];\n\t\t\ti++;\n\t\t}\n\t\tstate = A2(func, _Utils_chr(char), state);\n\t}\n\treturn state;\n});\n\nvar _String_foldr = F3(function(func, state, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tstate = A2(func, _Utils_chr(char), state);\n\t}\n\treturn state;\n});\n\nvar _String_split = F2(function(sep, str)\n{\n\treturn str.split(sep);\n});\n\nvar _String_join = F2(function(sep, strs)\n{\n\treturn strs.join(sep);\n});\n\nvar _String_slice = F3(function(start, end, str) {\n\treturn str.slice(start, end);\n});\n\nfunction _String_trim(str)\n{\n\treturn str.trim();\n}\n\nfunction _String_trimLeft(str)\n{\n\treturn str.replace(/^\\s+/, '');\n}\n\nfunction _String_trimRight(str)\n{\n\treturn str.replace(/\\s+$/, '');\n}\n\nfunction _String_words(str)\n{\n\treturn _List_fromArray(str.trim().split(/\\s+/g));\n}\n\nfunction _String_lines(str)\n{\n\treturn _List_fromArray(str.split(/\\r\\n|\\r|\\n/g));\n}\n\nfunction _String_toUpper(str)\n{\n\treturn str.toUpperCase();\n}\n\nfunction _String_toLower(str)\n{\n\treturn str.toLowerCase();\n}\n\nvar _String_any = F2(function(isGood, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tif (isGood(_Utils_chr(char)))\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n});\n\nvar _String_all = F2(function(isGood, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tif (!isGood(_Utils_chr(char)))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n});\n\nvar _String_contains = F2(function(sub, str)\n{\n\treturn str.indexOf(sub) > -1;\n});\n\nvar _String_startsWith = F2(function(sub, str)\n{\n\treturn str.indexOf(sub) === 0;\n});\n\nvar _String_endsWith = F2(function(sub, str)\n{\n\treturn str.length >= sub.length &&\n\t\tstr.lastIndexOf(sub) === str.length - sub.length;\n});\n\nvar _String_indexes = F2(function(sub, str)\n{\n\tvar subLen = sub.length;\n\n\tif (subLen < 1)\n\t{\n\t\treturn _List_Nil;\n\t}\n\n\tvar i = 0;\n\tvar is = [];\n\n\twhile ((i = str.indexOf(sub, i)) > -1)\n\t{\n\t\tis.push(i);\n\t\ti = i + subLen;\n\t}\n\n\treturn _List_fromArray(is);\n});\n\n\n// TO STRING\n\nfunction _String_fromNumber(number)\n{\n\treturn number + '';\n}\n\n\n// INT CONVERSIONS\n\nfunction _String_toInt(str)\n{\n\tvar total = 0;\n\tvar code0 = str.charCodeAt(0);\n\tvar start = code0 == 0x2B /* + */ || code0 == 0x2D /* - */ ? 1 : 0;\n\n\tfor (var i = start; i < str.length; ++i)\n\t{\n\t\tvar code = str.charCodeAt(i);\n\t\tif (code < 0x30 || 0x39 < code)\n\t\t{\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t}\n\t\ttotal = 10 * total + code - 0x30;\n\t}\n\n\treturn i == start\n\t\t? $elm$core$Maybe$Nothing\n\t\t: $elm$core$Maybe$Just(code0 == 0x2D ? -total : total);\n}\n\n\n// FLOAT CONVERSIONS\n\nfunction _String_toFloat(s)\n{\n\t// check if it is a hex, octal, or binary number\n\tif (s.length === 0 || /[\\sxbo]/.test(s))\n\t{\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n\tvar n = +s;\n\t// faster isNaN check\n\treturn n === n ? $elm$core$Maybe$Just(n) : $elm$core$Maybe$Nothing;\n}\n\nfunction _String_fromList(chars)\n{\n\treturn _List_toArray(chars).join('');\n}\n\n\n\n\nfunction _Char_toCode(char)\n{\n\tvar code = char.charCodeAt(0);\n\tif (0xD800 <= code && code <= 0xDBFF)\n\t{\n\t\treturn (code - 0xD800) * 0x400 + char.charCodeAt(1) - 0xDC00 + 0x10000\n\t}\n\treturn code;\n}\n\nfunction _Char_fromCode(code)\n{\n\treturn _Utils_chr(\n\t\t(code < 0 || 0x10FFFF < code)\n\t\t\t? '\\uFFFD'\n\t\t\t:\n\t\t(code <= 0xFFFF)\n\t\t\t? String.fromCharCode(code)\n\t\t\t:\n\t\t(code -= 0x10000,\n\t\t\tString.fromCharCode(Math.floor(code / 0x400) + 0xD800, code % 0x400 + 0xDC00)\n\t\t)\n\t);\n}\n\nfunction _Char_toUpper(char)\n{\n\treturn _Utils_chr(char.toUpperCase());\n}\n\nfunction _Char_toLower(char)\n{\n\treturn _Utils_chr(char.toLowerCase());\n}\n\nfunction _Char_toLocaleUpper(char)\n{\n\treturn _Utils_chr(char.toLocaleUpperCase());\n}\n\nfunction _Char_toLocaleLower(char)\n{\n\treturn _Utils_chr(char.toLocaleLowerCase());\n}\n\n\n\n/**_UNUSED/\nfunction _Json_errorToString(error)\n{\n\treturn $elm$json$Json$Decode$errorToString(error);\n}\n//*/\n\n\n// CORE DECODERS\n\nfunction _Json_succeed(msg)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: msg\n\t};\n}\n\nfunction _Json_fail(msg)\n{\n\treturn {\n\t\t$: 1,\n\t\ta: msg\n\t};\n}\n\nfunction _Json_decodePrim(decoder)\n{\n\treturn { $: 2, b: decoder };\n}\n\nvar _Json_decodeInt = _Json_decodePrim(function(value) {\n\treturn (typeof value !== 'number')\n\t\t? _Json_expecting('an INT', value)\n\t\t:\n\t(-2147483647 < value && value < 2147483647 && (value | 0) === value)\n\t\t? $elm$core$Result$Ok(value)\n\t\t:\n\t(isFinite(value) && !(value % 1))\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('an INT', value);\n});\n\nvar _Json_decodeBool = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'boolean')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('a BOOL', value);\n});\n\nvar _Json_decodeFloat = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'number')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('a FLOAT', value);\n});\n\nvar _Json_decodeValue = _Json_decodePrim(function(value) {\n\treturn $elm$core$Result$Ok(_Json_wrap(value));\n});\n\nvar _Json_decodeString = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'string')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: (value instanceof String)\n\t\t\t? $elm$core$Result$Ok(value + '')\n\t\t\t: _Json_expecting('a STRING', value);\n});\n\nfunction _Json_decodeList(decoder) { return { $: 3, b: decoder }; }\nfunction _Json_decodeArray(decoder) { return { $: 4, b: decoder }; }\n\nfunction _Json_decodeNull(value) { return { $: 5, c: value }; }\n\nvar _Json_decodeField = F2(function(field, decoder)\n{\n\treturn {\n\t\t$: 6,\n\t\td: field,\n\t\tb: decoder\n\t};\n});\n\nvar _Json_decodeIndex = F2(function(index, decoder)\n{\n\treturn {\n\t\t$: 7,\n\t\te: index,\n\t\tb: decoder\n\t};\n});\n\nfunction _Json_decodeKeyValuePairs(decoder)\n{\n\treturn {\n\t\t$: 8,\n\t\tb: decoder\n\t};\n}\n\nfunction _Json_mapMany(f, decoders)\n{\n\treturn {\n\t\t$: 9,\n\t\tf: f,\n\t\tg: decoders\n\t};\n}\n\nvar _Json_andThen = F2(function(callback, decoder)\n{\n\treturn {\n\t\t$: 10,\n\t\tb: decoder,\n\t\th: callback\n\t};\n});\n\nfunction _Json_oneOf(decoders)\n{\n\treturn {\n\t\t$: 11,\n\t\tg: decoders\n\t};\n}\n\n\n// DECODING OBJECTS\n\nvar _Json_map1 = F2(function(f, d1)\n{\n\treturn _Json_mapMany(f, [d1]);\n});\n\nvar _Json_map2 = F3(function(f, d1, d2)\n{\n\treturn _Json_mapMany(f, [d1, d2]);\n});\n\nvar _Json_map3 = F4(function(f, d1, d2, d3)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3]);\n});\n\nvar _Json_map4 = F5(function(f, d1, d2, d3, d4)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4]);\n});\n\nvar _Json_map5 = F6(function(f, d1, d2, d3, d4, d5)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5]);\n});\n\nvar _Json_map6 = F7(function(f, d1, d2, d3, d4, d5, d6)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6]);\n});\n\nvar _Json_map7 = F8(function(f, d1, d2, d3, d4, d5, d6, d7)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7]);\n});\n\nvar _Json_map8 = F9(function(f, d1, d2, d3, d4, d5, d6, d7, d8)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7, d8]);\n});\n\n\n// DECODE\n\nvar _Json_runOnString = F2(function(decoder, string)\n{\n\ttry\n\t{\n\t\tvar value = JSON.parse(string);\n\t\treturn _Json_runHelp(decoder, value);\n\t}\n\tcatch (e)\n\t{\n\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'This is not valid JSON! ' + e.message, _Json_wrap(string)));\n\t}\n});\n\nvar _Json_run = F2(function(decoder, value)\n{\n\treturn _Json_runHelp(decoder, _Json_unwrap(value));\n});\n\nfunction _Json_runHelp(decoder, value)\n{\n\tswitch (decoder.$)\n\t{\n\t\tcase 2:\n\t\t\treturn decoder.b(value);\n\n\t\tcase 5:\n\t\t\treturn (value === null)\n\t\t\t\t? $elm$core$Result$Ok(decoder.c)\n\t\t\t\t: _Json_expecting('null', value);\n\n\t\tcase 3:\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('a LIST', value);\n\t\t\t}\n\t\t\treturn _Json_runArrayDecoder(decoder.b, value, _List_fromArray);\n\n\t\tcase 4:\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an ARRAY', value);\n\t\t\t}\n\t\t\treturn _Json_runArrayDecoder(decoder.b, value, _Json_toElmArray);\n\n\t\tcase 6:\n\t\t\tvar field = decoder.d;\n\t\t\tif (typeof value !== 'object' || value === null || !(field in value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an OBJECT with a field named `' + field + '`', value);\n\t\t\t}\n\t\t\tvar result = _Json_runHelp(decoder.b, value[field]);\n\t\t\treturn ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, field, result.a));\n\n\t\tcase 7:\n\t\t\tvar index = decoder.e;\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an ARRAY', value);\n\t\t\t}\n\t\t\tif (index >= value.length)\n\t\t\t{\n\t\t\t\treturn _Json_expecting('a LONGER array. Need index ' + index + ' but only see ' + value.length + ' entries', value);\n\t\t\t}\n\t\t\tvar result = _Json_runHelp(decoder.b, value[index]);\n\t\t\treturn ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, index, result.a));\n\n\t\tcase 8:\n\t\t\tif (typeof value !== 'object' || value === null || _Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an OBJECT', value);\n\t\t\t}\n\n\t\t\tvar keyValuePairs = _List_Nil;\n\t\t\t// TODO test perf of Object.keys and switch when support is good enough\n\t\t\tfor (var key in value)\n\t\t\t{\n\t\t\t\tif (value.hasOwnProperty(key))\n\t\t\t\t{\n\t\t\t\t\tvar result = _Json_runHelp(decoder.b, value[key]);\n\t\t\t\t\tif (!$elm$core$Result$isOk(result))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, key, result.a));\n\t\t\t\t\t}\n\t\t\t\t\tkeyValuePairs = _List_Cons(_Utils_Tuple2(key, result.a), keyValuePairs);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn $elm$core$Result$Ok($elm$core$List$reverse(keyValuePairs));\n\n\t\tcase 9:\n\t\t\tvar answer = decoder.f;\n\t\t\tvar decoders = decoder.g;\n\t\t\tfor (var i = 0; i < decoders.length; i++)\n\t\t\t{\n\t\t\t\tvar result = _Json_runHelp(decoders[i], value);\n\t\t\t\tif (!$elm$core$Result$isOk(result))\n\t\t\t\t{\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tanswer = answer(result.a);\n\t\t\t}\n\t\t\treturn $elm$core$Result$Ok(answer);\n\n\t\tcase 10:\n\t\t\tvar result = _Json_runHelp(decoder.b, value);\n\t\t\treturn (!$elm$core$Result$isOk(result))\n\t\t\t\t? result\n\t\t\t\t: _Json_runHelp(decoder.h(result.a), value);\n\n\t\tcase 11:\n\t\t\tvar errors = _List_Nil;\n\t\t\tfor (var temp = decoder.g; temp.b; temp = temp.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\tvar result = _Json_runHelp(temp.a, value);\n\t\t\t\tif ($elm$core$Result$isOk(result))\n\t\t\t\t{\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\terrors = _List_Cons(result.a, errors);\n\t\t\t}\n\t\t\treturn $elm$core$Result$Err($elm$json$Json$Decode$OneOf($elm$core$List$reverse(errors)));\n\n\t\tcase 1:\n\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, decoder.a, _Json_wrap(value)));\n\n\t\tcase 0:\n\t\t\treturn $elm$core$Result$Ok(decoder.a);\n\t}\n}\n\nfunction _Json_runArrayDecoder(decoder, value, toElmValue)\n{\n\tvar len = value.length;\n\tvar array = new Array(len);\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tvar result = _Json_runHelp(decoder, value[i]);\n\t\tif (!$elm$core$Result$isOk(result))\n\t\t{\n\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, i, result.a));\n\t\t}\n\t\tarray[i] = result.a;\n\t}\n\treturn $elm$core$Result$Ok(toElmValue(array));\n}\n\nfunction _Json_isArray(value)\n{\n\treturn Array.isArray(value) || (typeof FileList !== 'undefined' && value instanceof FileList);\n}\n\nfunction _Json_toElmArray(array)\n{\n\treturn A2($elm$core$Array$initialize, array.length, function(i) { return array[i]; });\n}\n\nfunction _Json_expecting(type, value)\n{\n\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'Expecting ' + type, _Json_wrap(value)));\n}\n\n\n// EQUALITY\n\nfunction _Json_equality(x, y)\n{\n\tif (x === y)\n\t{\n\t\treturn true;\n\t}\n\n\tif (x.$ !== y.$)\n\t{\n\t\treturn false;\n\t}\n\n\tswitch (x.$)\n\t{\n\t\tcase 0:\n\t\tcase 1:\n\t\t\treturn x.a === y.a;\n\n\t\tcase 2:\n\t\t\treturn x.b === y.b;\n\n\t\tcase 5:\n\t\t\treturn x.c === y.c;\n\n\t\tcase 3:\n\t\tcase 4:\n\t\tcase 8:\n\t\t\treturn _Json_equality(x.b, y.b);\n\n\t\tcase 6:\n\t\t\treturn x.d === y.d && _Json_equality(x.b, y.b);\n\n\t\tcase 7:\n\t\t\treturn x.e === y.e && _Json_equality(x.b, y.b);\n\n\t\tcase 9:\n\t\t\treturn x.f === y.f && _Json_listEquality(x.g, y.g);\n\n\t\tcase 10:\n\t\t\treturn x.h === y.h && _Json_equality(x.b, y.b);\n\n\t\tcase 11:\n\t\t\treturn _Json_listEquality(x.g, y.g);\n\t}\n}\n\nfunction _Json_listEquality(aDecoders, bDecoders)\n{\n\tvar len = aDecoders.length;\n\tif (len !== bDecoders.length)\n\t{\n\t\treturn false;\n\t}\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tif (!_Json_equality(aDecoders[i], bDecoders[i]))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// ENCODE\n\nvar _Json_encode = F2(function(indentLevel, value)\n{\n\treturn JSON.stringify(_Json_unwrap(value), null, indentLevel) + '';\n});\n\nfunction _Json_wrap_UNUSED(value) { return { $: 0, a: value }; }\nfunction _Json_unwrap_UNUSED(value) { return value.a; }\n\nfunction _Json_wrap(value) { return value; }\nfunction _Json_unwrap(value) { return value; }\n\nfunction _Json_emptyArray() { return []; }\nfunction _Json_emptyObject() { return {}; }\n\nvar _Json_addField = F3(function(key, value, object)\n{\n\tobject[key] = _Json_unwrap(value);\n\treturn object;\n});\n\nfunction _Json_addEntry(func)\n{\n\treturn F2(function(entry, array)\n\t{\n\t\tarray.push(_Json_unwrap(func(entry)));\n\t\treturn array;\n\t});\n}\n\nvar _Json_encodeNull = _Json_wrap(null);\n\n\n\n// TASKS\n\nfunction _Scheduler_succeed(value)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: value\n\t};\n}\n\nfunction _Scheduler_fail(error)\n{\n\treturn {\n\t\t$: 1,\n\t\ta: error\n\t};\n}\n\nfunction _Scheduler_binding(callback)\n{\n\treturn {\n\t\t$: 2,\n\t\tb: callback,\n\t\tc: null\n\t};\n}\n\nvar _Scheduler_andThen = F2(function(callback, task)\n{\n\treturn {\n\t\t$: 3,\n\t\tb: callback,\n\t\td: task\n\t};\n});\n\nvar _Scheduler_onError = F2(function(callback, task)\n{\n\treturn {\n\t\t$: 4,\n\t\tb: callback,\n\t\td: task\n\t};\n});\n\nfunction _Scheduler_receive(callback)\n{\n\treturn {\n\t\t$: 5,\n\t\tb: callback\n\t};\n}\n\n\n// PROCESSES\n\nvar _Scheduler_guid = 0;\n\nfunction _Scheduler_rawSpawn(task)\n{\n\tvar proc = {\n\t\t$: 0,\n\t\te: _Scheduler_guid++,\n\t\tf: task,\n\t\tg: null,\n\t\th: []\n\t};\n\n\t_Scheduler_enqueue(proc);\n\n\treturn proc;\n}\n\nfunction _Scheduler_spawn(task)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tcallback(_Scheduler_succeed(_Scheduler_rawSpawn(task)));\n\t});\n}\n\nfunction _Scheduler_rawSend(proc, msg)\n{\n\tproc.h.push(msg);\n\t_Scheduler_enqueue(proc);\n}\n\nvar _Scheduler_send = F2(function(proc, msg)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\t_Scheduler_rawSend(proc, msg);\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n});\n\nfunction _Scheduler_kill(proc)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tvar task = proc.f;\n\t\tif (task.$ === 2 && task.c)\n\t\t{\n\t\t\ttask.c();\n\t\t}\n\n\t\tproc.f = null;\n\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n}\n\n\n/* STEP PROCESSES\n\ntype alias Process =\n { $ : tag\n , id : unique_id\n , root : Task\n , stack : null | { $: SUCCEED | FAIL, a: callback, b: stack }\n , mailbox : [msg]\n }\n\n*/\n\n\nvar _Scheduler_working = false;\nvar _Scheduler_queue = [];\n\n\nfunction _Scheduler_enqueue(proc)\n{\n\t_Scheduler_queue.push(proc);\n\tif (_Scheduler_working)\n\t{\n\t\treturn;\n\t}\n\t_Scheduler_working = true;\n\twhile (proc = _Scheduler_queue.shift())\n\t{\n\t\t_Scheduler_step(proc);\n\t}\n\t_Scheduler_working = false;\n}\n\n\nfunction _Scheduler_step(proc)\n{\n\twhile (proc.f)\n\t{\n\t\tvar rootTag = proc.f.$;\n\t\tif (rootTag === 0 || rootTag === 1)\n\t\t{\n\t\t\twhile (proc.g && proc.g.$ !== rootTag)\n\t\t\t{\n\t\t\t\tproc.g = proc.g.i;\n\t\t\t}\n\t\t\tif (!proc.g)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tproc.f = proc.g.b(proc.f.a);\n\t\t\tproc.g = proc.g.i;\n\t\t}\n\t\telse if (rootTag === 2)\n\t\t{\n\t\t\tproc.f.c = proc.f.b(function(newRoot) {\n\t\t\t\tproc.f = newRoot;\n\t\t\t\t_Scheduler_enqueue(proc);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\telse if (rootTag === 5)\n\t\t{\n\t\t\tif (proc.h.length === 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tproc.f = proc.f.b(proc.h.shift());\n\t\t}\n\t\telse // if (rootTag === 3 || rootTag === 4)\n\t\t{\n\t\t\tproc.g = {\n\t\t\t\t$: rootTag === 3 ? 0 : 1,\n\t\t\t\tb: proc.f.b,\n\t\t\t\ti: proc.g\n\t\t\t};\n\t\t\tproc.f = proc.f.d;\n\t\t}\n\t}\n}\n\n\n\nfunction _Process_sleep(time)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tvar id = setTimeout(function() {\n\t\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t\t}, time);\n\n\t\treturn function() { clearTimeout(id); };\n\t});\n}\n\n\n\n\n// PROGRAMS\n\n\nvar _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.fb,\n\t\timpl.fZ,\n\t\timpl.fN,\n\t\tfunction() { return function() {} }\n\t);\n});\n\n\n\n// INITIALIZE A PROGRAM\n\n\nfunction _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)\n{\n\tvar result = A2(_Json_run, flagDecoder, _Json_wrap(args ? args['flags'] : undefined));\n\t$elm$core$Result$isOk(result) || _Debug_crash(2 /**_UNUSED/, _Json_errorToString(result.a) /**/);\n\tvar managers = {};\n\tvar initPair = init(result.a);\n\tvar model = initPair.a;\n\tvar stepper = stepperBuilder(sendToApp, model);\n\tvar ports = _Platform_setupEffects(managers, sendToApp);\n\n\tfunction sendToApp(msg, viewMetadata)\n\t{\n\t\tvar pair = A2(update, msg, model);\n\t\tstepper(model = pair.a, viewMetadata);\n\t\t_Platform_enqueueEffects(managers, pair.b, subscriptions(model));\n\t}\n\n\t_Platform_enqueueEffects(managers, initPair.b, subscriptions(model));\n\n\treturn ports ? { ports: ports } : {};\n}\n\n\n\n// TRACK PRELOADS\n//\n// This is used by code in elm/browser and elm/http\n// to register any HTTP requests that are triggered by init.\n//\n\n\nvar _Platform_preload;\n\n\nfunction _Platform_registerPreload(url)\n{\n\t_Platform_preload.add(url);\n}\n\n\n\n// EFFECT MANAGERS\n\n\nvar _Platform_effectManagers = {};\n\n\nfunction _Platform_setupEffects(managers, sendToApp)\n{\n\tvar ports;\n\n\t// setup all necessary effect managers\n\tfor (var key in _Platform_effectManagers)\n\t{\n\t\tvar manager = _Platform_effectManagers[key];\n\n\t\tif (manager.a)\n\t\t{\n\t\t\tports = ports || {};\n\t\t\tports[key] = manager.a(key, sendToApp);\n\t\t}\n\n\t\tmanagers[key] = _Platform_instantiateManager(manager, sendToApp);\n\t}\n\n\treturn ports;\n}\n\n\nfunction _Platform_createManager(init, onEffects, onSelfMsg, cmdMap, subMap)\n{\n\treturn {\n\t\tb: init,\n\t\tc: onEffects,\n\t\td: onSelfMsg,\n\t\te: cmdMap,\n\t\tf: subMap\n\t};\n}\n\n\nfunction _Platform_instantiateManager(info, sendToApp)\n{\n\tvar router = {\n\t\tg: sendToApp,\n\t\th: undefined\n\t};\n\n\tvar onEffects = info.c;\n\tvar onSelfMsg = info.d;\n\tvar cmdMap = info.e;\n\tvar subMap = info.f;\n\n\tfunction loop(state)\n\t{\n\t\treturn A2(_Scheduler_andThen, loop, _Scheduler_receive(function(msg)\n\t\t{\n\t\t\tvar value = msg.a;\n\n\t\t\tif (msg.$ === 0)\n\t\t\t{\n\t\t\t\treturn A3(onSelfMsg, router, value, state);\n\t\t\t}\n\n\t\t\treturn cmdMap && subMap\n\t\t\t\t? A4(onEffects, router, value.i, value.j, state)\n\t\t\t\t: A3(onEffects, router, cmdMap ? value.i : value.j, state);\n\t\t}));\n\t}\n\n\treturn router.h = _Scheduler_rawSpawn(A2(_Scheduler_andThen, loop, info.b));\n}\n\n\n\n// ROUTING\n\n\nvar _Platform_sendToApp = F2(function(router, msg)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\trouter.g(msg);\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n});\n\n\nvar _Platform_sendToSelf = F2(function(router, msg)\n{\n\treturn A2(_Scheduler_send, router.h, {\n\t\t$: 0,\n\t\ta: msg\n\t});\n});\n\n\n\n// BAGS\n\n\nfunction _Platform_leaf(home)\n{\n\treturn function(value)\n\t{\n\t\treturn {\n\t\t\t$: 1,\n\t\t\tk: home,\n\t\t\tl: value\n\t\t};\n\t};\n}\n\n\nfunction _Platform_batch(list)\n{\n\treturn {\n\t\t$: 2,\n\t\tm: list\n\t};\n}\n\n\nvar _Platform_map = F2(function(tagger, bag)\n{\n\treturn {\n\t\t$: 3,\n\t\tn: tagger,\n\t\to: bag\n\t}\n});\n\n\n\n// PIPE BAGS INTO EFFECT MANAGERS\n//\n// Effects must be queued!\n//\n// Say your init contains a synchronous command, like Time.now or Time.here\n//\n// - This will produce a batch of effects (FX_1)\n// - The synchronous task triggers the subsequent `update` call\n// - This will produce a batch of effects (FX_2)\n//\n// If we just start dispatching FX_2, subscriptions from FX_2 can be processed\n// before subscriptions from FX_1. No good! Earlier versions of this code had\n// this problem, leading to these reports:\n//\n// https://github.com/elm/core/issues/980\n// https://github.com/elm/core/pull/981\n// https://github.com/elm/compiler/issues/1776\n//\n// The queue is necessary to avoid ordering issues for synchronous commands.\n\n\n// Why use true/false here? Why not just check the length of the queue?\n// The goal is to detect \"are we currently dispatching effects?\" If we\n// are, we need to bail and let the ongoing while loop handle things.\n//\n// Now say the queue has 1 element. When we dequeue the final element,\n// the queue will be empty, but we are still actively dispatching effects.\n// So you could get queue jumping in a really tricky category of cases.\n//\nvar _Platform_effectsQueue = [];\nvar _Platform_effectsActive = false;\n\n\nfunction _Platform_enqueueEffects(managers, cmdBag, subBag)\n{\n\t_Platform_effectsQueue.push({ p: managers, q: cmdBag, r: subBag });\n\n\tif (_Platform_effectsActive) return;\n\n\t_Platform_effectsActive = true;\n\tfor (var fx; fx = _Platform_effectsQueue.shift(); )\n\t{\n\t\t_Platform_dispatchEffects(fx.p, fx.q, fx.r);\n\t}\n\t_Platform_effectsActive = false;\n}\n\n\nfunction _Platform_dispatchEffects(managers, cmdBag, subBag)\n{\n\tvar effectsDict = {};\n\t_Platform_gatherEffects(true, cmdBag, effectsDict, null);\n\t_Platform_gatherEffects(false, subBag, effectsDict, null);\n\n\tfor (var home in managers)\n\t{\n\t\t_Scheduler_rawSend(managers[home], {\n\t\t\t$: 'fx',\n\t\t\ta: effectsDict[home] || { i: _List_Nil, j: _List_Nil }\n\t\t});\n\t}\n}\n\n\nfunction _Platform_gatherEffects(isCmd, bag, effectsDict, taggers)\n{\n\tswitch (bag.$)\n\t{\n\t\tcase 1:\n\t\t\tvar home = bag.k;\n\t\t\tvar effect = _Platform_toEffect(isCmd, home, taggers, bag.l);\n\t\t\teffectsDict[home] = _Platform_insert(isCmd, effect, effectsDict[home]);\n\t\t\treturn;\n\n\t\tcase 2:\n\t\t\tfor (var list = bag.m; list.b; list = list.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\t_Platform_gatherEffects(isCmd, list.a, effectsDict, taggers);\n\t\t\t}\n\t\t\treturn;\n\n\t\tcase 3:\n\t\t\t_Platform_gatherEffects(isCmd, bag.o, effectsDict, {\n\t\t\t\ts: bag.n,\n\t\t\t\tt: taggers\n\t\t\t});\n\t\t\treturn;\n\t}\n}\n\n\nfunction _Platform_toEffect(isCmd, home, taggers, value)\n{\n\tfunction applyTaggers(x)\n\t{\n\t\tfor (var temp = taggers; temp; temp = temp.t)\n\t\t{\n\t\t\tx = temp.s(x);\n\t\t}\n\t\treturn x;\n\t}\n\n\tvar map = isCmd\n\t\t? _Platform_effectManagers[home].e\n\t\t: _Platform_effectManagers[home].f;\n\n\treturn A2(map, applyTaggers, value)\n}\n\n\nfunction _Platform_insert(isCmd, newEffect, effects)\n{\n\teffects = effects || { i: _List_Nil, j: _List_Nil };\n\n\tisCmd\n\t\t? (effects.i = _List_Cons(newEffect, effects.i))\n\t\t: (effects.j = _List_Cons(newEffect, effects.j));\n\n\treturn effects;\n}\n\n\n\n// PORTS\n\n\nfunction _Platform_checkPortName(name)\n{\n\tif (_Platform_effectManagers[name])\n\t{\n\t\t_Debug_crash(3, name)\n\t}\n}\n\n\n\n// OUTGOING PORTS\n\n\nfunction _Platform_outgoingPort(name, converter)\n{\n\t_Platform_checkPortName(name);\n\t_Platform_effectManagers[name] = {\n\t\te: _Platform_outgoingPortMap,\n\t\tu: converter,\n\t\ta: _Platform_setupOutgoingPort\n\t};\n\treturn _Platform_leaf(name);\n}\n\n\nvar _Platform_outgoingPortMap = F2(function(tagger, value) { return value; });\n\n\nfunction _Platform_setupOutgoingPort(name)\n{\n\tvar subs = [];\n\tvar converter = _Platform_effectManagers[name].u;\n\n\t// CREATE MANAGER\n\n\tvar init = _Process_sleep(0);\n\n\t_Platform_effectManagers[name].b = init;\n\t_Platform_effectManagers[name].c = F3(function(router, cmdList, state)\n\t{\n\t\tfor ( ; cmdList.b; cmdList = cmdList.b) // WHILE_CONS\n\t\t{\n\t\t\t// grab a separate reference to subs in case unsubscribe is called\n\t\t\tvar currentSubs = subs;\n\t\t\tvar value = _Json_unwrap(converter(cmdList.a));\n\t\t\tfor (var i = 0; i < currentSubs.length; i++)\n\t\t\t{\n\t\t\t\tcurrentSubs[i](value);\n\t\t\t}\n\t\t}\n\t\treturn init;\n\t});\n\n\t// PUBLIC API\n\n\tfunction subscribe(callback)\n\t{\n\t\tsubs.push(callback);\n\t}\n\n\tfunction unsubscribe(callback)\n\t{\n\t\t// copy subs into a new array in case unsubscribe is called within a\n\t\t// subscribed callback\n\t\tsubs = subs.slice();\n\t\tvar index = subs.indexOf(callback);\n\t\tif (index >= 0)\n\t\t{\n\t\t\tsubs.splice(index, 1);\n\t\t}\n\t}\n\n\treturn {\n\t\tsubscribe: subscribe,\n\t\tunsubscribe: unsubscribe\n\t};\n}\n\n\n\n// INCOMING PORTS\n\n\nfunction _Platform_incomingPort(name, converter)\n{\n\t_Platform_checkPortName(name);\n\t_Platform_effectManagers[name] = {\n\t\tf: _Platform_incomingPortMap,\n\t\tu: converter,\n\t\ta: _Platform_setupIncomingPort\n\t};\n\treturn _Platform_leaf(name);\n}\n\n\nvar _Platform_incomingPortMap = F2(function(tagger, finalTagger)\n{\n\treturn function(value)\n\t{\n\t\treturn tagger(finalTagger(value));\n\t};\n});\n\n\nfunction _Platform_setupIncomingPort(name, sendToApp)\n{\n\tvar subs = _List_Nil;\n\tvar converter = _Platform_effectManagers[name].u;\n\n\t// CREATE MANAGER\n\n\tvar init = _Scheduler_succeed(null);\n\n\t_Platform_effectManagers[name].b = init;\n\t_Platform_effectManagers[name].c = F3(function(router, subList, state)\n\t{\n\t\tsubs = subList;\n\t\treturn init;\n\t});\n\n\t// PUBLIC API\n\n\tfunction send(incomingValue)\n\t{\n\t\tvar result = A2(_Json_run, converter, _Json_wrap(incomingValue));\n\n\t\t$elm$core$Result$isOk(result) || _Debug_crash(4, name, result.a);\n\n\t\tvar value = result.a;\n\t\tfor (var temp = subs; temp.b; temp = temp.b) // WHILE_CONS\n\t\t{\n\t\t\tsendToApp(temp.a(value));\n\t\t}\n\t}\n\n\treturn { send: send };\n}\n\n\n\n// EXPORT ELM MODULES\n//\n// Have DEBUG and PROD versions so that we can (1) give nicer errors in\n// debug mode and (2) not pay for the bits needed for that in prod mode.\n//\n\n\nfunction _Platform_export(exports)\n{\n\tscope['Elm']\n\t\t? _Platform_mergeExportsProd(scope['Elm'], exports)\n\t\t: scope['Elm'] = exports;\n}\n\n\nfunction _Platform_mergeExportsProd(obj, exports)\n{\n\tfor (var name in exports)\n\t{\n\t\t(name in obj)\n\t\t\t? (name == 'init')\n\t\t\t\t? _Debug_crash(6)\n\t\t\t\t: _Platform_mergeExportsProd(obj[name], exports[name])\n\t\t\t: (obj[name] = exports[name]);\n\t}\n}\n\n\nfunction _Platform_export_UNUSED(exports)\n{\n\tscope['Elm']\n\t\t? _Platform_mergeExportsDebug('Elm', scope['Elm'], exports)\n\t\t: scope['Elm'] = exports;\n}\n\n\nfunction _Platform_mergeExportsDebug(moduleName, obj, exports)\n{\n\tfor (var name in exports)\n\t{\n\t\t(name in obj)\n\t\t\t? (name == 'init')\n\t\t\t\t? _Debug_crash(6, moduleName)\n\t\t\t\t: _Platform_mergeExportsDebug(moduleName + '.' + name, obj[name], exports[name])\n\t\t\t: (obj[name] = exports[name]);\n\t}\n}\n\n\n\n\n// HELPERS\n\n\nvar _VirtualDom_divertHrefToApp;\n\nvar _VirtualDom_doc = typeof document !== 'undefined' ? document : {};\n\n\nfunction _VirtualDom_appendChild(parent, child)\n{\n\tparent.appendChild(child);\n}\n\nvar _VirtualDom_init = F4(function(virtualNode, flagDecoder, debugMetadata, args)\n{\n\t// NOTE: this function needs _Platform_export available to work\n\n\t/**/\n\tvar node = args['node'];\n\t//*/\n\t/**_UNUSED/\n\tvar node = args && args['node'] ? args['node'] : _Debug_crash(0);\n\t//*/\n\n\tnode.parentNode.replaceChild(\n\t\t_VirtualDom_render(virtualNode, function() {}),\n\t\tnode\n\t);\n\n\treturn {};\n});\n\n\n\n// TEXT\n\n\nfunction _VirtualDom_text(string)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: string\n\t};\n}\n\n\n\n// NODE\n\n\nvar _VirtualDom_nodeNS = F2(function(namespace, tag)\n{\n\treturn F2(function(factList, kidList)\n\t{\n\t\tfor (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS\n\t\t{\n\t\t\tvar kid = kidList.a;\n\t\t\tdescendantsCount += (kid.b || 0);\n\t\t\tkids.push(kid);\n\t\t}\n\t\tdescendantsCount += kids.length;\n\n\t\treturn {\n\t\t\t$: 1,\n\t\t\tc: tag,\n\t\t\td: _VirtualDom_organizeFacts(factList),\n\t\t\te: kids,\n\t\t\tf: namespace,\n\t\t\tb: descendantsCount\n\t\t};\n\t});\n});\n\n\nvar _VirtualDom_node = _VirtualDom_nodeNS(undefined);\n\n\n\n// KEYED NODE\n\n\nvar _VirtualDom_keyedNodeNS = F2(function(namespace, tag)\n{\n\treturn F2(function(factList, kidList)\n\t{\n\t\tfor (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS\n\t\t{\n\t\t\tvar kid = kidList.a;\n\t\t\tdescendantsCount += (kid.b.b || 0);\n\t\t\tkids.push(kid);\n\t\t}\n\t\tdescendantsCount += kids.length;\n\n\t\treturn {\n\t\t\t$: 2,\n\t\t\tc: tag,\n\t\t\td: _VirtualDom_organizeFacts(factList),\n\t\t\te: kids,\n\t\t\tf: namespace,\n\t\t\tb: descendantsCount\n\t\t};\n\t});\n});\n\n\nvar _VirtualDom_keyedNode = _VirtualDom_keyedNodeNS(undefined);\n\n\n\n// CUSTOM\n\n\nfunction _VirtualDom_custom(factList, model, render, diff)\n{\n\treturn {\n\t\t$: 3,\n\t\td: _VirtualDom_organizeFacts(factList),\n\t\tg: model,\n\t\th: render,\n\t\ti: diff\n\t};\n}\n\n\n\n// MAP\n\n\nvar _VirtualDom_map = F2(function(tagger, node)\n{\n\treturn {\n\t\t$: 4,\n\t\tj: tagger,\n\t\tk: node,\n\t\tb: 1 + (node.b || 0)\n\t};\n});\n\n\n\n// LAZY\n\n\nfunction _VirtualDom_thunk(refs, thunk)\n{\n\treturn {\n\t\t$: 5,\n\t\tl: refs,\n\t\tm: thunk,\n\t\tk: undefined\n\t};\n}\n\nvar _VirtualDom_lazy = F2(function(func, a)\n{\n\treturn _VirtualDom_thunk([func, a], function() {\n\t\treturn func(a);\n\t});\n});\n\nvar _VirtualDom_lazy2 = F3(function(func, a, b)\n{\n\treturn _VirtualDom_thunk([func, a, b], function() {\n\t\treturn A2(func, a, b);\n\t});\n});\n\nvar _VirtualDom_lazy3 = F4(function(func, a, b, c)\n{\n\treturn _VirtualDom_thunk([func, a, b, c], function() {\n\t\treturn A3(func, a, b, c);\n\t});\n});\n\nvar _VirtualDom_lazy4 = F5(function(func, a, b, c, d)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d], function() {\n\t\treturn A4(func, a, b, c, d);\n\t});\n});\n\nvar _VirtualDom_lazy5 = F6(function(func, a, b, c, d, e)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e], function() {\n\t\treturn A5(func, a, b, c, d, e);\n\t});\n});\n\nvar _VirtualDom_lazy6 = F7(function(func, a, b, c, d, e, f)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f], function() {\n\t\treturn A6(func, a, b, c, d, e, f);\n\t});\n});\n\nvar _VirtualDom_lazy7 = F8(function(func, a, b, c, d, e, f, g)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f, g], function() {\n\t\treturn A7(func, a, b, c, d, e, f, g);\n\t});\n});\n\nvar _VirtualDom_lazy8 = F9(function(func, a, b, c, d, e, f, g, h)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f, g, h], function() {\n\t\treturn A8(func, a, b, c, d, e, f, g, h);\n\t});\n});\n\n\n\n// FACTS\n\n\nvar _VirtualDom_on = F2(function(key, handler)\n{\n\treturn {\n\t\t$: 'a0',\n\t\tn: key,\n\t\to: handler\n\t};\n});\nvar _VirtualDom_style = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a1',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_property = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a2',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_attribute = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a3',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_attributeNS = F3(function(namespace, key, value)\n{\n\treturn {\n\t\t$: 'a4',\n\t\tn: key,\n\t\to: { f: namespace, o: value }\n\t};\n});\n\n\n\n// XSS ATTACK VECTOR CHECKS\n\n\nfunction _VirtualDom_noScript(tag)\n{\n\treturn tag == 'script' ? 'p' : tag;\n}\n\nfunction _VirtualDom_noOnOrFormAction(key)\n{\n\treturn /^(on|formAction$)/i.test(key) ? 'data-' + key : key;\n}\n\nfunction _VirtualDom_noInnerHtmlOrFormAction(key)\n{\n\treturn key == 'innerHTML' || key == 'formAction' ? 'data-' + key : key;\n}\n\nfunction _VirtualDom_noJavaScriptUri(value)\n{\n\treturn /^javascript:/i.test(value.replace(/\\s/g,'')) ? '' : value;\n}\n\nfunction _VirtualDom_noJavaScriptUri_UNUSED(value)\n{\n\treturn /^javascript:/i.test(value.replace(/\\s/g,''))\n\t\t? 'javascript:alert(\"This is an XSS vector. Please use ports or web components instead.\")'\n\t\t: value;\n}\n\nfunction _VirtualDom_noJavaScriptOrHtmlUri(value)\n{\n\treturn /^\\s*(javascript:|data:text\\/html)/i.test(value) ? '' : value;\n}\n\nfunction _VirtualDom_noJavaScriptOrHtmlUri_UNUSED(value)\n{\n\treturn /^\\s*(javascript:|data:text\\/html)/i.test(value)\n\t\t? 'javascript:alert(\"This is an XSS vector. Please use ports or web components instead.\")'\n\t\t: value;\n}\n\n\n\n// MAP FACTS\n\n\nvar _VirtualDom_mapAttribute = F2(function(func, attr)\n{\n\treturn (attr.$ === 'a0')\n\t\t? A2(_VirtualDom_on, attr.n, _VirtualDom_mapHandler(func, attr.o))\n\t\t: attr;\n});\n\nfunction _VirtualDom_mapHandler(func, handler)\n{\n\tvar tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler);\n\n\t// 0 = Normal\n\t// 1 = MayStopPropagation\n\t// 2 = MayPreventDefault\n\t// 3 = Custom\n\n\treturn {\n\t\t$: handler.$,\n\t\ta:\n\t\t\t!tag\n\t\t\t\t? A2($elm$json$Json$Decode$map, func, handler.a)\n\t\t\t\t:\n\t\t\tA3($elm$json$Json$Decode$map2,\n\t\t\t\ttag < 3\n\t\t\t\t\t? _VirtualDom_mapEventTuple\n\t\t\t\t\t: _VirtualDom_mapEventRecord,\n\t\t\t\t$elm$json$Json$Decode$succeed(func),\n\t\t\t\thandler.a\n\t\t\t)\n\t};\n}\n\nvar _VirtualDom_mapEventTuple = F2(function(func, tuple)\n{\n\treturn _Utils_Tuple2(func(tuple.a), tuple.b);\n});\n\nvar _VirtualDom_mapEventRecord = F2(function(func, record)\n{\n\treturn {\n\t\tah: func(record.ah),\n\t\tc4: record.c4,\n\t\tcQ: record.cQ\n\t}\n});\n\n\n\n// ORGANIZE FACTS\n\n\nfunction _VirtualDom_organizeFacts(factList)\n{\n\tfor (var facts = {}; factList.b; factList = factList.b) // WHILE_CONS\n\t{\n\t\tvar entry = factList.a;\n\n\t\tvar tag = entry.$;\n\t\tvar key = entry.n;\n\t\tvar value = entry.o;\n\n\t\tif (tag === 'a2')\n\t\t{\n\t\t\t(key === 'className')\n\t\t\t\t? _VirtualDom_addClass(facts, key, _Json_unwrap(value))\n\t\t\t\t: facts[key] = _Json_unwrap(value);\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar subFacts = facts[tag] || (facts[tag] = {});\n\t\t(tag === 'a3' && key === 'class')\n\t\t\t? _VirtualDom_addClass(subFacts, key, value)\n\t\t\t: subFacts[key] = value;\n\t}\n\n\treturn facts;\n}\n\nfunction _VirtualDom_addClass(object, key, newClass)\n{\n\tvar classes = object[key];\n\tobject[key] = classes ? classes + ' ' + newClass : newClass;\n}\n\n\n\n// RENDER\n\n\nfunction _VirtualDom_render(vNode, eventNode)\n{\n\tvar tag = vNode.$;\n\n\tif (tag === 5)\n\t{\n\t\treturn _VirtualDom_render(vNode.k || (vNode.k = vNode.m()), eventNode);\n\t}\n\n\tif (tag === 0)\n\t{\n\t\treturn _VirtualDom_doc.createTextNode(vNode.a);\n\t}\n\n\tif (tag === 4)\n\t{\n\t\tvar subNode = vNode.k;\n\t\tvar tagger = vNode.j;\n\n\t\twhile (subNode.$ === 4)\n\t\t{\n\t\t\ttypeof tagger !== 'object'\n\t\t\t\t? tagger = [tagger, subNode.j]\n\t\t\t\t: tagger.push(subNode.j);\n\n\t\t\tsubNode = subNode.k;\n\t\t}\n\n\t\tvar subEventRoot = { j: tagger, p: eventNode };\n\t\tvar domNode = _VirtualDom_render(subNode, subEventRoot);\n\t\tdomNode.elm_event_node_ref = subEventRoot;\n\t\treturn domNode;\n\t}\n\n\tif (tag === 3)\n\t{\n\t\tvar domNode = vNode.h(vNode.g);\n\t\t_VirtualDom_applyFacts(domNode, eventNode, vNode.d);\n\t\treturn domNode;\n\t}\n\n\t// at this point `tag` must be 1 or 2\n\n\tvar domNode = vNode.f\n\t\t? _VirtualDom_doc.createElementNS(vNode.f, vNode.c)\n\t\t: _VirtualDom_doc.createElement(vNode.c);\n\n\tif (_VirtualDom_divertHrefToApp && vNode.c == 'a')\n\t{\n\t\tdomNode.addEventListener('click', _VirtualDom_divertHrefToApp(domNode));\n\t}\n\n\t_VirtualDom_applyFacts(domNode, eventNode, vNode.d);\n\n\tfor (var kids = vNode.e, i = 0; i < kids.length; i++)\n\t{\n\t\t_VirtualDom_appendChild(domNode, _VirtualDom_render(tag === 1 ? kids[i] : kids[i].b, eventNode));\n\t}\n\n\treturn domNode;\n}\n\n\n\n// APPLY FACTS\n\n\nfunction _VirtualDom_applyFacts(domNode, eventNode, facts)\n{\n\tfor (var key in facts)\n\t{\n\t\tvar value = facts[key];\n\n\t\tkey === 'a1'\n\t\t\t? _VirtualDom_applyStyles(domNode, value)\n\t\t\t:\n\t\tkey === 'a0'\n\t\t\t? _VirtualDom_applyEvents(domNode, eventNode, value)\n\t\t\t:\n\t\tkey === 'a3'\n\t\t\t? _VirtualDom_applyAttrs(domNode, value)\n\t\t\t:\n\t\tkey === 'a4'\n\t\t\t? _VirtualDom_applyAttrsNS(domNode, value)\n\t\t\t:\n\t\t((key !== 'value' && key !== 'checked') || domNode[key] !== value) && (domNode[key] = value);\n\t}\n}\n\n\n\n// APPLY STYLES\n\n\nfunction _VirtualDom_applyStyles(domNode, styles)\n{\n\tvar domNodeStyle = domNode.style;\n\n\tfor (var key in styles)\n\t{\n\t\tdomNodeStyle[key] = styles[key];\n\t}\n}\n\n\n\n// APPLY ATTRS\n\n\nfunction _VirtualDom_applyAttrs(domNode, attrs)\n{\n\tfor (var key in attrs)\n\t{\n\t\tvar value = attrs[key];\n\t\ttypeof value !== 'undefined'\n\t\t\t? domNode.setAttribute(key, value)\n\t\t\t: domNode.removeAttribute(key);\n\t}\n}\n\n\n\n// APPLY NAMESPACED ATTRS\n\n\nfunction _VirtualDom_applyAttrsNS(domNode, nsAttrs)\n{\n\tfor (var key in nsAttrs)\n\t{\n\t\tvar pair = nsAttrs[key];\n\t\tvar namespace = pair.f;\n\t\tvar value = pair.o;\n\n\t\ttypeof value !== 'undefined'\n\t\t\t? domNode.setAttributeNS(namespace, key, value)\n\t\t\t: domNode.removeAttributeNS(namespace, key);\n\t}\n}\n\n\n\n// APPLY EVENTS\n\n\nfunction _VirtualDom_applyEvents(domNode, eventNode, events)\n{\n\tvar allCallbacks = domNode.elmFs || (domNode.elmFs = {});\n\n\tfor (var key in events)\n\t{\n\t\tvar newHandler = events[key];\n\t\tvar oldCallback = allCallbacks[key];\n\n\t\tif (!newHandler)\n\t\t{\n\t\t\tdomNode.removeEventListener(key, oldCallback);\n\t\t\tallCallbacks[key] = undefined;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (oldCallback)\n\t\t{\n\t\t\tvar oldHandler = oldCallback.q;\n\t\t\tif (oldHandler.$ === newHandler.$)\n\t\t\t{\n\t\t\t\toldCallback.q = newHandler;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdomNode.removeEventListener(key, oldCallback);\n\t\t}\n\n\t\toldCallback = _VirtualDom_makeCallback(eventNode, newHandler);\n\t\tdomNode.addEventListener(key, oldCallback,\n\t\t\t_VirtualDom_passiveSupported\n\t\t\t&& { passive: $elm$virtual_dom$VirtualDom$toHandlerInt(newHandler) < 2 }\n\t\t);\n\t\tallCallbacks[key] = oldCallback;\n\t}\n}\n\n\n\n// PASSIVE EVENTS\n\n\nvar _VirtualDom_passiveSupported;\n\ntry\n{\n\twindow.addEventListener('t', null, Object.defineProperty({}, 'passive', {\n\t\tget: function() { _VirtualDom_passiveSupported = true; }\n\t}));\n}\ncatch(e) {}\n\n\n\n// EVENT HANDLERS\n\n\nfunction _VirtualDom_makeCallback(eventNode, initialHandler)\n{\n\tfunction callback(event)\n\t{\n\t\tvar handler = callback.q;\n\t\tvar result = _Json_runHelp(handler.a, event);\n\n\t\tif (!$elm$core$Result$isOk(result))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tvar tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler);\n\n\t\t// 0 = Normal\n\t\t// 1 = MayStopPropagation\n\t\t// 2 = MayPreventDefault\n\t\t// 3 = Custom\n\n\t\tvar value = result.a;\n\t\tvar message = !tag ? value : tag < 3 ? value.a : value.ah;\n\t\tvar stopPropagation = tag == 1 ? value.b : tag == 3 && value.c4;\n\t\tvar currentEventNode = (\n\t\t\tstopPropagation && event.stopPropagation(),\n\t\t\t(tag == 2 ? value.b : tag == 3 && value.cQ) && event.preventDefault(),\n\t\t\teventNode\n\t\t);\n\t\tvar tagger;\n\t\tvar i;\n\t\twhile (tagger = currentEventNode.j)\n\t\t{\n\t\t\tif (typeof tagger == 'function')\n\t\t\t{\n\t\t\t\tmessage = tagger(message);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (var i = tagger.length; i--; )\n\t\t\t\t{\n\t\t\t\t\tmessage = tagger[i](message);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcurrentEventNode = currentEventNode.p;\n\t\t}\n\t\tcurrentEventNode(message, stopPropagation); // stopPropagation implies isSync\n\t}\n\n\tcallback.q = initialHandler;\n\n\treturn callback;\n}\n\nfunction _VirtualDom_equalEvents(x, y)\n{\n\treturn x.$ == y.$ && _Json_equality(x.a, y.a);\n}\n\n\n\n// DIFF\n\n\n// TODO: Should we do patches like in iOS?\n//\n// type Patch\n// = At Int Patch\n// | Batch (List Patch)\n// | Change ...\n//\n// How could it not be better?\n//\nfunction _VirtualDom_diff(x, y)\n{\n\tvar patches = [];\n\t_VirtualDom_diffHelp(x, y, patches, 0);\n\treturn patches;\n}\n\n\nfunction _VirtualDom_pushPatch(patches, type, index, data)\n{\n\tvar patch = {\n\t\t$: type,\n\t\tr: index,\n\t\ts: data,\n\t\tt: undefined,\n\t\tu: undefined\n\t};\n\tpatches.push(patch);\n\treturn patch;\n}\n\n\nfunction _VirtualDom_diffHelp(x, y, patches, index)\n{\n\tif (x === y)\n\t{\n\t\treturn;\n\t}\n\n\tvar xType = x.$;\n\tvar yType = y.$;\n\n\t// Bail if you run into different types of nodes. Implies that the\n\t// structure has changed significantly and it's not worth a diff.\n\tif (xType !== yType)\n\t{\n\t\tif (xType === 1 && yType === 2)\n\t\t{\n\t\t\ty = _VirtualDom_dekey(y);\n\t\t\tyType = 1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Now we know that both nodes are the same $.\n\tswitch (yType)\n\t{\n\t\tcase 5:\n\t\t\tvar xRefs = x.l;\n\t\t\tvar yRefs = y.l;\n\t\t\tvar i = xRefs.length;\n\t\t\tvar same = i === yRefs.length;\n\t\t\twhile (same && i--)\n\t\t\t{\n\t\t\t\tsame = xRefs[i] === yRefs[i];\n\t\t\t}\n\t\t\tif (same)\n\t\t\t{\n\t\t\t\ty.k = x.k;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ty.k = y.m();\n\t\t\tvar subPatches = [];\n\t\t\t_VirtualDom_diffHelp(x.k, y.k, subPatches, 0);\n\t\t\tsubPatches.length > 0 && _VirtualDom_pushPatch(patches, 1, index, subPatches);\n\t\t\treturn;\n\n\t\tcase 4:\n\t\t\t// gather nested taggers\n\t\t\tvar xTaggers = x.j;\n\t\t\tvar yTaggers = y.j;\n\t\t\tvar nesting = false;\n\n\t\t\tvar xSubNode = x.k;\n\t\t\twhile (xSubNode.$ === 4)\n\t\t\t{\n\t\t\t\tnesting = true;\n\n\t\t\t\ttypeof xTaggers !== 'object'\n\t\t\t\t\t? xTaggers = [xTaggers, xSubNode.j]\n\t\t\t\t\t: xTaggers.push(xSubNode.j);\n\n\t\t\t\txSubNode = xSubNode.k;\n\t\t\t}\n\n\t\t\tvar ySubNode = y.k;\n\t\t\twhile (ySubNode.$ === 4)\n\t\t\t{\n\t\t\t\tnesting = true;\n\n\t\t\t\ttypeof yTaggers !== 'object'\n\t\t\t\t\t? yTaggers = [yTaggers, ySubNode.j]\n\t\t\t\t\t: yTaggers.push(ySubNode.j);\n\n\t\t\t\tySubNode = ySubNode.k;\n\t\t\t}\n\n\t\t\t// Just bail if different numbers of taggers. This implies the\n\t\t\t// structure of the virtual DOM has changed.\n\t\t\tif (nesting && xTaggers.length !== yTaggers.length)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// check if taggers are \"the same\"\n\t\t\tif (nesting ? !_VirtualDom_pairwiseRefEqual(xTaggers, yTaggers) : xTaggers !== yTaggers)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 2, index, yTaggers);\n\t\t\t}\n\n\t\t\t// diff everything below the taggers\n\t\t\t_VirtualDom_diffHelp(xSubNode, ySubNode, patches, index + 1);\n\t\t\treturn;\n\n\t\tcase 0:\n\t\t\tif (x.a !== y.a)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 3, index, y.a);\n\t\t\t}\n\t\t\treturn;\n\n\t\tcase 1:\n\t\t\t_VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKids);\n\t\t\treturn;\n\n\t\tcase 2:\n\t\t\t_VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKeyedKids);\n\t\t\treturn;\n\n\t\tcase 3:\n\t\t\tif (x.h !== y.h)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar factsDiff = _VirtualDom_diffFacts(x.d, y.d);\n\t\t\tfactsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);\n\n\t\t\tvar patch = y.i(x.g, y.g);\n\t\t\tpatch && _VirtualDom_pushPatch(patches, 5, index, patch);\n\n\t\t\treturn;\n\t}\n}\n\n// assumes the incoming arrays are the same length\nfunction _VirtualDom_pairwiseRefEqual(as, bs)\n{\n\tfor (var i = 0; i < as.length; i++)\n\t{\n\t\tif (as[i] !== bs[i])\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction _VirtualDom_diffNodes(x, y, patches, index, diffKids)\n{\n\t// Bail if obvious indicators have changed. Implies more serious\n\t// structural changes such that it's not worth it to diff.\n\tif (x.c !== y.c || x.f !== y.f)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\treturn;\n\t}\n\n\tvar factsDiff = _VirtualDom_diffFacts(x.d, y.d);\n\tfactsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);\n\n\tdiffKids(x, y, patches, index);\n}\n\n\n\n// DIFF FACTS\n\n\n// TODO Instead of creating a new diff object, it's possible to just test if\n// there *is* a diff. During the actual patch, do the diff again and make the\n// modifications directly. This way, there's no new allocations. Worth it?\nfunction _VirtualDom_diffFacts(x, y, category)\n{\n\tvar diff;\n\n\t// look for changes and removals\n\tfor (var xKey in x)\n\t{\n\t\tif (xKey === 'a1' || xKey === 'a0' || xKey === 'a3' || xKey === 'a4')\n\t\t{\n\t\t\tvar subDiff = _VirtualDom_diffFacts(x[xKey], y[xKey] || {}, xKey);\n\t\t\tif (subDiff)\n\t\t\t{\n\t\t\t\tdiff = diff || {};\n\t\t\t\tdiff[xKey] = subDiff;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove if not in the new facts\n\t\tif (!(xKey in y))\n\t\t{\n\t\t\tdiff = diff || {};\n\t\t\tdiff[xKey] =\n\t\t\t\t!category\n\t\t\t\t\t? (typeof x[xKey] === 'string' ? '' : null)\n\t\t\t\t\t:\n\t\t\t\t(category === 'a1')\n\t\t\t\t\t? ''\n\t\t\t\t\t:\n\t\t\t\t(category === 'a0' || category === 'a3')\n\t\t\t\t\t? undefined\n\t\t\t\t\t:\n\t\t\t\t{ f: x[xKey].f, o: undefined };\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar xValue = x[xKey];\n\t\tvar yValue = y[xKey];\n\n\t\t// reference equal, so don't worry about it\n\t\tif (xValue === yValue && xKey !== 'value' && xKey !== 'checked'\n\t\t\t|| category === 'a0' && _VirtualDom_equalEvents(xValue, yValue))\n\t\t{\n\t\t\tcontinue;\n\t\t}\n\n\t\tdiff = diff || {};\n\t\tdiff[xKey] = yValue;\n\t}\n\n\t// add new stuff\n\tfor (var yKey in y)\n\t{\n\t\tif (!(yKey in x))\n\t\t{\n\t\t\tdiff = diff || {};\n\t\t\tdiff[yKey] = y[yKey];\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n\n\n// DIFF KIDS\n\n\nfunction _VirtualDom_diffKids(xParent, yParent, patches, index)\n{\n\tvar xKids = xParent.e;\n\tvar yKids = yParent.e;\n\n\tvar xLen = xKids.length;\n\tvar yLen = yKids.length;\n\n\t// FIGURE OUT IF THERE ARE INSERTS OR REMOVALS\n\n\tif (xLen > yLen)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 6, index, {\n\t\t\tv: yLen,\n\t\t\ti: xLen - yLen\n\t\t});\n\t}\n\telse if (xLen < yLen)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 7, index, {\n\t\t\tv: xLen,\n\t\t\te: yKids\n\t\t});\n\t}\n\n\t// PAIRWISE DIFF EVERYTHING ELSE\n\n\tfor (var minLen = xLen < yLen ? xLen : yLen, i = 0; i < minLen; i++)\n\t{\n\t\tvar xKid = xKids[i];\n\t\t_VirtualDom_diffHelp(xKid, yKids[i], patches, ++index);\n\t\tindex += xKid.b || 0;\n\t}\n}\n\n\n\n// KEYED DIFF\n\n\nfunction _VirtualDom_diffKeyedKids(xParent, yParent, patches, rootIndex)\n{\n\tvar localPatches = [];\n\n\tvar changes = {}; // Dict String Entry\n\tvar inserts = []; // Array { index : Int, entry : Entry }\n\t// type Entry = { tag : String, vnode : VNode, index : Int, data : _ }\n\n\tvar xKids = xParent.e;\n\tvar yKids = yParent.e;\n\tvar xLen = xKids.length;\n\tvar yLen = yKids.length;\n\tvar xIndex = 0;\n\tvar yIndex = 0;\n\n\tvar index = rootIndex;\n\n\twhile (xIndex < xLen && yIndex < yLen)\n\t{\n\t\tvar x = xKids[xIndex];\n\t\tvar y = yKids[yIndex];\n\n\t\tvar xKey = x.a;\n\t\tvar yKey = y.a;\n\t\tvar xNode = x.b;\n\t\tvar yNode = y.b;\n\n\t\tvar newMatch = undefined;\n\t\tvar oldMatch = undefined;\n\n\t\t// check if keys match\n\n\t\tif (xKey === yKey)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNode, yNode, localPatches, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\txIndex++;\n\t\t\tyIndex++;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// look ahead 1 to detect insertions and removals.\n\n\t\tvar xNext = xKids[xIndex + 1];\n\t\tvar yNext = yKids[yIndex + 1];\n\n\t\tif (xNext)\n\t\t{\n\t\t\tvar xNextKey = xNext.a;\n\t\t\tvar xNextNode = xNext.b;\n\t\t\toldMatch = yKey === xNextKey;\n\t\t}\n\n\t\tif (yNext)\n\t\t{\n\t\t\tvar yNextKey = yNext.a;\n\t\t\tvar yNextNode = yNext.b;\n\t\t\tnewMatch = xKey === yNextKey;\n\t\t}\n\n\n\t\t// swap x and y\n\t\tif (newMatch && oldMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);\n\t\t\t_VirtualDom_insertNode(changes, localPatches, xKey, yNode, yIndex, inserts);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNextNode, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// insert y\n\t\tif (newMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);\n\t\t\t_VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\txIndex += 1;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove x\n\t\tif (oldMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNextNode, yNode, localPatches, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove x, insert y\n\t\tif (xNext && xNextKey === yNextKey)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);\n\t\t\t_VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNextNode, yNextNode, localPatches, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\tbreak;\n\t}\n\n\t// eat up any remaining nodes with removeNode and insertNode\n\n\twhile (xIndex < xLen)\n\t{\n\t\tindex++;\n\t\tvar x = xKids[xIndex];\n\t\tvar xNode = x.b;\n\t\t_VirtualDom_removeNode(changes, localPatches, x.a, xNode, index);\n\t\tindex += xNode.b || 0;\n\t\txIndex++;\n\t}\n\n\twhile (yIndex < yLen)\n\t{\n\t\tvar endInserts = endInserts || [];\n\t\tvar y = yKids[yIndex];\n\t\t_VirtualDom_insertNode(changes, localPatches, y.a, y.b, undefined, endInserts);\n\t\tyIndex++;\n\t}\n\n\tif (localPatches.length > 0 || inserts.length > 0 || endInserts)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 8, rootIndex, {\n\t\t\tw: localPatches,\n\t\t\tx: inserts,\n\t\t\ty: endInserts\n\t\t});\n\t}\n}\n\n\n\n// CHANGES FROM KEYED DIFF\n\n\nvar _VirtualDom_POSTFIX = '_elmW6BL';\n\n\nfunction _VirtualDom_insertNode(changes, localPatches, key, vnode, yIndex, inserts)\n{\n\tvar entry = changes[key];\n\n\t// never seen this key before\n\tif (!entry)\n\t{\n\t\tentry = {\n\t\t\tc: 0,\n\t\t\tz: vnode,\n\t\t\tr: yIndex,\n\t\t\ts: undefined\n\t\t};\n\n\t\tinserts.push({ r: yIndex, A: entry });\n\t\tchanges[key] = entry;\n\n\t\treturn;\n\t}\n\n\t// this key was removed earlier, a match!\n\tif (entry.c === 1)\n\t{\n\t\tinserts.push({ r: yIndex, A: entry });\n\n\t\tentry.c = 2;\n\t\tvar subPatches = [];\n\t\t_VirtualDom_diffHelp(entry.z, vnode, subPatches, entry.r);\n\t\tentry.r = yIndex;\n\t\tentry.s.s = {\n\t\t\tw: subPatches,\n\t\t\tA: entry\n\t\t};\n\n\t\treturn;\n\t}\n\n\t// this key has already been inserted or moved, a duplicate!\n\t_VirtualDom_insertNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, yIndex, inserts);\n}\n\n\nfunction _VirtualDom_removeNode(changes, localPatches, key, vnode, index)\n{\n\tvar entry = changes[key];\n\n\t// never seen this key before\n\tif (!entry)\n\t{\n\t\tvar patch = _VirtualDom_pushPatch(localPatches, 9, index, undefined);\n\n\t\tchanges[key] = {\n\t\t\tc: 1,\n\t\t\tz: vnode,\n\t\t\tr: index,\n\t\t\ts: patch\n\t\t};\n\n\t\treturn;\n\t}\n\n\t// this key was inserted earlier, a match!\n\tif (entry.c === 0)\n\t{\n\t\tentry.c = 2;\n\t\tvar subPatches = [];\n\t\t_VirtualDom_diffHelp(vnode, entry.z, subPatches, index);\n\n\t\t_VirtualDom_pushPatch(localPatches, 9, index, {\n\t\t\tw: subPatches,\n\t\t\tA: entry\n\t\t});\n\n\t\treturn;\n\t}\n\n\t// this key has already been removed or moved, a duplicate!\n\t_VirtualDom_removeNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, index);\n}\n\n\n\n// ADD DOM NODES\n//\n// Each DOM node has an \"index\" assigned in order of traversal. It is important\n// to minimize our crawl over the actual DOM, so these indexes (along with the\n// descendantsCount of virtual nodes) let us skip touching entire subtrees of\n// the DOM if we know there are no patches there.\n\n\nfunction _VirtualDom_addDomNodes(domNode, vNode, patches, eventNode)\n{\n\t_VirtualDom_addDomNodesHelp(domNode, vNode, patches, 0, 0, vNode.b, eventNode);\n}\n\n\n// assumes `patches` is non-empty and indexes increase monotonically.\nfunction _VirtualDom_addDomNodesHelp(domNode, vNode, patches, i, low, high, eventNode)\n{\n\tvar patch = patches[i];\n\tvar index = patch.r;\n\n\twhile (index === low)\n\t{\n\t\tvar patchType = patch.$;\n\n\t\tif (patchType === 1)\n\t\t{\n\t\t\t_VirtualDom_addDomNodes(domNode, vNode.k, patch.s, eventNode);\n\t\t}\n\t\telse if (patchType === 8)\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\n\t\t\tvar subPatches = patch.s.w;\n\t\t\tif (subPatches.length > 0)\n\t\t\t{\n\t\t\t\t_VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);\n\t\t\t}\n\t\t}\n\t\telse if (patchType === 9)\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\n\t\t\tvar data = patch.s;\n\t\t\tif (data)\n\t\t\t{\n\t\t\t\tdata.A.s = domNode;\n\t\t\t\tvar subPatches = data.w;\n\t\t\t\tif (subPatches.length > 0)\n\t\t\t\t{\n\t\t\t\t\t_VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\t\t}\n\n\t\ti++;\n\n\t\tif (!(patch = patches[i]) || (index = patch.r) > high)\n\t\t{\n\t\t\treturn i;\n\t\t}\n\t}\n\n\tvar tag = vNode.$;\n\n\tif (tag === 4)\n\t{\n\t\tvar subNode = vNode.k;\n\n\t\twhile (subNode.$ === 4)\n\t\t{\n\t\t\tsubNode = subNode.k;\n\t\t}\n\n\t\treturn _VirtualDom_addDomNodesHelp(domNode, subNode, patches, i, low + 1, high, domNode.elm_event_node_ref);\n\t}\n\n\t// tag must be 1 or 2 at this point\n\n\tvar vKids = vNode.e;\n\tvar childNodes = domNode.childNodes;\n\tfor (var j = 0; j < vKids.length; j++)\n\t{\n\t\tlow++;\n\t\tvar vKid = tag === 1 ? vKids[j] : vKids[j].b;\n\t\tvar nextLow = low + (vKid.b || 0);\n\t\tif (low <= index && index <= nextLow)\n\t\t{\n\t\t\ti = _VirtualDom_addDomNodesHelp(childNodes[j], vKid, patches, i, low, nextLow, eventNode);\n\t\t\tif (!(patch = patches[i]) || (index = patch.r) > high)\n\t\t\t{\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\tlow = nextLow;\n\t}\n\treturn i;\n}\n\n\n\n// APPLY PATCHES\n\n\nfunction _VirtualDom_applyPatches(rootDomNode, oldVirtualNode, patches, eventNode)\n{\n\tif (patches.length === 0)\n\t{\n\t\treturn rootDomNode;\n\t}\n\n\t_VirtualDom_addDomNodes(rootDomNode, oldVirtualNode, patches, eventNode);\n\treturn _VirtualDom_applyPatchesHelp(rootDomNode, patches);\n}\n\nfunction _VirtualDom_applyPatchesHelp(rootDomNode, patches)\n{\n\tfor (var i = 0; i < patches.length; i++)\n\t{\n\t\tvar patch = patches[i];\n\t\tvar localDomNode = patch.t\n\t\tvar newNode = _VirtualDom_applyPatch(localDomNode, patch);\n\t\tif (localDomNode === rootDomNode)\n\t\t{\n\t\t\trootDomNode = newNode;\n\t\t}\n\t}\n\treturn rootDomNode;\n}\n\nfunction _VirtualDom_applyPatch(domNode, patch)\n{\n\tswitch (patch.$)\n\t{\n\t\tcase 0:\n\t\t\treturn _VirtualDom_applyPatchRedraw(domNode, patch.s, patch.u);\n\n\t\tcase 4:\n\t\t\t_VirtualDom_applyFacts(domNode, patch.u, patch.s);\n\t\t\treturn domNode;\n\n\t\tcase 3:\n\t\t\tdomNode.replaceData(0, domNode.length, patch.s);\n\t\t\treturn domNode;\n\n\t\tcase 1:\n\t\t\treturn _VirtualDom_applyPatchesHelp(domNode, patch.s);\n\n\t\tcase 2:\n\t\t\tif (domNode.elm_event_node_ref)\n\t\t\t{\n\t\t\t\tdomNode.elm_event_node_ref.j = patch.s;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tdomNode.elm_event_node_ref = { j: patch.s, p: patch.u };\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 6:\n\t\t\tvar data = patch.s;\n\t\t\tfor (var i = 0; i < data.i; i++)\n\t\t\t{\n\t\t\t\tdomNode.removeChild(domNode.childNodes[data.v]);\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 7:\n\t\t\tvar data = patch.s;\n\t\t\tvar kids = data.e;\n\t\t\tvar i = data.v;\n\t\t\tvar theEnd = domNode.childNodes[i];\n\t\t\tfor (; i < kids.length; i++)\n\t\t\t{\n\t\t\t\tdomNode.insertBefore(_VirtualDom_render(kids[i], patch.u), theEnd);\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 9:\n\t\t\tvar data = patch.s;\n\t\t\tif (!data)\n\t\t\t{\n\t\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t\t\treturn domNode;\n\t\t\t}\n\t\t\tvar entry = data.A;\n\t\t\tif (typeof entry.r !== 'undefined')\n\t\t\t{\n\t\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t\t}\n\t\t\tentry.s = _VirtualDom_applyPatchesHelp(domNode, data.w);\n\t\t\treturn domNode;\n\n\t\tcase 8:\n\t\t\treturn _VirtualDom_applyPatchReorder(domNode, patch);\n\n\t\tcase 5:\n\t\t\treturn patch.s(domNode);\n\n\t\tdefault:\n\t\t\t_Debug_crash(10); // 'Ran into an unknown patch!'\n\t}\n}\n\n\nfunction _VirtualDom_applyPatchRedraw(domNode, vNode, eventNode)\n{\n\tvar parentNode = domNode.parentNode;\n\tvar newNode = _VirtualDom_render(vNode, eventNode);\n\n\tif (!newNode.elm_event_node_ref)\n\t{\n\t\tnewNode.elm_event_node_ref = domNode.elm_event_node_ref;\n\t}\n\n\tif (parentNode && newNode !== domNode)\n\t{\n\t\tparentNode.replaceChild(newNode, domNode);\n\t}\n\treturn newNode;\n}\n\n\nfunction _VirtualDom_applyPatchReorder(domNode, patch)\n{\n\tvar data = patch.s;\n\n\t// remove end inserts\n\tvar frag = _VirtualDom_applyPatchReorderEndInsertsHelp(data.y, patch);\n\n\t// removals\n\tdomNode = _VirtualDom_applyPatchesHelp(domNode, data.w);\n\n\t// inserts\n\tvar inserts = data.x;\n\tfor (var i = 0; i < inserts.length; i++)\n\t{\n\t\tvar insert = inserts[i];\n\t\tvar entry = insert.A;\n\t\tvar node = entry.c === 2\n\t\t\t? entry.s\n\t\t\t: _VirtualDom_render(entry.z, patch.u);\n\t\tdomNode.insertBefore(node, domNode.childNodes[insert.r]);\n\t}\n\n\t// add end inserts\n\tif (frag)\n\t{\n\t\t_VirtualDom_appendChild(domNode, frag);\n\t}\n\n\treturn domNode;\n}\n\n\nfunction _VirtualDom_applyPatchReorderEndInsertsHelp(endInserts, patch)\n{\n\tif (!endInserts)\n\t{\n\t\treturn;\n\t}\n\n\tvar frag = _VirtualDom_doc.createDocumentFragment();\n\tfor (var i = 0; i < endInserts.length; i++)\n\t{\n\t\tvar insert = endInserts[i];\n\t\tvar entry = insert.A;\n\t\t_VirtualDom_appendChild(frag, entry.c === 2\n\t\t\t? entry.s\n\t\t\t: _VirtualDom_render(entry.z, patch.u)\n\t\t);\n\t}\n\treturn frag;\n}\n\n\nfunction _VirtualDom_virtualize(node)\n{\n\t// TEXT NODES\n\n\tif (node.nodeType === 3)\n\t{\n\t\treturn _VirtualDom_text(node.textContent);\n\t}\n\n\n\t// WEIRD NODES\n\n\tif (node.nodeType !== 1)\n\t{\n\t\treturn _VirtualDom_text('');\n\t}\n\n\n\t// ELEMENT NODES\n\n\tvar attrList = _List_Nil;\n\tvar attrs = node.attributes;\n\tfor (var i = attrs.length; i--; )\n\t{\n\t\tvar attr = attrs[i];\n\t\tvar name = attr.name;\n\t\tvar value = attr.value;\n\t\tattrList = _List_Cons( A2(_VirtualDom_attribute, name, value), attrList );\n\t}\n\n\tvar tag = node.tagName.toLowerCase();\n\tvar kidList = _List_Nil;\n\tvar kids = node.childNodes;\n\n\tfor (var i = kids.length; i--; )\n\t{\n\t\tkidList = _List_Cons(_VirtualDom_virtualize(kids[i]), kidList);\n\t}\n\treturn A3(_VirtualDom_node, tag, attrList, kidList);\n}\n\nfunction _VirtualDom_dekey(keyedNode)\n{\n\tvar keyedKids = keyedNode.e;\n\tvar len = keyedKids.length;\n\tvar kids = new Array(len);\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tkids[i] = keyedKids[i].b;\n\t}\n\n\treturn {\n\t\t$: 1,\n\t\tc: keyedNode.c,\n\t\td: keyedNode.d,\n\t\te: kids,\n\t\tf: keyedNode.f,\n\t\tb: keyedNode.b\n\t};\n}\n\n\n\n\n// ELEMENT\n\n\nvar _Debugger_element;\n\nvar _Browser_element = _Debugger_element || F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.fb,\n\t\timpl.fZ,\n\t\timpl.fN,\n\t\tfunction(sendToApp, initialModel) {\n\t\t\tvar view = impl.f0;\n\t\t\t/**/\n\t\t\tvar domNode = args['node'];\n\t\t\t//*/\n\t\t\t/**_UNUSED/\n\t\t\tvar domNode = args && args['node'] ? args['node'] : _Debug_crash(0);\n\t\t\t//*/\n\t\t\tvar currNode = _VirtualDom_virtualize(domNode);\n\n\t\t\treturn _Browser_makeAnimator(initialModel, function(model)\n\t\t\t{\n\t\t\t\tvar nextNode = view(model);\n\t\t\t\tvar patches = _VirtualDom_diff(currNode, nextNode);\n\t\t\t\tdomNode = _VirtualDom_applyPatches(domNode, currNode, patches, sendToApp);\n\t\t\t\tcurrNode = nextNode;\n\t\t\t});\n\t\t}\n\t);\n});\n\n\n\n// DOCUMENT\n\n\nvar _Debugger_document;\n\nvar _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.fb,\n\t\timpl.fZ,\n\t\timpl.fN,\n\t\tfunction(sendToApp, initialModel) {\n\t\t\tvar divertHrefToApp = impl.cX && impl.cX(sendToApp)\n\t\t\tvar view = impl.f0;\n\t\t\tvar title = _VirtualDom_doc.title;\n\t\t\tvar bodyNode = _VirtualDom_doc.body;\n\t\t\tvar currNode = _VirtualDom_virtualize(bodyNode);\n\t\t\treturn _Browser_makeAnimator(initialModel, function(model)\n\t\t\t{\n\t\t\t\t_VirtualDom_divertHrefToApp = divertHrefToApp;\n\t\t\t\tvar doc = view(model);\n\t\t\t\tvar nextNode = _VirtualDom_node('body')(_List_Nil)(doc.eJ);\n\t\t\t\tvar patches = _VirtualDom_diff(currNode, nextNode);\n\t\t\t\tbodyNode = _VirtualDom_applyPatches(bodyNode, currNode, patches, sendToApp);\n\t\t\t\tcurrNode = nextNode;\n\t\t\t\t_VirtualDom_divertHrefToApp = 0;\n\t\t\t\t(title !== doc.fR) && (_VirtualDom_doc.title = title = doc.fR);\n\t\t\t});\n\t\t}\n\t);\n});\n\n\n\n// ANIMATION\n\n\nvar _Browser_cancelAnimationFrame =\n\ttypeof cancelAnimationFrame !== 'undefined'\n\t\t? cancelAnimationFrame\n\t\t: function(id) { clearTimeout(id); };\n\nvar _Browser_requestAnimationFrame =\n\ttypeof requestAnimationFrame !== 'undefined'\n\t\t? requestAnimationFrame\n\t\t: function(callback) { return setTimeout(callback, 1000 / 60); };\n\n\nfunction _Browser_makeAnimator(model, draw)\n{\n\tdraw(model);\n\n\tvar state = 0;\n\n\tfunction updateIfNeeded()\n\t{\n\t\tstate = state === 1\n\t\t\t? 0\n\t\t\t: ( _Browser_requestAnimationFrame(updateIfNeeded), draw(model), 1 );\n\t}\n\n\treturn function(nextModel, isSync)\n\t{\n\t\tmodel = nextModel;\n\n\t\tisSync\n\t\t\t? ( draw(model),\n\t\t\t\tstate === 2 && (state = 1)\n\t\t\t\t)\n\t\t\t: ( state === 0 && _Browser_requestAnimationFrame(updateIfNeeded),\n\t\t\t\tstate = 2\n\t\t\t\t);\n\t};\n}\n\n\n\n// APPLICATION\n\n\nfunction _Browser_application(impl)\n{\n\tvar onUrlChange = impl.fx;\n\tvar onUrlRequest = impl.fy;\n\tvar key = function() { key.a(onUrlChange(_Browser_getUrl())); };\n\n\treturn _Browser_document({\n\t\tcX: function(sendToApp)\n\t\t{\n\t\t\tkey.a = sendToApp;\n\t\t\t_Browser_window.addEventListener('popstate', key);\n\t\t\t_Browser_window.navigator.userAgent.indexOf('Trident') < 0 || _Browser_window.addEventListener('hashchange', key);\n\n\t\t\treturn F2(function(domNode, event)\n\t\t\t{\n\t\t\t\tif (!event.ctrlKey && !event.metaKey && !event.shiftKey && event.button < 1 && !domNode.target && !domNode.hasAttribute('download'))\n\t\t\t\t{\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tvar href = domNode.href;\n\t\t\t\t\tvar curr = _Browser_getUrl();\n\t\t\t\t\tvar next = $elm$url$Url$fromString(href).a;\n\t\t\t\t\tsendToApp(onUrlRequest(\n\t\t\t\t\t\t(next\n\t\t\t\t\t\t\t&& curr.d2 === next.d2\n\t\t\t\t\t\t\t&& curr.e6 === next.e6\n\t\t\t\t\t\t\t&& curr.dZ.a === next.dZ.a\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\t? $elm$browser$Browser$Internal(next)\n\t\t\t\t\t\t\t: $elm$browser$Browser$External(href)\n\t\t\t\t\t));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tfb: function(flags)\n\t\t{\n\t\t\treturn A3(impl.fb, flags, _Browser_getUrl(), key);\n\t\t},\n\t\tf0: impl.f0,\n\t\tfZ: impl.fZ,\n\t\tfN: impl.fN\n\t});\n}\n\nfunction _Browser_getUrl()\n{\n\treturn $elm$url$Url$fromString(_VirtualDom_doc.location.href).a || _Debug_crash(1);\n}\n\nvar _Browser_go = F2(function(key, n)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\tn && history.go(n);\n\t\tkey();\n\t}));\n});\n\nvar _Browser_pushUrl = F2(function(key, url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\thistory.pushState({}, '', url);\n\t\tkey();\n\t}));\n});\n\nvar _Browser_replaceUrl = F2(function(key, url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\thistory.replaceState({}, '', url);\n\t\tkey();\n\t}));\n});\n\n\n\n// GLOBAL EVENTS\n\n\nvar _Browser_fakeNode = { addEventListener: function() {}, removeEventListener: function() {} };\nvar _Browser_doc = typeof document !== 'undefined' ? document : _Browser_fakeNode;\nvar _Browser_window = typeof window !== 'undefined' ? window : _Browser_fakeNode;\n\nvar _Browser_on = F3(function(node, eventName, sendToSelf)\n{\n\treturn _Scheduler_spawn(_Scheduler_binding(function(callback)\n\t{\n\t\tfunction handler(event)\t{ _Scheduler_rawSpawn(sendToSelf(event)); }\n\t\tnode.addEventListener(eventName, handler, _VirtualDom_passiveSupported && { passive: true });\n\t\treturn function() { node.removeEventListener(eventName, handler); };\n\t}));\n});\n\nvar _Browser_decodeEvent = F2(function(decoder, event)\n{\n\tvar result = _Json_runHelp(decoder, event);\n\treturn $elm$core$Result$isOk(result) ? $elm$core$Maybe$Just(result.a) : $elm$core$Maybe$Nothing;\n});\n\n\n\n// PAGE VISIBILITY\n\n\nfunction _Browser_visibilityInfo()\n{\n\treturn (typeof _VirtualDom_doc.hidden !== 'undefined')\n\t\t? { e5: 'hidden', eM: 'visibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.mozHidden !== 'undefined')\n\t\t? { e5: 'mozHidden', eM: 'mozvisibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.msHidden !== 'undefined')\n\t\t? { e5: 'msHidden', eM: 'msvisibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.webkitHidden !== 'undefined')\n\t\t? { e5: 'webkitHidden', eM: 'webkitvisibilitychange' }\n\t\t: { e5: 'hidden', eM: 'visibilitychange' };\n}\n\n\n\n// ANIMATION FRAMES\n\n\nfunction _Browser_rAF()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar id = _Browser_requestAnimationFrame(function() {\n\t\t\tcallback(_Scheduler_succeed(Date.now()));\n\t\t});\n\n\t\treturn function() {\n\t\t\t_Browser_cancelAnimationFrame(id);\n\t\t};\n\t});\n}\n\n\nfunction _Browser_now()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tcallback(_Scheduler_succeed(Date.now()));\n\t});\n}\n\n\n\n// DOM STUFF\n\n\nfunction _Browser_withNode(id, doStuff)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_Browser_requestAnimationFrame(function() {\n\t\t\tvar node = document.getElementById(id);\n\t\t\tcallback(node\n\t\t\t\t? _Scheduler_succeed(doStuff(node))\n\t\t\t\t: _Scheduler_fail($elm$browser$Browser$Dom$NotFound(id))\n\t\t\t);\n\t\t});\n\t});\n}\n\n\nfunction _Browser_withWindow(doStuff)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_Browser_requestAnimationFrame(function() {\n\t\t\tcallback(_Scheduler_succeed(doStuff()));\n\t\t});\n\t});\n}\n\n\n// FOCUS and BLUR\n\n\nvar _Browser_call = F2(function(functionName, id)\n{\n\treturn _Browser_withNode(id, function(node) {\n\t\tnode[functionName]();\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// WINDOW VIEWPORT\n\n\nfunction _Browser_getViewport()\n{\n\treturn {\n\t\tec: _Browser_getScene(),\n\t\teA: {\n\t\t\teC: _Browser_window.pageXOffset,\n\t\t\teD: _Browser_window.pageYOffset,\n\t\t\teB: _Browser_doc.documentElement.clientWidth,\n\t\t\tdz: _Browser_doc.documentElement.clientHeight\n\t\t}\n\t};\n}\n\nfunction _Browser_getScene()\n{\n\tvar body = _Browser_doc.body;\n\tvar elem = _Browser_doc.documentElement;\n\treturn {\n\t\teB: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth),\n\t\tdz: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight)\n\t};\n}\n\nvar _Browser_setViewport = F2(function(x, y)\n{\n\treturn _Browser_withWindow(function()\n\t{\n\t\t_Browser_window.scroll(x, y);\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// ELEMENT VIEWPORT\n\n\nfunction _Browser_getViewportOf(id)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\treturn {\n\t\t\tec: {\n\t\t\t\teB: node.scrollWidth,\n\t\t\t\tdz: node.scrollHeight\n\t\t\t},\n\t\t\teA: {\n\t\t\t\teC: node.scrollLeft,\n\t\t\t\teD: node.scrollTop,\n\t\t\t\teB: node.clientWidth,\n\t\t\t\tdz: node.clientHeight\n\t\t\t}\n\t\t};\n\t});\n}\n\n\nvar _Browser_setViewportOf = F3(function(id, x, y)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\tnode.scrollLeft = x;\n\t\tnode.scrollTop = y;\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// ELEMENT\n\n\nfunction _Browser_getElement(id)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\tvar rect = node.getBoundingClientRect();\n\t\tvar x = _Browser_window.pageXOffset;\n\t\tvar y = _Browser_window.pageYOffset;\n\t\treturn {\n\t\t\tec: _Browser_getScene(),\n\t\t\teA: {\n\t\t\t\teC: x,\n\t\t\t\teD: y,\n\t\t\t\teB: _Browser_doc.documentElement.clientWidth,\n\t\t\t\tdz: _Browser_doc.documentElement.clientHeight\n\t\t\t},\n\t\t\teU: {\n\t\t\t\teC: x + rect.left,\n\t\t\t\teD: y + rect.top,\n\t\t\t\teB: rect.width,\n\t\t\t\tdz: rect.height\n\t\t\t}\n\t\t};\n\t});\n}\n\n\n\n// LOAD and RELOAD\n\n\nfunction _Browser_reload(skipCache)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)\n\t{\n\t\t_VirtualDom_doc.location.reload(skipCache);\n\t}));\n}\n\nfunction _Browser_load(url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)\n\t{\n\t\ttry\n\t\t{\n\t\t\t_Browser_window.location = url;\n\t\t}\n\t\tcatch(err)\n\t\t{\n\t\t\t// Only Firefox can throw a NS_ERROR_MALFORMED_URI exception here.\n\t\t\t// Other browsers reload the page, so let's be consistent about that.\n\t\t\t_VirtualDom_doc.location.reload(false);\n\t\t}\n\t}));\n}\n\n\nfunction _Url_percentEncode(string)\n{\n\treturn encodeURIComponent(string);\n}\n\nfunction _Url_percentDecode(string)\n{\n\ttry\n\t{\n\t\treturn $elm$core$Maybe$Just(decodeURIComponent(string));\n\t}\n\tcatch (e)\n\t{\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n}\n\n\n// SEND REQUEST\n\nvar _Http_toTask = F3(function(router, toTask, request)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tfunction done(response) {\n\t\t\tcallback(toTask(request.eX.a(response)));\n\t\t}\n\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.addEventListener('error', function() { done($elm$http$Http$NetworkError_); });\n\t\txhr.addEventListener('timeout', function() { done($elm$http$Http$Timeout_); });\n\t\txhr.addEventListener('load', function() { done(_Http_toResponse(request.eX.b, xhr)); });\n\t\t$elm$core$Maybe$isJust(request.fY) && _Http_track(router, xhr, request.fY.a);\n\n\t\ttry {\n\t\t\txhr.open(request.fh, request.f_, true);\n\t\t} catch (e) {\n\t\t\treturn done($elm$http$Http$BadUrl_(request.f_));\n\t\t}\n\n\t\t_Http_configureRequest(xhr, request);\n\n\t\trequest.eJ.a && xhr.setRequestHeader('Content-Type', request.eJ.a);\n\t\txhr.send(request.eJ.b);\n\n\t\treturn function() { xhr.c = true; xhr.abort(); };\n\t});\n});\n\n\n// CONFIGURE\n\nfunction _Http_configureRequest(xhr, request)\n{\n\tfor (var headers = request.e3; headers.b; headers = headers.b) // WHILE_CONS\n\t{\n\t\txhr.setRequestHeader(headers.a.a, headers.a.b);\n\t}\n\txhr.timeout = request.fQ.a || 0;\n\txhr.responseType = request.eX.d;\n\txhr.withCredentials = request.eH;\n}\n\n\n// RESPONSES\n\nfunction _Http_toResponse(toBody, xhr)\n{\n\treturn A2(\n\t\t200 <= xhr.status && xhr.status < 300 ? $elm$http$Http$GoodStatus_ : $elm$http$Http$BadStatus_,\n\t\t_Http_toMetadata(xhr),\n\t\ttoBody(xhr.response)\n\t);\n}\n\n\n// METADATA\n\nfunction _Http_toMetadata(xhr)\n{\n\treturn {\n\t\tf_: xhr.responseURL,\n\t\tfL: xhr.status,\n\t\tfM: xhr.statusText,\n\t\te3: _Http_parseHeaders(xhr.getAllResponseHeaders())\n\t};\n}\n\n\n// HEADERS\n\nfunction _Http_parseHeaders(rawHeaders)\n{\n\tif (!rawHeaders)\n\t{\n\t\treturn $elm$core$Dict$empty;\n\t}\n\n\tvar headers = $elm$core$Dict$empty;\n\tvar headerPairs = rawHeaders.split('\\r\\n');\n\tfor (var i = headerPairs.length; i--; )\n\t{\n\t\tvar headerPair = headerPairs[i];\n\t\tvar index = headerPair.indexOf(': ');\n\t\tif (index > 0)\n\t\t{\n\t\t\tvar key = headerPair.substring(0, index);\n\t\t\tvar value = headerPair.substring(index + 2);\n\n\t\t\theaders = A3($elm$core$Dict$update, key, function(oldValue) {\n\t\t\t\treturn $elm$core$Maybe$Just($elm$core$Maybe$isJust(oldValue)\n\t\t\t\t\t? value + ', ' + oldValue.a\n\t\t\t\t\t: value\n\t\t\t\t);\n\t\t\t}, headers);\n\t\t}\n\t}\n\treturn headers;\n}\n\n\n// EXPECT\n\nvar _Http_expect = F3(function(type, toBody, toValue)\n{\n\treturn {\n\t\t$: 0,\n\t\td: type,\n\t\tb: toBody,\n\t\ta: toValue\n\t};\n});\n\nvar _Http_mapExpect = F2(function(func, expect)\n{\n\treturn {\n\t\t$: 0,\n\t\td: expect.d,\n\t\tb: expect.b,\n\t\ta: function(x) { return func(expect.a(x)); }\n\t};\n});\n\nfunction _Http_toDataView(arrayBuffer)\n{\n\treturn new DataView(arrayBuffer);\n}\n\n\n// BODY and PARTS\n\nvar _Http_emptyBody = { $: 0 };\nvar _Http_pair = F2(function(a, b) { return { $: 0, a: a, b: b }; });\n\nfunction _Http_toFormData(parts)\n{\n\tfor (var formData = new FormData(); parts.b; parts = parts.b) // WHILE_CONS\n\t{\n\t\tvar part = parts.a;\n\t\tformData.append(part.a, part.b);\n\t}\n\treturn formData;\n}\n\nvar _Http_bytesToBlob = F2(function(mime, bytes)\n{\n\treturn new Blob([bytes], { type: mime });\n});\n\n\n// PROGRESS\n\nfunction _Http_track(router, xhr, tracker)\n{\n\t// TODO check out lengthComputable on loadstart event\n\n\txhr.upload.addEventListener('progress', function(event) {\n\t\tif (xhr.c) { return; }\n\t\t_Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Sending({\n\t\t\tfK: event.loaded,\n\t\t\teg: event.total\n\t\t}))));\n\t});\n\txhr.addEventListener('progress', function(event) {\n\t\tif (xhr.c) { return; }\n\t\t_Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Receiving({\n\t\t\tfE: event.loaded,\n\t\t\teg: event.lengthComputable ? $elm$core$Maybe$Just(event.total) : $elm$core$Maybe$Nothing\n\t\t}))));\n\t});\n}var $author$project$Main$LinkClicked = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Main$UrlChanged = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$core$Basics$EQ = 1;\nvar $elm$core$Basics$GT = 2;\nvar $elm$core$Basics$LT = 0;\nvar $elm$core$List$cons = _List_cons;\nvar $elm$core$Dict$foldr = F3(\n\tfunction (func, acc, t) {\n\t\tfoldr:\n\t\twhile (true) {\n\t\t\tif (t.$ === -2) {\n\t\t\t\treturn acc;\n\t\t\t} else {\n\t\t\t\tvar key = t.b;\n\t\t\t\tvar value = t.c;\n\t\t\t\tvar left = t.d;\n\t\t\t\tvar right = t.e;\n\t\t\t\tvar $temp$func = func,\n\t\t\t\t\t$temp$acc = A3(\n\t\t\t\t\tfunc,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tA3($elm$core$Dict$foldr, func, acc, right)),\n\t\t\t\t\t$temp$t = left;\n\t\t\t\tfunc = $temp$func;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tt = $temp$t;\n\t\t\t\tcontinue foldr;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$toList = function (dict) {\n\treturn A3(\n\t\t$elm$core$Dict$foldr,\n\t\tF3(\n\t\t\tfunction (key, value, list) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t_Utils_Tuple2(key, value),\n\t\t\t\t\tlist);\n\t\t\t}),\n\t\t_List_Nil,\n\t\tdict);\n};\nvar $elm$core$Dict$keys = function (dict) {\n\treturn A3(\n\t\t$elm$core$Dict$foldr,\n\t\tF3(\n\t\t\tfunction (key, value, keyList) {\n\t\t\t\treturn A2($elm$core$List$cons, key, keyList);\n\t\t\t}),\n\t\t_List_Nil,\n\t\tdict);\n};\nvar $elm$core$Set$toList = function (_v0) {\n\tvar dict = _v0;\n\treturn $elm$core$Dict$keys(dict);\n};\nvar $elm$core$Elm$JsArray$foldr = _JsArray_foldr;\nvar $elm$core$Array$foldr = F3(\n\tfunction (func, baseCase, _v0) {\n\t\tvar tree = _v0.c;\n\t\tvar tail = _v0.d;\n\t\tvar helper = F2(\n\t\t\tfunction (node, acc) {\n\t\t\t\tif (!node.$) {\n\t\t\t\t\tvar subTree = node.a;\n\t\t\t\t\treturn A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree);\n\t\t\t\t} else {\n\t\t\t\t\tvar values = node.a;\n\t\t\t\t\treturn A3($elm$core$Elm$JsArray$foldr, func, acc, values);\n\t\t\t\t}\n\t\t\t});\n\t\treturn A3(\n\t\t\t$elm$core$Elm$JsArray$foldr,\n\t\t\thelper,\n\t\t\tA3($elm$core$Elm$JsArray$foldr, func, baseCase, tail),\n\t\t\ttree);\n\t});\nvar $elm$core$Array$toList = function (array) {\n\treturn A3($elm$core$Array$foldr, $elm$core$List$cons, _List_Nil, array);\n};\nvar $elm$core$Result$Err = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$json$Json$Decode$Failure = F2(\n\tfunction (a, b) {\n\t\treturn {$: 3, a: a, b: b};\n\t});\nvar $elm$json$Json$Decode$Field = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $elm$json$Json$Decode$Index = F2(\n\tfunction (a, b) {\n\t\treturn {$: 1, a: a, b: b};\n\t});\nvar $elm$core$Result$Ok = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$json$Json$Decode$OneOf = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$core$Basics$False = 1;\nvar $elm$core$Basics$add = _Basics_add;\nvar $elm$core$Maybe$Just = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$core$Maybe$Nothing = {$: 1};\nvar $elm$core$String$all = _String_all;\nvar $elm$core$Basics$and = _Basics_and;\nvar $elm$core$Basics$append = _Utils_append;\nvar $elm$json$Json$Encode$encode = _Json_encode;\nvar $elm$core$String$fromInt = _String_fromNumber;\nvar $elm$core$String$join = F2(\n\tfunction (sep, chunks) {\n\t\treturn A2(\n\t\t\t_String_join,\n\t\t\tsep,\n\t\t\t_List_toArray(chunks));\n\t});\nvar $elm$core$String$split = F2(\n\tfunction (sep, string) {\n\t\treturn _List_fromArray(\n\t\t\tA2(_String_split, sep, string));\n\t});\nvar $elm$json$Json$Decode$indent = function (str) {\n\treturn A2(\n\t\t$elm$core$String$join,\n\t\t'\\n ',\n\t\tA2($elm$core$String$split, '\\n', str));\n};\nvar $elm$core$List$foldl = F3(\n\tfunction (func, acc, list) {\n\t\tfoldl:\n\t\twhile (true) {\n\t\t\tif (!list.b) {\n\t\t\t\treturn acc;\n\t\t\t} else {\n\t\t\t\tvar x = list.a;\n\t\t\t\tvar xs = list.b;\n\t\t\t\tvar $temp$func = func,\n\t\t\t\t\t$temp$acc = A2(func, x, acc),\n\t\t\t\t\t$temp$list = xs;\n\t\t\t\tfunc = $temp$func;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tlist = $temp$list;\n\t\t\t\tcontinue foldl;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$length = function (xs) {\n\treturn A3(\n\t\t$elm$core$List$foldl,\n\t\tF2(\n\t\t\tfunction (_v0, i) {\n\t\t\t\treturn i + 1;\n\t\t\t}),\n\t\t0,\n\t\txs);\n};\nvar $elm$core$List$map2 = _List_map2;\nvar $elm$core$Basics$le = _Utils_le;\nvar $elm$core$Basics$sub = _Basics_sub;\nvar $elm$core$List$rangeHelp = F3(\n\tfunction (lo, hi, list) {\n\t\trangeHelp:\n\t\twhile (true) {\n\t\t\tif (_Utils_cmp(lo, hi) < 1) {\n\t\t\t\tvar $temp$lo = lo,\n\t\t\t\t\t$temp$hi = hi - 1,\n\t\t\t\t\t$temp$list = A2($elm$core$List$cons, hi, list);\n\t\t\t\tlo = $temp$lo;\n\t\t\t\thi = $temp$hi;\n\t\t\t\tlist = $temp$list;\n\t\t\t\tcontinue rangeHelp;\n\t\t\t} else {\n\t\t\t\treturn list;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$range = F2(\n\tfunction (lo, hi) {\n\t\treturn A3($elm$core$List$rangeHelp, lo, hi, _List_Nil);\n\t});\nvar $elm$core$List$indexedMap = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$map2,\n\t\t\tf,\n\t\t\tA2(\n\t\t\t\t$elm$core$List$range,\n\t\t\t\t0,\n\t\t\t\t$elm$core$List$length(xs) - 1),\n\t\t\txs);\n\t});\nvar $elm$core$Char$toCode = _Char_toCode;\nvar $elm$core$Char$isLower = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (97 <= code) && (code <= 122);\n};\nvar $elm$core$Char$isUpper = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (code <= 90) && (65 <= code);\n};\nvar $elm$core$Basics$or = _Basics_or;\nvar $elm$core$Char$isAlpha = function (_char) {\n\treturn $elm$core$Char$isLower(_char) || $elm$core$Char$isUpper(_char);\n};\nvar $elm$core$Char$isDigit = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (code <= 57) && (48 <= code);\n};\nvar $elm$core$Char$isAlphaNum = function (_char) {\n\treturn $elm$core$Char$isLower(_char) || ($elm$core$Char$isUpper(_char) || $elm$core$Char$isDigit(_char));\n};\nvar $elm$core$List$reverse = function (list) {\n\treturn A3($elm$core$List$foldl, $elm$core$List$cons, _List_Nil, list);\n};\nvar $elm$core$String$uncons = _String_uncons;\nvar $elm$json$Json$Decode$errorOneOf = F2(\n\tfunction (i, error) {\n\t\treturn '\\n\\n(' + ($elm$core$String$fromInt(i + 1) + (') ' + $elm$json$Json$Decode$indent(\n\t\t\t$elm$json$Json$Decode$errorToString(error))));\n\t});\nvar $elm$json$Json$Decode$errorToString = function (error) {\n\treturn A2($elm$json$Json$Decode$errorToStringHelp, error, _List_Nil);\n};\nvar $elm$json$Json$Decode$errorToStringHelp = F2(\n\tfunction (error, context) {\n\t\terrorToStringHelp:\n\t\twhile (true) {\n\t\t\tswitch (error.$) {\n\t\t\t\tcase 0:\n\t\t\t\t\tvar f = error.a;\n\t\t\t\t\tvar err = error.b;\n\t\t\t\t\tvar isSimple = function () {\n\t\t\t\t\t\tvar _v1 = $elm$core$String$uncons(f);\n\t\t\t\t\t\tif (_v1.$ === 1) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar _v2 = _v1.a;\n\t\t\t\t\t\t\tvar _char = _v2.a;\n\t\t\t\t\t\t\tvar rest = _v2.b;\n\t\t\t\t\t\t\treturn $elm$core$Char$isAlpha(_char) && A2($elm$core$String$all, $elm$core$Char$isAlphaNum, rest);\n\t\t\t\t\t\t}\n\t\t\t\t\t}();\n\t\t\t\t\tvar fieldName = isSimple ? ('.' + f) : ('[\\'' + (f + '\\']'));\n\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t$temp$context = A2($elm$core$List$cons, fieldName, context);\n\t\t\t\t\terror = $temp$error;\n\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\tcase 1:\n\t\t\t\t\tvar i = error.a;\n\t\t\t\t\tvar err = error.b;\n\t\t\t\t\tvar indexName = '[' + ($elm$core$String$fromInt(i) + ']');\n\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t$temp$context = A2($elm$core$List$cons, indexName, context);\n\t\t\t\t\terror = $temp$error;\n\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\tcase 2:\n\t\t\t\t\tvar errors = error.a;\n\t\t\t\t\tif (!errors.b) {\n\t\t\t\t\t\treturn 'Ran into a Json.Decode.oneOf with no possibilities' + function () {\n\t\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\t\treturn '!';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn ' at json' + A2(\n\t\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t$elm$core$List$reverse(context));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!errors.b.b) {\n\t\t\t\t\t\t\tvar err = errors.a;\n\t\t\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t\t\t$temp$context = context;\n\t\t\t\t\t\t\terror = $temp$error;\n\t\t\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar starter = function () {\n\t\t\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\t\t\treturn 'Json.Decode.oneOf';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn 'The Json.Decode.oneOf at json' + A2(\n\t\t\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t\t$elm$core$List$reverse(context));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}();\n\t\t\t\t\t\t\tvar introduction = starter + (' failed in the following ' + ($elm$core$String$fromInt(\n\t\t\t\t\t\t\t\t$elm$core$List$length(errors)) + ' ways:'));\n\t\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t'\\n\\n',\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t\t\t\t\tintroduction,\n\t\t\t\t\t\t\t\t\tA2($elm$core$List$indexedMap, $elm$json$Json$Decode$errorOneOf, errors)));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tvar msg = error.a;\n\t\t\t\t\tvar json = error.b;\n\t\t\t\t\tvar introduction = function () {\n\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\treturn 'Problem with the given value:\\n\\n';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn 'Problem with the value at json' + (A2(\n\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t$elm$core$List$reverse(context)) + ':\\n\\n ');\n\t\t\t\t\t\t}\n\t\t\t\t\t}();\n\t\t\t\t\treturn introduction + ($elm$json$Json$Decode$indent(\n\t\t\t\t\t\tA2($elm$json$Json$Encode$encode, 4, json)) + ('\\n\\n' + msg));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Array$branchFactor = 32;\nvar $elm$core$Array$Array_elm_builtin = F4(\n\tfunction (a, b, c, d) {\n\t\treturn {$: 0, a: a, b: b, c: c, d: d};\n\t});\nvar $elm$core$Elm$JsArray$empty = _JsArray_empty;\nvar $elm$core$Basics$ceiling = _Basics_ceiling;\nvar $elm$core$Basics$fdiv = _Basics_fdiv;\nvar $elm$core$Basics$logBase = F2(\n\tfunction (base, number) {\n\t\treturn _Basics_log(number) / _Basics_log(base);\n\t});\nvar $elm$core$Basics$toFloat = _Basics_toFloat;\nvar $elm$core$Array$shiftStep = $elm$core$Basics$ceiling(\n\tA2($elm$core$Basics$logBase, 2, $elm$core$Array$branchFactor));\nvar $elm$core$Array$empty = A4($elm$core$Array$Array_elm_builtin, 0, $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, $elm$core$Elm$JsArray$empty);\nvar $elm$core$Elm$JsArray$initialize = _JsArray_initialize;\nvar $elm$core$Array$Leaf = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$core$Basics$apL = F2(\n\tfunction (f, x) {\n\t\treturn f(x);\n\t});\nvar $elm$core$Basics$apR = F2(\n\tfunction (x, f) {\n\t\treturn f(x);\n\t});\nvar $elm$core$Basics$eq = _Utils_equal;\nvar $elm$core$Basics$floor = _Basics_floor;\nvar $elm$core$Elm$JsArray$length = _JsArray_length;\nvar $elm$core$Basics$gt = _Utils_gt;\nvar $elm$core$Basics$max = F2(\n\tfunction (x, y) {\n\t\treturn (_Utils_cmp(x, y) > 0) ? x : y;\n\t});\nvar $elm$core$Basics$mul = _Basics_mul;\nvar $elm$core$Array$SubTree = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$core$Elm$JsArray$initializeFromList = _JsArray_initializeFromList;\nvar $elm$core$Array$compressNodes = F2(\n\tfunction (nodes, acc) {\n\t\tcompressNodes:\n\t\twhile (true) {\n\t\t\tvar _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodes);\n\t\t\tvar node = _v0.a;\n\t\t\tvar remainingNodes = _v0.b;\n\t\t\tvar newAcc = A2(\n\t\t\t\t$elm$core$List$cons,\n\t\t\t\t$elm$core$Array$SubTree(node),\n\t\t\t\tacc);\n\t\t\tif (!remainingNodes.b) {\n\t\t\t\treturn $elm$core$List$reverse(newAcc);\n\t\t\t} else {\n\t\t\t\tvar $temp$nodes = remainingNodes,\n\t\t\t\t\t$temp$acc = newAcc;\n\t\t\t\tnodes = $temp$nodes;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tcontinue compressNodes;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Tuple$first = function (_v0) {\n\tvar x = _v0.a;\n\treturn x;\n};\nvar $elm$core$Array$treeFromBuilder = F2(\n\tfunction (nodeList, nodeListSize) {\n\t\ttreeFromBuilder:\n\t\twhile (true) {\n\t\t\tvar newNodeSize = $elm$core$Basics$ceiling(nodeListSize / $elm$core$Array$branchFactor);\n\t\t\tif (newNodeSize === 1) {\n\t\t\t\treturn A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodeList).a;\n\t\t\t} else {\n\t\t\t\tvar $temp$nodeList = A2($elm$core$Array$compressNodes, nodeList, _List_Nil),\n\t\t\t\t\t$temp$nodeListSize = newNodeSize;\n\t\t\t\tnodeList = $temp$nodeList;\n\t\t\t\tnodeListSize = $temp$nodeListSize;\n\t\t\t\tcontinue treeFromBuilder;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Array$builderToArray = F2(\n\tfunction (reverseNodeList, builder) {\n\t\tif (!builder.g) {\n\t\t\treturn A4(\n\t\t\t\t$elm$core$Array$Array_elm_builtin,\n\t\t\t\t$elm$core$Elm$JsArray$length(builder.h),\n\t\t\t\t$elm$core$Array$shiftStep,\n\t\t\t\t$elm$core$Elm$JsArray$empty,\n\t\t\t\tbuilder.h);\n\t\t} else {\n\t\t\tvar treeLen = builder.g * $elm$core$Array$branchFactor;\n\t\t\tvar depth = $elm$core$Basics$floor(\n\t\t\t\tA2($elm$core$Basics$logBase, $elm$core$Array$branchFactor, treeLen - 1));\n\t\t\tvar correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.i) : builder.i;\n\t\t\tvar tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.g);\n\t\t\treturn A4(\n\t\t\t\t$elm$core$Array$Array_elm_builtin,\n\t\t\t\t$elm$core$Elm$JsArray$length(builder.h) + treeLen,\n\t\t\t\tA2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep),\n\t\t\t\ttree,\n\t\t\t\tbuilder.h);\n\t\t}\n\t});\nvar $elm$core$Basics$idiv = _Basics_idiv;\nvar $elm$core$Basics$lt = _Utils_lt;\nvar $elm$core$Array$initializeHelp = F5(\n\tfunction (fn, fromIndex, len, nodeList, tail) {\n\t\tinitializeHelp:\n\t\twhile (true) {\n\t\t\tif (fromIndex < 0) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Array$builderToArray,\n\t\t\t\t\tfalse,\n\t\t\t\t\t{i: nodeList, g: (len / $elm$core$Array$branchFactor) | 0, h: tail});\n\t\t\t} else {\n\t\t\t\tvar leaf = $elm$core$Array$Leaf(\n\t\t\t\t\tA3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn));\n\t\t\t\tvar $temp$fn = fn,\n\t\t\t\t\t$temp$fromIndex = fromIndex - $elm$core$Array$branchFactor,\n\t\t\t\t\t$temp$len = len,\n\t\t\t\t\t$temp$nodeList = A2($elm$core$List$cons, leaf, nodeList),\n\t\t\t\t\t$temp$tail = tail;\n\t\t\t\tfn = $temp$fn;\n\t\t\t\tfromIndex = $temp$fromIndex;\n\t\t\t\tlen = $temp$len;\n\t\t\t\tnodeList = $temp$nodeList;\n\t\t\t\ttail = $temp$tail;\n\t\t\t\tcontinue initializeHelp;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Basics$remainderBy = _Basics_remainderBy;\nvar $elm$core$Array$initialize = F2(\n\tfunction (len, fn) {\n\t\tif (len <= 0) {\n\t\t\treturn $elm$core$Array$empty;\n\t\t} else {\n\t\t\tvar tailLen = len % $elm$core$Array$branchFactor;\n\t\t\tvar tail = A3($elm$core$Elm$JsArray$initialize, tailLen, len - tailLen, fn);\n\t\t\tvar initialFromIndex = (len - tailLen) - $elm$core$Array$branchFactor;\n\t\t\treturn A5($elm$core$Array$initializeHelp, fn, initialFromIndex, len, _List_Nil, tail);\n\t\t}\n\t});\nvar $elm$core$Basics$True = 0;\nvar $elm$core$Result$isOk = function (result) {\n\tif (!result.$) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$json$Json$Decode$map = _Json_map1;\nvar $elm$json$Json$Decode$map2 = _Json_map2;\nvar $elm$json$Json$Decode$succeed = _Json_succeed;\nvar $elm$virtual_dom$VirtualDom$toHandlerInt = function (handler) {\n\tswitch (handler.$) {\n\t\tcase 0:\n\t\t\treturn 0;\n\t\tcase 1:\n\t\t\treturn 1;\n\t\tcase 2:\n\t\t\treturn 2;\n\t\tdefault:\n\t\t\treturn 3;\n\t}\n};\nvar $elm$browser$Browser$External = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$browser$Browser$Internal = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$core$Basics$identity = function (x) {\n\treturn x;\n};\nvar $elm$browser$Browser$Dom$NotFound = $elm$core$Basics$identity;\nvar $elm$url$Url$Http = 0;\nvar $elm$url$Url$Https = 1;\nvar $elm$url$Url$Url = F6(\n\tfunction (protocol, host, port_, path, query, fragment) {\n\t\treturn {dw: fragment, e6: host, dX: path, dZ: port_, d2: protocol, cS: query};\n\t});\nvar $elm$core$String$contains = _String_contains;\nvar $elm$core$String$length = _String_length;\nvar $elm$core$String$slice = _String_slice;\nvar $elm$core$String$dropLeft = F2(\n\tfunction (n, string) {\n\t\treturn (n < 1) ? string : A3(\n\t\t\t$elm$core$String$slice,\n\t\t\tn,\n\t\t\t$elm$core$String$length(string),\n\t\t\tstring);\n\t});\nvar $elm$core$String$indexes = _String_indexes;\nvar $elm$core$String$isEmpty = function (string) {\n\treturn string === '';\n};\nvar $elm$core$String$left = F2(\n\tfunction (n, string) {\n\t\treturn (n < 1) ? '' : A3($elm$core$String$slice, 0, n, string);\n\t});\nvar $elm$core$String$toInt = _String_toInt;\nvar $elm$url$Url$chompBeforePath = F5(\n\tfunction (protocol, path, params, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str) || A2($elm$core$String$contains, '@', str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, ':', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t\tA6($elm$url$Url$Url, protocol, str, $elm$core$Maybe$Nothing, path, params, frag));\n\t\t\t} else {\n\t\t\t\tif (!_v0.b.b) {\n\t\t\t\t\tvar i = _v0.a;\n\t\t\t\t\tvar _v1 = $elm$core$String$toInt(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str));\n\t\t\t\t\tif (_v1.$ === 1) {\n\t\t\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar port_ = _v1;\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t\t\t\tA6(\n\t\t\t\t\t\t\t\t$elm$url$Url$Url,\n\t\t\t\t\t\t\t\tprotocol,\n\t\t\t\t\t\t\t\tA2($elm$core$String$left, i, str),\n\t\t\t\t\t\t\t\tport_,\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tparams,\n\t\t\t\t\t\t\t\tfrag));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompBeforeQuery = F4(\n\tfunction (protocol, params, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '/', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A5($elm$url$Url$chompBeforePath, protocol, '/', params, frag, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$url$Url$chompBeforePath,\n\t\t\t\t\tprotocol,\n\t\t\t\t\tA2($elm$core$String$dropLeft, i, str),\n\t\t\t\t\tparams,\n\t\t\t\t\tfrag,\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompBeforeFragment = F3(\n\tfunction (protocol, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '?', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A4($elm$url$Url$chompBeforeQuery, protocol, $elm$core$Maybe$Nothing, frag, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A4(\n\t\t\t\t\t$elm$url$Url$chompBeforeQuery,\n\t\t\t\t\tprotocol,\n\t\t\t\t\t$elm$core$Maybe$Just(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str)),\n\t\t\t\t\tfrag,\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompAfterProtocol = F2(\n\tfunction (protocol, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '#', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A3($elm$url$Url$chompBeforeFragment, protocol, $elm$core$Maybe$Nothing, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$url$Url$chompBeforeFragment,\n\t\t\t\t\tprotocol,\n\t\t\t\t\t$elm$core$Maybe$Just(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str)),\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$String$startsWith = _String_startsWith;\nvar $elm$url$Url$fromString = function (str) {\n\treturn A2($elm$core$String$startsWith, 'http://', str) ? A2(\n\t\t$elm$url$Url$chompAfterProtocol,\n\t\t0,\n\t\tA2($elm$core$String$dropLeft, 7, str)) : (A2($elm$core$String$startsWith, 'https://', str) ? A2(\n\t\t$elm$url$Url$chompAfterProtocol,\n\t\t1,\n\t\tA2($elm$core$String$dropLeft, 8, str)) : $elm$core$Maybe$Nothing);\n};\nvar $elm$core$Basics$never = function (_v0) {\n\tnever:\n\twhile (true) {\n\t\tvar nvr = _v0;\n\t\tvar $temp$_v0 = nvr;\n\t\t_v0 = $temp$_v0;\n\t\tcontinue never;\n\t}\n};\nvar $elm$core$Task$Perform = $elm$core$Basics$identity;\nvar $elm$core$Task$succeed = _Scheduler_succeed;\nvar $elm$core$Task$init = $elm$core$Task$succeed(0);\nvar $elm$core$List$foldrHelper = F4(\n\tfunction (fn, acc, ctr, ls) {\n\t\tif (!ls.b) {\n\t\t\treturn acc;\n\t\t} else {\n\t\t\tvar a = ls.a;\n\t\t\tvar r1 = ls.b;\n\t\t\tif (!r1.b) {\n\t\t\t\treturn A2(fn, a, acc);\n\t\t\t} else {\n\t\t\t\tvar b = r1.a;\n\t\t\t\tvar r2 = r1.b;\n\t\t\t\tif (!r2.b) {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\tfn,\n\t\t\t\t\t\ta,\n\t\t\t\t\t\tA2(fn, b, acc));\n\t\t\t\t} else {\n\t\t\t\t\tvar c = r2.a;\n\t\t\t\t\tvar r3 = r2.b;\n\t\t\t\t\tif (!r3.b) {\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\ta,\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\tb,\n\t\t\t\t\t\t\t\tA2(fn, c, acc)));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar d = r3.a;\n\t\t\t\t\t\tvar r4 = r3.b;\n\t\t\t\t\t\tvar res = (ctr > 500) ? A3(\n\t\t\t\t\t\t\t$elm$core$List$foldl,\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\tacc,\n\t\t\t\t\t\t\t$elm$core$List$reverse(r4)) : A4($elm$core$List$foldrHelper, fn, acc, ctr + 1, r4);\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\ta,\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\tb,\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\t\tc,\n\t\t\t\t\t\t\t\t\tA2(fn, d, res))));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$foldr = F3(\n\tfunction (fn, acc, ls) {\n\t\treturn A4($elm$core$List$foldrHelper, fn, acc, 0, ls);\n\t});\nvar $elm$core$List$map = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\tF2(\n\t\t\t\tfunction (x, acc) {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t\tf(x),\n\t\t\t\t\t\tacc);\n\t\t\t\t}),\n\t\t\t_List_Nil,\n\t\t\txs);\n\t});\nvar $elm$core$Task$andThen = _Scheduler_andThen;\nvar $elm$core$Task$map = F2(\n\tfunction (func, taskA) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (a) {\n\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\tfunc(a));\n\t\t\t},\n\t\t\ttaskA);\n\t});\nvar $elm$core$Task$map2 = F3(\n\tfunction (func, taskA, taskB) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (a) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\tfunction (b) {\n\t\t\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\t\t\tA2(func, a, b));\n\t\t\t\t\t},\n\t\t\t\t\ttaskB);\n\t\t\t},\n\t\t\ttaskA);\n\t});\nvar $elm$core$Task$sequence = function (tasks) {\n\treturn A3(\n\t\t$elm$core$List$foldr,\n\t\t$elm$core$Task$map2($elm$core$List$cons),\n\t\t$elm$core$Task$succeed(_List_Nil),\n\t\ttasks);\n};\nvar $elm$core$Platform$sendToApp = _Platform_sendToApp;\nvar $elm$core$Task$spawnCmd = F2(\n\tfunction (router, _v0) {\n\t\tvar task = _v0;\n\t\treturn _Scheduler_spawn(\n\t\t\tA2(\n\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t$elm$core$Platform$sendToApp(router),\n\t\t\t\ttask));\n\t});\nvar $elm$core$Task$onEffects = F3(\n\tfunction (router, commands, state) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$map,\n\t\t\tfunction (_v0) {\n\t\t\t\treturn 0;\n\t\t\t},\n\t\t\t$elm$core$Task$sequence(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t$elm$core$Task$spawnCmd(router),\n\t\t\t\t\tcommands)));\n\t});\nvar $elm$core$Task$onSelfMsg = F3(\n\tfunction (_v0, _v1, _v2) {\n\t\treturn $elm$core$Task$succeed(0);\n\t});\nvar $elm$core$Task$cmdMap = F2(\n\tfunction (tagger, _v0) {\n\t\tvar task = _v0;\n\t\treturn A2($elm$core$Task$map, tagger, task);\n\t});\n_Platform_effectManagers['Task'] = _Platform_createManager($elm$core$Task$init, $elm$core$Task$onEffects, $elm$core$Task$onSelfMsg, $elm$core$Task$cmdMap);\nvar $elm$core$Task$command = _Platform_leaf('Task');\nvar $elm$core$Task$perform = F2(\n\tfunction (toMessage, task) {\n\t\treturn $elm$core$Task$command(\n\t\t\tA2($elm$core$Task$map, toMessage, task));\n\t});\nvar $elm$browser$Browser$application = _Browser_application;\nvar $elm$core$Basics$composeR = F3(\n\tfunction (f, g, x) {\n\t\treturn g(\n\t\t\tf(x));\n\t});\nvar $author$project$Main$Model = F2(\n\tfunction (shared, page) {\n\t\treturn {C: page, x: shared};\n\t});\nvar $author$project$Main$Pages = function (a) {\n\treturn {$: 3, a: a};\n};\nvar $author$project$Main$Shared = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$core$Platform$Cmd$batch = _Platform_batch;\nvar $author$project$Spa$Generated$Route$NotFound = {$: 2};\nvar $elm$url$Url$Parser$State = F5(\n\tfunction (visited, unvisited, params, frag, value) {\n\t\treturn {S: frag, fB: params, N: unvisited, ez: value, W: visited};\n\t});\nvar $elm$url$Url$Parser$getFirstMatch = function (states) {\n\tgetFirstMatch:\n\twhile (true) {\n\t\tif (!states.b) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar state = states.a;\n\t\t\tvar rest = states.b;\n\t\t\tvar _v1 = state.N;\n\t\t\tif (!_v1.b) {\n\t\t\t\treturn $elm$core$Maybe$Just(state.ez);\n\t\t\t} else {\n\t\t\t\tif ((_v1.a === '') && (!_v1.b.b)) {\n\t\t\t\t\treturn $elm$core$Maybe$Just(state.ez);\n\t\t\t\t} else {\n\t\t\t\t\tvar $temp$states = rest;\n\t\t\t\t\tstates = $temp$states;\n\t\t\t\t\tcontinue getFirstMatch;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\nvar $elm$url$Url$Parser$removeFinalEmpty = function (segments) {\n\tif (!segments.b) {\n\t\treturn _List_Nil;\n\t} else {\n\t\tif ((segments.a === '') && (!segments.b.b)) {\n\t\t\treturn _List_Nil;\n\t\t} else {\n\t\t\tvar segment = segments.a;\n\t\t\tvar rest = segments.b;\n\t\t\treturn A2(\n\t\t\t\t$elm$core$List$cons,\n\t\t\t\tsegment,\n\t\t\t\t$elm$url$Url$Parser$removeFinalEmpty(rest));\n\t\t}\n\t}\n};\nvar $elm$url$Url$Parser$preparePath = function (path) {\n\tvar _v0 = A2($elm$core$String$split, '/', path);\n\tif (_v0.b && (_v0.a === '')) {\n\t\tvar segments = _v0.b;\n\t\treturn $elm$url$Url$Parser$removeFinalEmpty(segments);\n\t} else {\n\t\tvar segments = _v0;\n\t\treturn $elm$url$Url$Parser$removeFinalEmpty(segments);\n\t}\n};\nvar $elm$url$Url$Parser$addToParametersHelp = F2(\n\tfunction (value, maybeList) {\n\t\tif (maybeList.$ === 1) {\n\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[value]));\n\t\t} else {\n\t\t\tvar list = maybeList.a;\n\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\tA2($elm$core$List$cons, value, list));\n\t\t}\n\t});\nvar $elm$url$Url$percentDecode = _Url_percentDecode;\nvar $elm$core$Basics$compare = _Utils_compare;\nvar $elm$core$Dict$get = F2(\n\tfunction (targetKey, dict) {\n\t\tget:\n\t\twhile (true) {\n\t\t\tif (dict.$ === -2) {\n\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t} else {\n\t\t\t\tvar key = dict.b;\n\t\t\t\tvar value = dict.c;\n\t\t\t\tvar left = dict.d;\n\t\t\t\tvar right = dict.e;\n\t\t\t\tvar _v1 = A2($elm$core$Basics$compare, targetKey, key);\n\t\t\t\tswitch (_v1) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tvar $temp$targetKey = targetKey,\n\t\t\t\t\t\t\t$temp$dict = left;\n\t\t\t\t\t\ttargetKey = $temp$targetKey;\n\t\t\t\t\t\tdict = $temp$dict;\n\t\t\t\t\t\tcontinue get;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(value);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar $temp$targetKey = targetKey,\n\t\t\t\t\t\t\t$temp$dict = right;\n\t\t\t\t\t\ttargetKey = $temp$targetKey;\n\t\t\t\t\t\tdict = $temp$dict;\n\t\t\t\t\t\tcontinue get;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$Black = 1;\nvar $elm$core$Dict$RBNode_elm_builtin = F5(\n\tfunction (a, b, c, d, e) {\n\t\treturn {$: -1, a: a, b: b, c: c, d: d, e: e};\n\t});\nvar $elm$core$Dict$RBEmpty_elm_builtin = {$: -2};\nvar $elm$core$Dict$Red = 0;\nvar $elm$core$Dict$balance = F5(\n\tfunction (color, key, value, left, right) {\n\t\tif ((right.$ === -1) && (!right.a)) {\n\t\t\tvar _v1 = right.a;\n\t\t\tvar rK = right.b;\n\t\t\tvar rV = right.c;\n\t\t\tvar rLeft = right.d;\n\t\t\tvar rRight = right.e;\n\t\t\tif ((left.$ === -1) && (!left.a)) {\n\t\t\t\tvar _v3 = left.a;\n\t\t\t\tvar lK = left.b;\n\t\t\t\tvar lV = left.c;\n\t\t\t\tvar lLeft = left.d;\n\t\t\t\tvar lRight = left.e;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t0,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\tcolor,\n\t\t\t\t\trK,\n\t\t\t\t\trV,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, left, rLeft),\n\t\t\t\t\trRight);\n\t\t\t}\n\t\t} else {\n\t\t\tif ((((left.$ === -1) && (!left.a)) && (left.d.$ === -1)) && (!left.d.a)) {\n\t\t\t\tvar _v5 = left.a;\n\t\t\t\tvar lK = left.b;\n\t\t\t\tvar lV = left.c;\n\t\t\t\tvar _v6 = left.d;\n\t\t\t\tvar _v7 = _v6.a;\n\t\t\t\tvar llK = _v6.b;\n\t\t\t\tvar llV = _v6.c;\n\t\t\t\tvar llLeft = _v6.d;\n\t\t\t\tvar llRight = _v6.e;\n\t\t\t\tvar lRight = left.e;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t0,\n\t\t\t\t\tlK,\n\t\t\t\t\tlV,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, llK, llV, llLeft, llRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, key, value, lRight, right));\n\t\t\t} else {\n\t\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right);\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$insertHelp = F3(\n\tfunction (key, value, dict) {\n\t\tif (dict.$ === -2) {\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin);\n\t\t} else {\n\t\t\tvar nColor = dict.a;\n\t\t\tvar nKey = dict.b;\n\t\t\tvar nValue = dict.c;\n\t\t\tvar nLeft = dict.d;\n\t\t\tvar nRight = dict.e;\n\t\t\tvar _v1 = A2($elm$core$Basics$compare, key, nKey);\n\t\t\tswitch (_v1) {\n\t\t\t\tcase 0:\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\tA3($elm$core$Dict$insertHelp, key, value, nLeft),\n\t\t\t\t\t\tnRight);\n\t\t\t\tcase 1:\n\t\t\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight);\n\t\t\t\tdefault:\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\tnLeft,\n\t\t\t\t\t\tA3($elm$core$Dict$insertHelp, key, value, nRight));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$insert = F3(\n\tfunction (key, value, dict) {\n\t\tvar _v0 = A3($elm$core$Dict$insertHelp, key, value, dict);\n\t\tif ((_v0.$ === -1) && (!_v0.a)) {\n\t\t\tvar _v1 = _v0.a;\n\t\t\tvar k = _v0.b;\n\t\t\tvar v = _v0.c;\n\t\t\tvar l = _v0.d;\n\t\t\tvar r = _v0.e;\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, 1, k, v, l, r);\n\t\t} else {\n\t\t\tvar x = _v0;\n\t\t\treturn x;\n\t\t}\n\t});\nvar $elm$core$Dict$getMin = function (dict) {\n\tgetMin:\n\twhile (true) {\n\t\tif ((dict.$ === -1) && (dict.d.$ === -1)) {\n\t\t\tvar left = dict.d;\n\t\t\tvar $temp$dict = left;\n\t\t\tdict = $temp$dict;\n\t\t\tcontinue getMin;\n\t\t} else {\n\t\t\treturn dict;\n\t\t}\n\t}\n};\nvar $elm$core$Dict$moveRedLeft = function (dict) {\n\tif (((dict.$ === -1) && (dict.d.$ === -1)) && (dict.e.$ === -1)) {\n\t\tif ((dict.e.d.$ === -1) && (!dict.e.d.a)) {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v1 = dict.d;\n\t\t\tvar lClr = _v1.a;\n\t\t\tvar lK = _v1.b;\n\t\t\tvar lV = _v1.c;\n\t\t\tvar lLeft = _v1.d;\n\t\t\tvar lRight = _v1.e;\n\t\t\tvar _v2 = dict.e;\n\t\t\tvar rClr = _v2.a;\n\t\t\tvar rK = _v2.b;\n\t\t\tvar rV = _v2.c;\n\t\t\tvar rLeft = _v2.d;\n\t\t\tvar _v3 = rLeft.a;\n\t\t\tvar rlK = rLeft.b;\n\t\t\tvar rlV = rLeft.c;\n\t\t\tvar rlL = rLeft.d;\n\t\t\tvar rlR = rLeft.e;\n\t\t\tvar rRight = _v2.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t0,\n\t\t\t\trlK,\n\t\t\t\trlV,\n\t\t\t\tA5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\trlL),\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, rK, rV, rlR, rRight));\n\t\t} else {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v4 = dict.d;\n\t\t\tvar lClr = _v4.a;\n\t\t\tvar lK = _v4.b;\n\t\t\tvar lV = _v4.c;\n\t\t\tvar lLeft = _v4.d;\n\t\t\tvar lRight = _v4.e;\n\t\t\tvar _v5 = dict.e;\n\t\t\tvar rClr = _v5.a;\n\t\t\tvar rK = _v5.b;\n\t\t\tvar rV = _v5.c;\n\t\t\tvar rLeft = _v5.d;\n\t\t\tvar rRight = _v5.e;\n\t\t\tif (clr === 1) {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn dict;\n\t}\n};\nvar $elm$core$Dict$moveRedRight = function (dict) {\n\tif (((dict.$ === -1) && (dict.d.$ === -1)) && (dict.e.$ === -1)) {\n\t\tif ((dict.d.d.$ === -1) && (!dict.d.d.a)) {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v1 = dict.d;\n\t\t\tvar lClr = _v1.a;\n\t\t\tvar lK = _v1.b;\n\t\t\tvar lV = _v1.c;\n\t\t\tvar _v2 = _v1.d;\n\t\t\tvar _v3 = _v2.a;\n\t\t\tvar llK = _v2.b;\n\t\t\tvar llV = _v2.c;\n\t\t\tvar llLeft = _v2.d;\n\t\t\tvar llRight = _v2.e;\n\t\t\tvar lRight = _v1.e;\n\t\t\tvar _v4 = dict.e;\n\t\t\tvar rClr = _v4.a;\n\t\t\tvar rK = _v4.b;\n\t\t\tvar rV = _v4.c;\n\t\t\tvar rLeft = _v4.d;\n\t\t\tvar rRight = _v4.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t0,\n\t\t\t\tlK,\n\t\t\t\tlV,\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, llK, llV, llLeft, llRight),\n\t\t\t\tA5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tlRight,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight)));\n\t\t} else {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v5 = dict.d;\n\t\t\tvar lClr = _v5.a;\n\t\t\tvar lK = _v5.b;\n\t\t\tvar lV = _v5.c;\n\t\t\tvar lLeft = _v5.d;\n\t\t\tvar lRight = _v5.e;\n\t\t\tvar _v6 = dict.e;\n\t\t\tvar rClr = _v6.a;\n\t\t\tvar rK = _v6.b;\n\t\t\tvar rV = _v6.c;\n\t\t\tvar rLeft = _v6.d;\n\t\t\tvar rRight = _v6.e;\n\t\t\tif (clr === 1) {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn dict;\n\t}\n};\nvar $elm$core$Dict$removeHelpPrepEQGT = F7(\n\tfunction (targetKey, dict, color, key, value, left, right) {\n\t\tif ((left.$ === -1) && (!left.a)) {\n\t\t\tvar _v1 = left.a;\n\t\t\tvar lK = left.b;\n\t\t\tvar lV = left.c;\n\t\t\tvar lLeft = left.d;\n\t\t\tvar lRight = left.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\tcolor,\n\t\t\t\tlK,\n\t\t\t\tlV,\n\t\t\t\tlLeft,\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, lRight, right));\n\t\t} else {\n\t\t\t_v2$2:\n\t\t\twhile (true) {\n\t\t\t\tif ((right.$ === -1) && (right.a === 1)) {\n\t\t\t\t\tif (right.d.$ === -1) {\n\t\t\t\t\t\tif (right.d.a === 1) {\n\t\t\t\t\t\t\tvar _v3 = right.a;\n\t\t\t\t\t\t\tvar _v4 = right.d;\n\t\t\t\t\t\t\tvar _v5 = _v4.a;\n\t\t\t\t\t\t\treturn $elm$core$Dict$moveRedRight(dict);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbreak _v2$2;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _v6 = right.a;\n\t\t\t\t\t\tvar _v7 = right.d;\n\t\t\t\t\t\treturn $elm$core$Dict$moveRedRight(dict);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tbreak _v2$2;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dict;\n\t\t}\n\t});\nvar $elm$core$Dict$removeMin = function (dict) {\n\tif ((dict.$ === -1) && (dict.d.$ === -1)) {\n\t\tvar color = dict.a;\n\t\tvar key = dict.b;\n\t\tvar value = dict.c;\n\t\tvar left = dict.d;\n\t\tvar lColor = left.a;\n\t\tvar lLeft = left.d;\n\t\tvar right = dict.e;\n\t\tif (lColor === 1) {\n\t\t\tif ((lLeft.$ === -1) && (!lLeft.a)) {\n\t\t\t\tvar _v3 = lLeft.a;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\tcolor,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\t$elm$core$Dict$removeMin(left),\n\t\t\t\t\tright);\n\t\t\t} else {\n\t\t\t\tvar _v4 = $elm$core$Dict$moveRedLeft(dict);\n\t\t\t\tif (_v4.$ === -1) {\n\t\t\t\t\tvar nColor = _v4.a;\n\t\t\t\t\tvar nKey = _v4.b;\n\t\t\t\t\tvar nValue = _v4.c;\n\t\t\t\t\tvar nLeft = _v4.d;\n\t\t\t\t\tvar nRight = _v4.e;\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\t$elm$core$Dict$removeMin(nLeft),\n\t\t\t\t\t\tnRight);\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\tcolor,\n\t\t\t\tkey,\n\t\t\t\tvalue,\n\t\t\t\t$elm$core$Dict$removeMin(left),\n\t\t\t\tright);\n\t\t}\n\t} else {\n\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t}\n};\nvar $elm$core$Dict$removeHelp = F2(\n\tfunction (targetKey, dict) {\n\t\tif (dict.$ === -2) {\n\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t} else {\n\t\t\tvar color = dict.a;\n\t\t\tvar key = dict.b;\n\t\t\tvar value = dict.c;\n\t\t\tvar left = dict.d;\n\t\t\tvar right = dict.e;\n\t\t\tif (_Utils_cmp(targetKey, key) < 0) {\n\t\t\t\tif ((left.$ === -1) && (left.a === 1)) {\n\t\t\t\t\tvar _v4 = left.a;\n\t\t\t\t\tvar lLeft = left.d;\n\t\t\t\t\tif ((lLeft.$ === -1) && (!lLeft.a)) {\n\t\t\t\t\t\tvar _v6 = lLeft.a;\n\t\t\t\t\t\treturn A5(\n\t\t\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t\t\tcolor,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, left),\n\t\t\t\t\t\t\tright);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _v7 = $elm$core$Dict$moveRedLeft(dict);\n\t\t\t\t\t\tif (_v7.$ === -1) {\n\t\t\t\t\t\t\tvar nColor = _v7.a;\n\t\t\t\t\t\t\tvar nKey = _v7.b;\n\t\t\t\t\t\t\tvar nValue = _v7.c;\n\t\t\t\t\t\t\tvar nLeft = _v7.d;\n\t\t\t\t\t\t\tvar nRight = _v7.e;\n\t\t\t\t\t\t\treturn A5(\n\t\t\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\t\t\tnColor,\n\t\t\t\t\t\t\t\tnKey,\n\t\t\t\t\t\t\t\tnValue,\n\t\t\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, nLeft),\n\t\t\t\t\t\t\t\tnRight);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, left),\n\t\t\t\t\t\tright);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Dict$removeHelpEQGT,\n\t\t\t\t\ttargetKey,\n\t\t\t\t\tA7($elm$core$Dict$removeHelpPrepEQGT, targetKey, dict, color, key, value, left, right));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$removeHelpEQGT = F2(\n\tfunction (targetKey, dict) {\n\t\tif (dict.$ === -1) {\n\t\t\tvar color = dict.a;\n\t\t\tvar key = dict.b;\n\t\t\tvar value = dict.c;\n\t\t\tvar left = dict.d;\n\t\t\tvar right = dict.e;\n\t\t\tif (_Utils_eq(targetKey, key)) {\n\t\t\t\tvar _v1 = $elm$core$Dict$getMin(right);\n\t\t\t\tif (_v1.$ === -1) {\n\t\t\t\t\tvar minKey = _v1.b;\n\t\t\t\t\tvar minValue = _v1.c;\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tminKey,\n\t\t\t\t\t\tminValue,\n\t\t\t\t\t\tleft,\n\t\t\t\t\t\t$elm$core$Dict$removeMin(right));\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\tcolor,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tleft,\n\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, right));\n\t\t\t}\n\t\t} else {\n\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t}\n\t});\nvar $elm$core$Dict$remove = F2(\n\tfunction (key, dict) {\n\t\tvar _v0 = A2($elm$core$Dict$removeHelp, key, dict);\n\t\tif ((_v0.$ === -1) && (!_v0.a)) {\n\t\t\tvar _v1 = _v0.a;\n\t\t\tvar k = _v0.b;\n\t\t\tvar v = _v0.c;\n\t\t\tvar l = _v0.d;\n\t\t\tvar r = _v0.e;\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, 1, k, v, l, r);\n\t\t} else {\n\t\t\tvar x = _v0;\n\t\t\treturn x;\n\t\t}\n\t});\nvar $elm$core$Dict$update = F3(\n\tfunction (targetKey, alter, dictionary) {\n\t\tvar _v0 = alter(\n\t\t\tA2($elm$core$Dict$get, targetKey, dictionary));\n\t\tif (!_v0.$) {\n\t\t\tvar value = _v0.a;\n\t\t\treturn A3($elm$core$Dict$insert, targetKey, value, dictionary);\n\t\t} else {\n\t\t\treturn A2($elm$core$Dict$remove, targetKey, dictionary);\n\t\t}\n\t});\nvar $elm$url$Url$Parser$addParam = F2(\n\tfunction (segment, dict) {\n\t\tvar _v0 = A2($elm$core$String$split, '=', segment);\n\t\tif ((_v0.b && _v0.b.b) && (!_v0.b.b.b)) {\n\t\t\tvar rawKey = _v0.a;\n\t\t\tvar _v1 = _v0.b;\n\t\t\tvar rawValue = _v1.a;\n\t\t\tvar _v2 = $elm$url$Url$percentDecode(rawKey);\n\t\t\tif (_v2.$ === 1) {\n\t\t\t\treturn dict;\n\t\t\t} else {\n\t\t\t\tvar key = _v2.a;\n\t\t\t\tvar _v3 = $elm$url$Url$percentDecode(rawValue);\n\t\t\t\tif (_v3.$ === 1) {\n\t\t\t\t\treturn dict;\n\t\t\t\t} else {\n\t\t\t\t\tvar value = _v3.a;\n\t\t\t\t\treturn A3(\n\t\t\t\t\t\t$elm$core$Dict$update,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\t$elm$url$Url$Parser$addToParametersHelp(value),\n\t\t\t\t\t\tdict);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn dict;\n\t\t}\n\t});\nvar $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin;\nvar $elm$url$Url$Parser$prepareQuery = function (maybeQuery) {\n\tif (maybeQuery.$ === 1) {\n\t\treturn $elm$core$Dict$empty;\n\t} else {\n\t\tvar qry = maybeQuery.a;\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\t$elm$url$Url$Parser$addParam,\n\t\t\t$elm$core$Dict$empty,\n\t\t\tA2($elm$core$String$split, '&', qry));\n\t}\n};\nvar $elm$url$Url$Parser$parse = F2(\n\tfunction (_v0, url) {\n\t\tvar parser = _v0;\n\t\treturn $elm$url$Url$Parser$getFirstMatch(\n\t\t\tparser(\n\t\t\t\tA5(\n\t\t\t\t\t$elm$url$Url$Parser$State,\n\t\t\t\t\t_List_Nil,\n\t\t\t\t\t$elm$url$Url$Parser$preparePath(url.dX),\n\t\t\t\t\t$elm$url$Url$Parser$prepareQuery(url.cS),\n\t\t\t\t\turl.dw,\n\t\t\t\t\t$elm$core$Basics$identity)));\n\t});\nvar $author$project$Spa$Generated$Route$Login = {$: 1};\nvar $author$project$Spa$Generated$Route$Profile__Username_String = function (a) {\n\treturn {$: 6, a: a};\n};\nvar $author$project$Spa$Generated$Route$Projects = {$: 3};\nvar $author$project$Spa$Generated$Route$Register = {$: 4};\nvar $author$project$Spa$Generated$Route$Settings = {$: 5};\nvar $author$project$Spa$Generated$Route$Top = {$: 0};\nvar $elm$url$Url$Parser$Parser = $elm$core$Basics$identity;\nvar $elm$url$Url$Parser$mapState = F2(\n\tfunction (func, _v0) {\n\t\tvar visited = _v0.W;\n\t\tvar unvisited = _v0.N;\n\t\tvar params = _v0.fB;\n\t\tvar frag = _v0.S;\n\t\tvar value = _v0.ez;\n\t\treturn A5(\n\t\t\t$elm$url$Url$Parser$State,\n\t\t\tvisited,\n\t\t\tunvisited,\n\t\t\tparams,\n\t\t\tfrag,\n\t\t\tfunc(value));\n\t});\nvar $elm$url$Url$Parser$map = F2(\n\tfunction (subValue, _v0) {\n\t\tvar parseArg = _v0;\n\t\treturn function (_v1) {\n\t\t\tvar visited = _v1.W;\n\t\t\tvar unvisited = _v1.N;\n\t\t\tvar params = _v1.fB;\n\t\t\tvar frag = _v1.S;\n\t\t\tvar value = _v1.ez;\n\t\t\treturn A2(\n\t\t\t\t$elm$core$List$map,\n\t\t\t\t$elm$url$Url$Parser$mapState(value),\n\t\t\t\tparseArg(\n\t\t\t\t\tA5($elm$url$Url$Parser$State, visited, unvisited, params, frag, subValue)));\n\t\t};\n\t});\nvar $elm$core$List$append = F2(\n\tfunction (xs, ys) {\n\t\tif (!ys.b) {\n\t\t\treturn xs;\n\t\t} else {\n\t\t\treturn A3($elm$core$List$foldr, $elm$core$List$cons, ys, xs);\n\t\t}\n\t});\nvar $elm$core$List$concat = function (lists) {\n\treturn A3($elm$core$List$foldr, $elm$core$List$append, _List_Nil, lists);\n};\nvar $elm$core$List$concatMap = F2(\n\tfunction (f, list) {\n\t\treturn $elm$core$List$concat(\n\t\t\tA2($elm$core$List$map, f, list));\n\t});\nvar $elm$url$Url$Parser$oneOf = function (parsers) {\n\treturn function (state) {\n\t\treturn A2(\n\t\t\t$elm$core$List$concatMap,\n\t\t\tfunction (_v0) {\n\t\t\t\tvar parser = _v0;\n\t\t\t\treturn parser(state);\n\t\t\t},\n\t\t\tparsers);\n\t};\n};\nvar $elm$url$Url$Parser$s = function (str) {\n\treturn function (_v0) {\n\t\tvar visited = _v0.W;\n\t\tvar unvisited = _v0.N;\n\t\tvar params = _v0.fB;\n\t\tvar frag = _v0.S;\n\t\tvar value = _v0.ez;\n\t\tif (!unvisited.b) {\n\t\t\treturn _List_Nil;\n\t\t} else {\n\t\t\tvar next = unvisited.a;\n\t\t\tvar rest = unvisited.b;\n\t\t\treturn _Utils_eq(next, str) ? _List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA5(\n\t\t\t\t\t$elm$url$Url$Parser$State,\n\t\t\t\t\tA2($elm$core$List$cons, next, visited),\n\t\t\t\t\trest,\n\t\t\t\t\tparams,\n\t\t\t\t\tfrag,\n\t\t\t\t\tvalue)\n\t\t\t\t]) : _List_Nil;\n\t\t}\n\t};\n};\nvar $elm$url$Url$Parser$slash = F2(\n\tfunction (_v0, _v1) {\n\t\tvar parseBefore = _v0;\n\t\tvar parseAfter = _v1;\n\t\treturn function (state) {\n\t\t\treturn A2(\n\t\t\t\t$elm$core$List$concatMap,\n\t\t\t\tparseAfter,\n\t\t\t\tparseBefore(state));\n\t\t};\n\t});\nvar $elm$url$Url$Parser$custom = F2(\n\tfunction (tipe, stringToSomething) {\n\t\treturn function (_v0) {\n\t\t\tvar visited = _v0.W;\n\t\t\tvar unvisited = _v0.N;\n\t\t\tvar params = _v0.fB;\n\t\t\tvar frag = _v0.S;\n\t\t\tvar value = _v0.ez;\n\t\t\tif (!unvisited.b) {\n\t\t\t\treturn _List_Nil;\n\t\t\t} else {\n\t\t\t\tvar next = unvisited.a;\n\t\t\t\tvar rest = unvisited.b;\n\t\t\t\tvar _v2 = stringToSomething(next);\n\t\t\t\tif (!_v2.$) {\n\t\t\t\t\tvar nextValue = _v2.a;\n\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA5(\n\t\t\t\t\t\t\t$elm$url$Url$Parser$State,\n\t\t\t\t\t\t\tA2($elm$core$List$cons, next, visited),\n\t\t\t\t\t\t\trest,\n\t\t\t\t\t\t\tparams,\n\t\t\t\t\t\t\tfrag,\n\t\t\t\t\t\t\tvalue(nextValue))\n\t\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\treturn _List_Nil;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\nvar $elm$url$Url$Parser$string = A2($elm$url$Url$Parser$custom, 'STRING', $elm$core$Maybe$Just);\nvar $elm$url$Url$Parser$top = function (state) {\n\treturn _List_fromArray(\n\t\t[state]);\n};\nvar $author$project$Spa$Generated$Route$routes = $elm$url$Url$Parser$oneOf(\n\t_List_fromArray(\n\t\t[\n\t\t\tA2($elm$url$Url$Parser$map, $author$project$Spa$Generated$Route$Top, $elm$url$Url$Parser$top),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Login,\n\t\t\t$elm$url$Url$Parser$s('login')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$NotFound,\n\t\t\t$elm$url$Url$Parser$s('not-found')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Projects,\n\t\t\t$elm$url$Url$Parser$s('projects')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Register,\n\t\t\t$elm$url$Url$Parser$s('register')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Settings,\n\t\t\t$elm$url$Url$Parser$s('settings')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Profile__Username_String,\n\t\t\tA2(\n\t\t\t\t$elm$url$Url$Parser$map,\n\t\t\t\tfunction (username) {\n\t\t\t\t\treturn {cf: username};\n\t\t\t\t},\n\t\t\t\tA2(\n\t\t\t\t\t$elm$url$Url$Parser$slash,\n\t\t\t\t\t$elm$url$Url$Parser$s('profile'),\n\t\t\t\t\t$elm$url$Url$Parser$string)))\n\t\t]));\nvar $author$project$Spa$Generated$Route$fromUrl = $elm$url$Url$Parser$parse($author$project$Spa$Generated$Route$routes);\nvar $elm$core$Maybe$withDefault = F2(\n\tfunction (_default, maybe) {\n\t\tif (!maybe.$) {\n\t\t\tvar value = maybe.a;\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn _default;\n\t\t}\n\t});\nvar $author$project$Utils$Route$fromUrl = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Route$fromUrl,\n\t$elm$core$Maybe$withDefault($author$project$Spa$Generated$Route$NotFound));\nvar $author$project$Shared$Model = F3(\n\tfunction (url, key, user) {\n\t\treturn {fd: key, f_: url, O: user};\n\t});\nvar $elm$json$Json$Decode$decodeValue = _Json_run;\nvar $author$project$Api$User$User = F3(\n\tfunction (email, token, username) {\n\t\treturn {av: email, c9: token, cf: username};\n\t});\nvar $author$project$Api$Token$Token = $elm$core$Basics$identity;\nvar $elm$json$Json$Decode$string = _Json_decodeString;\nvar $author$project$Api$Token$decoder = A2($elm$json$Json$Decode$map, $elm$core$Basics$identity, $elm$json$Json$Decode$string);\nvar $elm$json$Json$Decode$field = _Json_decodeField;\nvar $elm$json$Json$Decode$map3 = _Json_map3;\nvar $author$project$Api$User$decoder = A4(\n\t$elm$json$Json$Decode$map3,\n\t$author$project$Api$User$User,\n\tA2($elm$json$Json$Decode$field, 'email', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'token', $author$project$Api$Token$decoder),\n\tA2($elm$json$Json$Decode$field, 'username', $elm$json$Json$Decode$string));\nvar $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil);\nvar $elm$core$Result$toMaybe = function (result) {\n\tif (!result.$) {\n\t\tvar v = result.a;\n\t\treturn $elm$core$Maybe$Just(v);\n\t} else {\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n};\nvar $author$project$Shared$init = F3(\n\tfunction (json, url, key) {\n\t\tvar user = $elm$core$Result$toMaybe(\n\t\t\tA2(\n\t\t\t\t$elm$json$Json$Decode$decodeValue,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder),\n\t\t\t\tjson));\n\t\treturn _Utils_Tuple2(\n\t\t\tA3($author$project$Shared$Model, url, key, user),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Spa$Generated$Pages$Login__Model = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Login__Msg = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $author$project$Spa$Generated$Pages$NotFound__Model = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Spa$Generated$Pages$NotFound__Msg = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Profile__Username_String__Model = function (a) {\n\treturn {$: 6, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Profile__Username_String__Msg = function (a) {\n\treturn {$: 6, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Projects__Model = function (a) {\n\treturn {$: 3, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Projects__Msg = function (a) {\n\treturn {$: 3, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Register__Model = function (a) {\n\treturn {$: 4, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Register__Msg = function (a) {\n\treturn {$: 4, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Settings__Model = function (a) {\n\treturn {$: 5, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Settings__Msg = function (a) {\n\treturn {$: 5, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Top__Model = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Top__Msg = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Spa$Page$application = function (page) {\n\treturn page;\n};\nvar $author$project$Pages$Login$Model = F5(\n\tfunction (user, key, url, email, password) {\n\t\treturn {av: email, fd: key, cN: password, f_: url, O: user};\n\t});\nvar $author$project$Api$Data$NotAsked = {$: 0};\nvar $author$project$Api$Data$Success = function (a) {\n\treturn {$: 3, a: a};\n};\nvar $author$project$Pages$Login$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar key = _v0.fd;\n\t\treturn _Utils_Tuple2(\n\t\t\tA5(\n\t\t\t\t$author$project$Pages$Login$Model,\n\t\t\t\tfunction () {\n\t\t\t\t\tvar _v1 = shared.O;\n\t\t\t\t\tif (!_v1.$) {\n\t\t\t\t\t\tvar user = _v1.a;\n\t\t\t\t\t\treturn $author$project$Api$Data$Success(user);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn $author$project$Api$Data$NotAsked;\n\t\t\t\t\t}\n\t\t\t\t}(),\n\t\t\t\tkey,\n\t\t\t\tshared.f_,\n\t\t\t\t'',\n\t\t\t\t''),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Login$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Api$Data$toMaybe = function (data) {\n\tif (data.$ === 3) {\n\t\tvar value = data.a;\n\t\treturn $elm$core$Maybe$Just(value);\n\t} else {\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n};\nvar $author$project$Pages$Login$save = F2(\n\tfunction (model, shared) {\n\t\treturn _Utils_update(\n\t\t\tshared,\n\t\t\t{\n\t\t\t\tO: function () {\n\t\t\t\t\tvar _v0 = $author$project$Api$Data$toMaybe(model.O);\n\t\t\t\t\tif (!_v0.$) {\n\t\t\t\t\t\tvar user = _v0.a;\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(user);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn shared.O;\n\t\t\t\t\t}\n\t\t\t\t}()\n\t\t\t});\n\t});\nvar $elm$core$Platform$Sub$batch = _Platform_batch;\nvar $elm$core$Platform$Sub$none = $elm$core$Platform$Sub$batch(_List_Nil);\nvar $author$project$Pages$Login$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Login$GotUser = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$json$Json$Decode$decodeString = _Json_runOnString;\nvar $elm$json$Json$Decode$keyValuePairs = _Json_decodeKeyValuePairs;\nvar $elm$json$Json$Decode$list = _Json_decodeList;\nvar $author$project$Api$Data$errorDecoder = A2(\n\t$elm$json$Json$Decode$map,\n\t$elm$core$List$concatMap(\n\t\tfunction (_v0) {\n\t\t\tvar key = _v0.a;\n\t\t\tvar values = _v0.b;\n\t\t\treturn A2(\n\t\t\t\t$elm$core$List$map,\n\t\t\t\tfunction (value) {\n\t\t\t\t\treturn key + (' ' + value);\n\t\t\t\t},\n\t\t\t\tvalues);\n\t\t}),\n\tA2(\n\t\t$elm$json$Json$Decode$field,\n\t\t'errors',\n\t\t$elm$json$Json$Decode$keyValuePairs(\n\t\t\t$elm$json$Json$Decode$list($elm$json$Json$Decode$string))));\nvar $elm$http$Http$BadStatus_ = F2(\n\tfunction (a, b) {\n\t\treturn {$: 3, a: a, b: b};\n\t});\nvar $elm$http$Http$BadUrl_ = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$http$Http$GoodStatus_ = F2(\n\tfunction (a, b) {\n\t\treturn {$: 4, a: a, b: b};\n\t});\nvar $elm$http$Http$NetworkError_ = {$: 2};\nvar $elm$http$Http$Receiving = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$http$Http$Sending = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$http$Http$Timeout_ = {$: 1};\nvar $elm$core$Maybe$isJust = function (maybe) {\n\tif (!maybe.$) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$core$Platform$sendToSelf = _Platform_sendToSelf;\nvar $elm$http$Http$expectStringResponse = F2(\n\tfunction (toMsg, toResult) {\n\t\treturn A3(\n\t\t\t_Http_expect,\n\t\t\t'',\n\t\t\t$elm$core$Basics$identity,\n\t\t\tA2($elm$core$Basics$composeR, toResult, toMsg));\n\t});\nvar $author$project$Api$Data$Failure = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Api$Data$fromResult = function (result) {\n\tif (!result.$) {\n\t\tvar value = result.a;\n\t\treturn $author$project$Api$Data$Success(value);\n\t} else {\n\t\tvar reasons = result.a;\n\t\treturn $author$project$Api$Data$Failure(reasons);\n\t}\n};\nvar $author$project$Api$Data$expectJson = F2(\n\tfunction (toMsg, decoder) {\n\t\treturn A2(\n\t\t\t$elm$http$Http$expectStringResponse,\n\t\t\tA2($elm$core$Basics$composeR, $author$project$Api$Data$fromResult, toMsg),\n\t\t\tfunction (response) {\n\t\t\t\tswitch (response.$) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t['Bad URL']));\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t['Request timeout']));\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t['Connection issues']));\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tvar body = response.b;\n\t\t\t\t\t\tvar _v1 = A2($elm$json$Json$Decode$decodeString, $author$project$Api$Data$errorDecoder, body);\n\t\t\t\t\t\tif (!_v1.$) {\n\t\t\t\t\t\t\tvar errors = _v1.a;\n\t\t\t\t\t\t\treturn $elm$core$Result$Err(errors);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t['Bad status code']));\n\t\t\t\t\t\t}\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar body = response.b;\n\t\t\t\t\t\tvar _v2 = A2($elm$json$Json$Decode$decodeString, decoder, body);\n\t\t\t\t\t\tif (!_v2.$) {\n\t\t\t\t\t\t\tvar value = _v2.a;\n\t\t\t\t\t\t\treturn $elm$core$Result$Ok(value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar err = _v2.a;\n\t\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$json$Json$Decode$errorToString(err)\n\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t});\nvar $author$project$Api$User$loginUrl = function (url) {\n\treturn A2($elm$core$String$contains, 'localhost', url) ? 'http://localhost:8000/auth' : '/auth';\n};\nvar $elm$http$Http$multipartBody = function (parts) {\n\treturn A2(\n\t\t_Http_pair,\n\t\t'',\n\t\t_Http_toFormData(parts));\n};\nvar $elm$http$Http$Request = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$http$Http$State = F2(\n\tfunction (reqs, subs) {\n\t\treturn {d5: reqs, em: subs};\n\t});\nvar $elm$http$Http$init = $elm$core$Task$succeed(\n\tA2($elm$http$Http$State, $elm$core$Dict$empty, _List_Nil));\nvar $elm$core$Process$kill = _Scheduler_kill;\nvar $elm$core$Process$spawn = _Scheduler_spawn;\nvar $elm$http$Http$updateReqs = F3(\n\tfunction (router, cmds, reqs) {\n\t\tupdateReqs:\n\t\twhile (true) {\n\t\t\tif (!cmds.b) {\n\t\t\t\treturn $elm$core$Task$succeed(reqs);\n\t\t\t} else {\n\t\t\t\tvar cmd = cmds.a;\n\t\t\t\tvar otherCmds = cmds.b;\n\t\t\t\tif (!cmd.$) {\n\t\t\t\t\tvar tracker = cmd.a;\n\t\t\t\t\tvar _v2 = A2($elm$core$Dict$get, tracker, reqs);\n\t\t\t\t\tif (_v2.$ === 1) {\n\t\t\t\t\t\tvar $temp$router = router,\n\t\t\t\t\t\t\t$temp$cmds = otherCmds,\n\t\t\t\t\t\t\t$temp$reqs = reqs;\n\t\t\t\t\t\trouter = $temp$router;\n\t\t\t\t\t\tcmds = $temp$cmds;\n\t\t\t\t\t\treqs = $temp$reqs;\n\t\t\t\t\t\tcontinue updateReqs;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar pid = _v2.a;\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\t\t\tfunction (_v3) {\n\t\t\t\t\t\t\t\treturn A3(\n\t\t\t\t\t\t\t\t\t$elm$http$Http$updateReqs,\n\t\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t\totherCmds,\n\t\t\t\t\t\t\t\t\tA2($elm$core$Dict$remove, tracker, reqs));\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t$elm$core$Process$kill(pid));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar req = cmd.a;\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\t\tfunction (pid) {\n\t\t\t\t\t\t\tvar _v4 = req.fY;\n\t\t\t\t\t\t\tif (_v4.$ === 1) {\n\t\t\t\t\t\t\t\treturn A3($elm$http$Http$updateReqs, router, otherCmds, reqs);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvar tracker = _v4.a;\n\t\t\t\t\t\t\t\treturn A3(\n\t\t\t\t\t\t\t\t\t$elm$http$Http$updateReqs,\n\t\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t\totherCmds,\n\t\t\t\t\t\t\t\t\tA3($elm$core$Dict$insert, tracker, pid, reqs));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t$elm$core$Process$spawn(\n\t\t\t\t\t\t\tA3(\n\t\t\t\t\t\t\t\t_Http_toTask,\n\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t$elm$core$Platform$sendToApp(router),\n\t\t\t\t\t\t\t\treq)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$http$Http$onEffects = F4(\n\tfunction (router, cmds, subs, state) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (reqs) {\n\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\tA2($elm$http$Http$State, reqs, subs));\n\t\t\t},\n\t\t\tA3($elm$http$Http$updateReqs, router, cmds, state.d5));\n\t});\nvar $elm$core$List$maybeCons = F3(\n\tfunction (f, mx, xs) {\n\t\tvar _v0 = f(mx);\n\t\tif (!_v0.$) {\n\t\t\tvar x = _v0.a;\n\t\t\treturn A2($elm$core$List$cons, x, xs);\n\t\t} else {\n\t\t\treturn xs;\n\t\t}\n\t});\nvar $elm$core$List$filterMap = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\t$elm$core$List$maybeCons(f),\n\t\t\t_List_Nil,\n\t\t\txs);\n\t});\nvar $elm$http$Http$maybeSend = F4(\n\tfunction (router, desiredTracker, progress, _v0) {\n\t\tvar actualTracker = _v0.a;\n\t\tvar toMsg = _v0.b;\n\t\treturn _Utils_eq(desiredTracker, actualTracker) ? $elm$core$Maybe$Just(\n\t\t\tA2(\n\t\t\t\t$elm$core$Platform$sendToApp,\n\t\t\t\trouter,\n\t\t\t\ttoMsg(progress))) : $elm$core$Maybe$Nothing;\n\t});\nvar $elm$http$Http$onSelfMsg = F3(\n\tfunction (router, _v0, state) {\n\t\tvar tracker = _v0.a;\n\t\tvar progress = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (_v1) {\n\t\t\t\treturn $elm$core$Task$succeed(state);\n\t\t\t},\n\t\t\t$elm$core$Task$sequence(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$filterMap,\n\t\t\t\t\tA3($elm$http$Http$maybeSend, router, tracker, progress),\n\t\t\t\t\tstate.em)));\n\t});\nvar $elm$http$Http$Cancel = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$http$Http$cmdMap = F2(\n\tfunction (func, cmd) {\n\t\tif (!cmd.$) {\n\t\t\tvar tracker = cmd.a;\n\t\t\treturn $elm$http$Http$Cancel(tracker);\n\t\t} else {\n\t\t\tvar r = cmd.a;\n\t\t\treturn $elm$http$Http$Request(\n\t\t\t\t{\n\t\t\t\t\teH: r.eH,\n\t\t\t\t\teJ: r.eJ,\n\t\t\t\t\teX: A2(_Http_mapExpect, func, r.eX),\n\t\t\t\t\te3: r.e3,\n\t\t\t\t\tfh: r.fh,\n\t\t\t\t\tfQ: r.fQ,\n\t\t\t\t\tfY: r.fY,\n\t\t\t\t\tf_: r.f_\n\t\t\t\t});\n\t\t}\n\t});\nvar $elm$http$Http$MySub = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $elm$http$Http$subMap = F2(\n\tfunction (func, _v0) {\n\t\tvar tracker = _v0.a;\n\t\tvar toMsg = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$http$Http$MySub,\n\t\t\ttracker,\n\t\t\tA2($elm$core$Basics$composeR, toMsg, func));\n\t});\n_Platform_effectManagers['Http'] = _Platform_createManager($elm$http$Http$init, $elm$http$Http$onEffects, $elm$http$Http$onSelfMsg, $elm$http$Http$cmdMap, $elm$http$Http$subMap);\nvar $elm$http$Http$command = _Platform_leaf('Http');\nvar $elm$http$Http$subscription = _Platform_leaf('Http');\nvar $elm$http$Http$request = function (r) {\n\treturn $elm$http$Http$command(\n\t\t$elm$http$Http$Request(\n\t\t\t{eH: false, eJ: r.eJ, eX: r.eX, e3: r.e3, fh: r.fh, fQ: r.fQ, fY: r.fY, f_: r.f_}));\n};\nvar $elm$http$Http$post = function (r) {\n\treturn $elm$http$Http$request(\n\t\t{eJ: r.eJ, eX: r.eX, e3: _List_Nil, fh: 'POST', fQ: $elm$core$Maybe$Nothing, fY: $elm$core$Maybe$Nothing, f_: r.f_});\n};\nvar $elm$http$Http$stringPart = _Http_pair;\nvar $author$project$Api$User$authentication = function (options) {\n\tvar body = $elm$http$Http$multipartBody(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2($elm$http$Http$stringPart, 'username', options.O.av),\n\t\t\t\tA2($elm$http$Http$stringPart, 'password', options.O.cN)\n\t\t\t]));\n\treturn $elm$http$Http$post(\n\t\t{\n\t\t\teJ: body,\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fv,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder)),\n\t\t\tf_: $author$project$Api$User$loginUrl(options.eL)\n\t\t});\n};\nvar $elm$browser$Browser$Navigation$pushUrl = _Browser_pushUrl;\nvar $elm$core$String$append = _String_append;\nvar $author$project$Spa$Generated$Route$toString = function (route) {\n\tvar segments = function () {\n\t\tswitch (route.$) {\n\t\t\tcase 0:\n\t\t\t\treturn _List_Nil;\n\t\t\tcase 1:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['login']);\n\t\t\tcase 2:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['not-found']);\n\t\t\tcase 3:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['projects']);\n\t\t\tcase 4:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['register']);\n\t\t\tcase 5:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['settings']);\n\t\t\tdefault:\n\t\t\t\tvar username = route.a.cf;\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['profile', username]);\n\t\t}\n\t}();\n\treturn A2(\n\t\t$elm$core$String$append,\n\t\t'/',\n\t\tA2($elm$core$String$join, '/', segments));\n};\nvar $author$project$Utils$Route$navigate = F2(\n\tfunction (key, route) {\n\t\treturn A2(\n\t\t\t$elm$browser$Browser$Navigation$pushUrl,\n\t\t\tkey,\n\t\t\t$author$project$Spa$Generated$Route$toString(route));\n\t});\nvar $elm$json$Json$Encode$string = _Json_wrap;\nvar $author$project$Api$Token$encode = function (_v0) {\n\tvar token = _v0;\n\treturn $elm$json$Json$Encode$string(token);\n};\nvar $elm$json$Json$Encode$object = function (pairs) {\n\treturn _Json_wrap(\n\t\tA3(\n\t\t\t$elm$core$List$foldl,\n\t\t\tF2(\n\t\t\t\tfunction (_v0, obj) {\n\t\t\t\t\tvar k = _v0.a;\n\t\t\t\t\tvar v = _v0.b;\n\t\t\t\t\treturn A3(_Json_addField, k, v, obj);\n\t\t\t\t}),\n\t\t\t_Json_emptyObject(0),\n\t\t\tpairs));\n};\nvar $author$project$Api$User$encode = function (user) {\n\treturn $elm$json$Json$Encode$object(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'username',\n\t\t\t\t$elm$json$Json$Encode$string(user.cf)),\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'email',\n\t\t\t\t$elm$json$Json$Encode$string(user.av)),\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'token',\n\t\t\t\t$author$project$Api$Token$encode(user.c9))\n\t\t\t]));\n};\nvar $author$project$Ports$outgoing = _Platform_outgoingPort(\n\t'outgoing',\n\tfunction ($) {\n\t\treturn $elm$json$Json$Encode$object(\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t'data',\n\t\t\t\t\t$elm$core$Basics$identity($.cs)),\n\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t'tag',\n\t\t\t\t\t$elm$json$Json$Encode$string($.c7))\n\t\t\t\t]));\n\t});\nvar $author$project$Ports$saveUser = function (user) {\n\treturn $author$project$Ports$outgoing(\n\t\t{\n\t\t\tcs: $author$project$Api$User$encode(user),\n\t\t\tc7: 'saveUser'\n\t\t});\n};\nvar $author$project$Pages$Login$update = F2(\n\tfunction (msg, model) {\n\t\tswitch (msg.$) {\n\t\t\tcase 0:\n\t\t\t\tif (!msg.a) {\n\t\t\t\t\tvar _v1 = msg.a;\n\t\t\t\t\tvar email = msg.b;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t{av: email}),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t} else {\n\t\t\t\t\tvar _v2 = msg.a;\n\t\t\t\t\tvar password = msg.b;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t{cN: password}),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t}\n\t\t\tcase 1:\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\tmodel,\n\t\t\t\t\t$author$project$Api$User$authentication(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\teL: model.f_.e6,\n\t\t\t\t\t\t\tfv: $author$project$Pages$Login$GotUser,\n\t\t\t\t\t\t\tO: {av: model.av, cN: model.cN}\n\t\t\t\t\t\t}));\n\t\t\tdefault:\n\t\t\t\tvar user = msg.a;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{O: user}),\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\tvar _v3 = $author$project$Api$Data$toMaybe(user);\n\t\t\t\t\t\tif (!_v3.$) {\n\t\t\t\t\t\t\tvar user_ = _v3.a;\n\t\t\t\t\t\t\treturn $elm$core$Platform$Cmd$batch(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$author$project$Ports$saveUser(user_),\n\t\t\t\t\t\t\t\t\t\tA2($author$project$Utils$Route$navigate, model.fd, $author$project$Spa$Generated$Route$Projects)\n\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Platform$Cmd$none;\n\t\t\t\t\t\t}\n\t\t\t\t\t}());\n\t\t}\n\t});\nvar $author$project$Pages$Login$AttemptedSignIn = {$: 1};\nvar $author$project$Pages$Login$Email = 0;\nvar $author$project$Pages$Login$Password = 1;\nvar $author$project$Pages$Login$Updated = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $elm$html$Html$a = _VirtualDom_node('a');\nvar $elm$html$Html$button = _VirtualDom_node('button');\nvar $elm$html$Html$Attributes$stringProperty = F2(\n\tfunction (key, string) {\n\t\treturn A2(\n\t\t\t_VirtualDom_property,\n\t\t\tkey,\n\t\t\t$elm$json$Json$Encode$string(string));\n\t});\nvar $elm$html$Html$Attributes$class = $elm$html$Html$Attributes$stringProperty('className');\nvar $elm$html$Html$div = _VirtualDom_node('div');\nvar $elm$html$Html$form = _VirtualDom_node('form');\nvar $elm$html$Html$h1 = _VirtualDom_node('h1');\nvar $elm$html$Html$Attributes$href = function (url) {\n\treturn A2(\n\t\t$elm$html$Html$Attributes$stringProperty,\n\t\t'href',\n\t\t_VirtualDom_noJavaScriptUri(url));\n};\nvar $elm$html$Html$Events$alwaysPreventDefault = function (msg) {\n\treturn _Utils_Tuple2(msg, true);\n};\nvar $elm$virtual_dom$VirtualDom$MayPreventDefault = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$virtual_dom$VirtualDom$on = _VirtualDom_on;\nvar $elm$html$Html$Events$preventDefaultOn = F2(\n\tfunction (event, decoder) {\n\t\treturn A2(\n\t\t\t$elm$virtual_dom$VirtualDom$on,\n\t\t\tevent,\n\t\t\t$elm$virtual_dom$VirtualDom$MayPreventDefault(decoder));\n\t});\nvar $elm$html$Html$Events$onSubmit = function (msg) {\n\treturn A2(\n\t\t$elm$html$Html$Events$preventDefaultOn,\n\t\t'submit',\n\t\tA2(\n\t\t\t$elm$json$Json$Decode$map,\n\t\t\t$elm$html$Html$Events$alwaysPreventDefault,\n\t\t\t$elm$json$Json$Decode$succeed(msg)));\n};\nvar $elm$html$Html$p = _VirtualDom_node('p');\nvar $elm$virtual_dom$VirtualDom$text = _VirtualDom_text;\nvar $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text;\nvar $elm$core$List$isEmpty = function (xs) {\n\tif (!xs.b) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$html$Html$li = _VirtualDom_node('li');\nvar $elm$html$Html$ul = _VirtualDom_node('ul');\nvar $author$project$Components$ErrorList$view = function (reasons) {\n\treturn $elm$core$List$isEmpty(reasons) ? $elm$html$Html$text('') : A2(\n\t\t$elm$html$Html$ul,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('error-messages')\n\t\t\t]),\n\t\tA2(\n\t\t\t$elm$core$List$map,\n\t\t\tfunction (message) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$html$Html$li,\n\t\t\t\t\t_List_Nil,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text(message)\n\t\t\t\t\t\t]));\n\t\t\t},\n\t\t\treasons));\n};\nvar $elm$html$Html$fieldset = _VirtualDom_node('fieldset');\nvar $elm$html$Html$input = _VirtualDom_node('input');\nvar $elm$html$Html$Events$alwaysStop = function (x) {\n\treturn _Utils_Tuple2(x, true);\n};\nvar $elm$virtual_dom$VirtualDom$MayStopPropagation = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$html$Html$Events$stopPropagationOn = F2(\n\tfunction (event, decoder) {\n\t\treturn A2(\n\t\t\t$elm$virtual_dom$VirtualDom$on,\n\t\t\tevent,\n\t\t\t$elm$virtual_dom$VirtualDom$MayStopPropagation(decoder));\n\t});\nvar $elm$json$Json$Decode$at = F2(\n\tfunction (fields, decoder) {\n\t\treturn A3($elm$core$List$foldr, $elm$json$Json$Decode$field, decoder, fields);\n\t});\nvar $elm$html$Html$Events$targetValue = A2(\n\t$elm$json$Json$Decode$at,\n\t_List_fromArray(\n\t\t['target', 'value']),\n\t$elm$json$Json$Decode$string);\nvar $elm$html$Html$Events$onInput = function (tagger) {\n\treturn A2(\n\t\t$elm$html$Html$Events$stopPropagationOn,\n\t\t'input',\n\t\tA2(\n\t\t\t$elm$json$Json$Decode$map,\n\t\t\t$elm$html$Html$Events$alwaysStop,\n\t\t\tA2($elm$json$Json$Decode$map, tagger, $elm$html$Html$Events$targetValue)));\n};\nvar $elm$html$Html$Attributes$placeholder = $elm$html$Html$Attributes$stringProperty('placeholder');\nvar $elm$html$Html$Attributes$type_ = $elm$html$Html$Attributes$stringProperty('type');\nvar $elm$html$Html$Attributes$value = $elm$html$Html$Attributes$stringProperty('value');\nvar $author$project$Components$UserForm$viewField = function (options) {\n\treturn A2(\n\t\t$elm$html$Html$fieldset,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('form-group')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$input,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-control form-control-lg'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder(options.fe),\n\t\t\t\t\t\t$elm$html$Html$Attributes$type_(options.ex),\n\t\t\t\t\t\t$elm$html$Html$Attributes$value(options.ez),\n\t\t\t\t\t\t$elm$html$Html$Events$onInput(options.dU)\n\t\t\t\t\t]),\n\t\t\t\t_List_Nil)\n\t\t\t]));\n};\nvar $author$project$Components$UserForm$view = function (options) {\n\treturn A2(\n\t\t$elm$html$Html$div,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('auth-page')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('row')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('col-md-6 offset-md-3 col-xs-12')\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$h1,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-xs-center')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(options.fe)\n\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$p,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-xs-center')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Spa$Generated$Route$toString(options.de.fI))\n\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(options.de.fe)\n\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t\t\tvar _v0 = options.O;\n\t\t\t\t\t\t\t\t\t\tif (_v0.$ === 2) {\n\t\t\t\t\t\t\t\t\t\t\tvar reasons = _v0.a;\n\t\t\t\t\t\t\t\t\t\t\treturn $author$project$Components$ErrorList$view(reasons);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\treturn $elm$html$Html$text('');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}(),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$form,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onSubmit(options.ft)\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t$elm$core$List$concat(\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$core$List$map, $author$project$Components$UserForm$viewField, options.e0),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-lg btn-primary pull-xs-right')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(options.fe)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t\t\t])))\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]));\n};\nvar $author$project$Pages$Login$view = function (model) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[\n\t\t\t\t$author$project$Components$UserForm$view(\n\t\t\t\t{\n\t\t\t\t\tde: {fe: 'Need an account?', fI: $author$project$Spa$Generated$Route$Register},\n\t\t\t\t\te0: _List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfe: 'Email',\n\t\t\t\t\t\t\tdU: $author$project$Pages$Login$Updated(0),\n\t\t\t\t\t\t\tex: 'text',\n\t\t\t\t\t\t\tez: model.av\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfe: 'Password',\n\t\t\t\t\t\t\tdU: $author$project$Pages$Login$Updated(1),\n\t\t\t\t\t\t\tex: 'password',\n\t\t\t\t\t\t\tez: model.cN\n\t\t\t\t\t\t}\n\t\t\t\t\t\t]),\n\t\t\t\t\tfe: 'Sign in',\n\t\t\t\t\tft: $author$project$Pages$Login$AttemptedSignIn,\n\t\t\t\t\tO: model.O\n\t\t\t\t})\n\t\t\t]),\n\t\tfR: 'Sign in'\n\t};\n};\nvar $author$project$Pages$Login$page = $author$project$Spa$Page$application(\n\t{fb: $author$project$Pages$Login$init, fg: $author$project$Pages$Login$load, fJ: $author$project$Pages$Login$save, fN: $author$project$Pages$Login$subscriptions, fZ: $author$project$Pages$Login$update, f0: $author$project$Pages$Login$view});\nvar $elm$core$Basics$always = F2(\n\tfunction (a, _v0) {\n\t\treturn a;\n\t});\nvar $author$project$Spa$Page$ignoreEffect = function (model) {\n\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n};\nvar $author$project$Spa$Page$static = function (page) {\n\treturn {\n\t\tfb: F2(\n\t\t\tfunction (_v0, url) {\n\t\t\t\treturn _Utils_Tuple2(url, $elm$core$Platform$Cmd$none);\n\t\t\t}),\n\t\tfg: $elm$core$Basics$always(\n\t\t\tA2($elm$core$Basics$composeR, $elm$core$Basics$identity, $author$project$Spa$Page$ignoreEffect)),\n\t\tfJ: $elm$core$Basics$always($elm$core$Basics$identity),\n\t\tfN: function (_v1) {\n\t\t\treturn $elm$core$Platform$Sub$none;\n\t\t},\n\t\tfZ: F2(\n\t\t\tfunction (_v2, model) {\n\t\t\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t\t\t}),\n\t\tf0: page.f0\n\t};\n};\nvar $elm$html$Html$h2 = _VirtualDom_node('h2');\nvar $elm$html$Html$h5 = _VirtualDom_node('h5');\nvar $author$project$Components$NotFound$view = A2(\n\t$elm$html$Html$div,\n\t_List_fromArray(\n\t\t[\n\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t]),\n\t_List_fromArray(\n\t\t[\n\t\t\tA2(\n\t\t\t$elm$html$Html$h2,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$text('Page not found.')\n\t\t\t\t])),\n\t\t\tA2(\n\t\t\t$elm$html$Html$h5,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$text('But here\\'s the '),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('/')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text('homepage')\n\t\t\t\t\t\t])),\n\t\t\t\t\t$elm$html$Html$text('!')\n\t\t\t\t]))\n\t\t]));\nvar $author$project$Pages$NotFound$view = function (_v0) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[$author$project$Components$NotFound$view]),\n\t\tfR: '404'\n\t};\n};\nvar $author$project$Pages$NotFound$page = $author$project$Spa$Page$static(\n\t{f0: $author$project$Pages$NotFound$view});\nvar $author$project$Pages$Profile$Username_String$GotProfile = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Api$Data$Loading = {$: 1};\nvar $author$project$Pages$Profile$Username_String$MyArticles = 0;\nvar $author$project$Api$Profile$Profile = F2(\n\tfunction (username, following) {\n\t\treturn {e1: following, cf: username};\n\t});\nvar $elm$json$Json$Decode$bool = _Json_decodeBool;\nvar $author$project$Api$Profile$decoder = A3(\n\t$elm$json$Json$Decode$map2,\n\t$author$project$Api$Profile$Profile,\n\tA2($elm$json$Json$Decode$field, 'username', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'following', $elm$json$Json$Decode$bool));\nvar $elm$http$Http$emptyBody = _Http_emptyBody;\nvar $elm$http$Http$Header = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $elm$http$Http$header = $elm$http$Http$Header;\nvar $author$project$Api$Token$request = F4(\n\tfunction (method, body, maybeToken, options) {\n\t\treturn $elm$http$Http$request(\n\t\t\t{\n\t\t\t\teJ: body,\n\t\t\t\teX: options.eX,\n\t\t\t\te3: function () {\n\t\t\t\t\tif (!maybeToken.$) {\n\t\t\t\t\t\tvar token = maybeToken.a;\n\t\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2($elm$http$Http$header, 'Authorization', 'Bearer ' + token)\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn _List_Nil;\n\t\t\t\t\t}\n\t\t\t\t}(),\n\t\t\t\tfh: method,\n\t\t\t\tfQ: $elm$core$Maybe$Just(1000 * 60),\n\t\t\t\tfY: $elm$core$Maybe$Nothing,\n\t\t\t\tf_: options.f_\n\t\t\t});\n\t});\nvar $author$project$Api$Token$get = A2($author$project$Api$Token$request, 'GET', $elm$http$Http$emptyBody);\nvar $author$project$Api$Profile$get = function (options) {\n\treturn A2(\n\t\t$author$project$Api$Token$get,\n\t\toptions.c9,\n\t\t{\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fv,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'profile', $author$project$Api$Profile$decoder)),\n\t\t\tf_: 'https://conduit.productionready.io/api/profiles/' + options.cf\n\t\t});\n};\nvar $elm$core$Maybe$map = F2(\n\tfunction (f, maybe) {\n\t\tif (!maybe.$) {\n\t\t\tvar value = maybe.a;\n\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\tf(value));\n\t\t} else {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t}\n\t});\nvar $author$project$Pages$Profile$Username_String$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar params = _v0.fB;\n\t\tvar token = A2(\n\t\t\t$elm$core$Maybe$map,\n\t\t\tfunction ($) {\n\t\t\t\treturn $.c9;\n\t\t\t},\n\t\t\tshared.O);\n\t\treturn _Utils_Tuple2(\n\t\t\t{dM: $author$project$Api$Data$Loading, C: 1, cR: $author$project$Api$Data$Loading, cW: 0, O: shared.O, cf: params.cf},\n\t\t\t$elm$core$Platform$Cmd$batch(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$author$project$Api$Profile$get(\n\t\t\t\t\t\t{fv: $author$project$Pages$Profile$Username_String$GotProfile, c9: token, cf: params.cf})\n\t\t\t\t\t])));\n\t});\nvar $author$project$Pages$Profile$Username_String$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Profile$Username_String$save = F2(\n\tfunction (_v0, shared) {\n\t\treturn shared;\n\t});\nvar $author$project$Pages$Profile$Username_String$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Profile$Username_String$update = F2(\n\tfunction (msg, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Profile$Username_String$Clicked = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Pages$Profile$Username_String$FavoritedArticles = 1;\nvar $elm$core$List$filter = F2(\n\tfunction (isGood, list) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\tF2(\n\t\t\t\tfunction (x, xs) {\n\t\t\t\t\treturn isGood(x) ? A2($elm$core$List$cons, x, xs) : xs;\n\t\t\t\t}),\n\t\t\t_List_Nil,\n\t\t\tlist);\n\t});\nvar $elm$core$Tuple$second = function (_v0) {\n\tvar y = _v0.b;\n\treturn y;\n};\nvar $elm$html$Html$Attributes$classList = function (classes) {\n\treturn $elm$html$Html$Attributes$class(\n\t\tA2(\n\t\t\t$elm$core$String$join,\n\t\t\t' ',\n\t\t\tA2(\n\t\t\t\t$elm$core$List$map,\n\t\t\t\t$elm$core$Tuple$first,\n\t\t\t\tA2($elm$core$List$filter, $elm$core$Tuple$second, classes))));\n};\nvar $elm$virtual_dom$VirtualDom$Normal = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$html$Html$Events$on = F2(\n\tfunction (event, decoder) {\n\t\treturn A2(\n\t\t\t$elm$virtual_dom$VirtualDom$on,\n\t\t\tevent,\n\t\t\t$elm$virtual_dom$VirtualDom$Normal(decoder));\n\t});\nvar $elm$html$Html$Events$onClick = function (msg) {\n\treturn A2(\n\t\t$elm$html$Html$Events$on,\n\t\t'click',\n\t\t$elm$json$Json$Decode$succeed(msg));\n};\nvar $author$project$Pages$Profile$Username_String$viewProfile = F2(\n\tfunction (profile, model) {\n\t\tvar viewTab = function (tab) {\n\t\t\treturn A2(\n\t\t\t\t$elm$html$Html$li,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-item')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-link'),\n\t\t\t\t\t\t\t\t$elm$html$Html$Events$onClick(\n\t\t\t\t\t\t\t\t$author$project$Pages$Profile$Username_String$Clicked(tab)),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$classList(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t\t'active',\n\t\t\t\t\t\t\t\t\t\t_Utils_eq(tab, model.cW))\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text(\n\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t\tif (!tab) {\n\t\t\t\t\t\t\t\t\t\treturn 'My Articles';\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\treturn 'Favorited Articles';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}())\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]));\n\t\t};\n\t\tvar viewTabRow = A2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('articles-toggle')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$ul,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav nav-pills outline-active')\n\t\t\t\t\t\t]),\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t\tviewTab,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[0, 1])))\n\t\t\t\t]));\n\t\tvar isViewingOwnProfile = _Utils_eq(\n\t\t\tA2(\n\t\t\t\t$elm$core$Maybe$map,\n\t\t\t\tfunction ($) {\n\t\t\t\t\treturn $.cf;\n\t\t\t\t},\n\t\t\t\tmodel.O),\n\t\t\t$elm$core$Maybe$Just(profile.cf));\n\t\treturn A2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('profile-page')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('row')\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t]))\n\t\t\t\t]));\n\t});\nvar $author$project$Pages$Profile$Username_String$view = function (model) {\n\treturn {\n\t\teJ: function () {\n\t\t\tvar _v0 = model.cR;\n\t\t\tswitch (_v0.$) {\n\t\t\t\tcase 3:\n\t\t\t\t\tvar profile = _v0.a;\n\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA2($author$project$Pages$Profile$Username_String$viewProfile, profile, model)\n\t\t\t\t\t\t]);\n\t\t\t\tcase 2:\n\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t[$author$project$Components$NotFound$view]);\n\t\t\t\tdefault:\n\t\t\t\t\treturn _List_Nil;\n\t\t\t}\n\t\t}(),\n\t\tfR: 'Profile'\n\t};\n};\nvar $author$project$Pages$Profile$Username_String$page = $author$project$Spa$Page$application(\n\t{fb: $author$project$Pages$Profile$Username_String$init, fg: $author$project$Pages$Profile$Username_String$load, fJ: $author$project$Pages$Profile$Username_String$save, fN: $author$project$Pages$Profile$Username_String$subscriptions, fZ: $author$project$Pages$Profile$Username_String$update, f0: $author$project$Pages$Profile$Username_String$view});\nvar $author$project$Pages$Projects$GotProjects = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Api$Project$Project = F5(\n\tfunction (name, id, description, state, gitrepository) {\n\t\treturn {eS: description, e2: gitrepository, e9: id, fj: name, ej: state};\n\t});\nvar $author$project$Api$Project$GitRepository = F2(\n\tfunction (url, version) {\n\t\treturn {f_: url, f$: version};\n\t});\nvar $author$project$Api$Project$gitRepositoryDecoder = A3(\n\t$elm$json$Json$Decode$map2,\n\t$author$project$Api$Project$GitRepository,\n\tA2($elm$json$Json$Decode$field, 'url', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'version', $elm$json$Json$Decode$string));\nvar $elm$json$Json$Decode$int = _Json_decodeInt;\nvar $elm$json$Json$Decode$map5 = _Json_map5;\nvar $author$project$Api$Project$ProjectState = F2(\n\tfunction (state, errormsg) {\n\t\treturn {eV: errormsg, ej: state};\n\t});\nvar $author$project$Api$Project$projectStateDecoder = A3(\n\t$elm$json$Json$Decode$map2,\n\t$author$project$Api$Project$ProjectState,\n\tA2($elm$json$Json$Decode$field, 'state', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'errormsg', $elm$json$Json$Decode$string));\nvar $author$project$Api$Project$projectDecoder = A6(\n\t$elm$json$Json$Decode$map5,\n\t$author$project$Api$Project$Project,\n\tA2($elm$json$Json$Decode$field, 'name', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'id', $elm$json$Json$Decode$int),\n\tA2($elm$json$Json$Decode$field, 'description', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'state', $author$project$Api$Project$projectStateDecoder),\n\tA2($elm$json$Json$Decode$field, 'gitrepository', $author$project$Api$Project$gitRepositoryDecoder));\nvar $author$project$Api$Project$list = function (options) {\n\treturn A2(\n\t\t$author$project$Api$Token$get,\n\t\toptions.c9,\n\t\t{\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fv,\n\t\t\t\t$elm$json$Json$Decode$list($author$project$Api$Project$projectDecoder)),\n\t\t\tf_: options.ey + '/api/v1/projects'\n\t\t});\n};\nvar $author$project$Pages$Projects$makeUrl = function (host) {\n\treturn A2($elm$core$String$contains, 'localhost', host) ? 'http://localhost:8000' : '';\n};\nvar $author$project$Pages$Projects$fetchProjects = F2(\n\tfunction (model, host) {\n\t\treturn $author$project$Api$Project$list(\n\t\t\t{\n\t\t\t\tfv: $author$project$Pages$Projects$GotProjects,\n\t\t\t\tc9: A2(\n\t\t\t\t\t$elm$core$Maybe$map,\n\t\t\t\t\tfunction ($) {\n\t\t\t\t\t\treturn $.c9;\n\t\t\t\t\t},\n\t\t\t\t\tmodel.O),\n\t\t\t\tey: $author$project$Pages$Projects$makeUrl(host)\n\t\t\t});\n\t});\nvar $author$project$Pages$Projects$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar model = {dM: $author$project$Api$Data$Loading, O: shared.O};\n\t\treturn _Utils_Tuple2(\n\t\t\tmodel,\n\t\t\t$elm$core$Platform$Cmd$batch(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2($author$project$Pages$Projects$fetchProjects, model, shared.f_.e6)\n\t\t\t\t\t])));\n\t});\nvar $author$project$Pages$Projects$load = F2(\n\tfunction (shared, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Projects$save = F2(\n\tfunction (model, shared) {\n\t\treturn shared;\n\t});\nvar $author$project$Pages$Projects$subscriptions = function (model) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Projects$update = F2(\n\tfunction (msg, model) {\n\t\tif (!msg.$) {\n\t\t\tvar listing = msg.a;\n\t\t\treturn _Utils_Tuple2(\n\t\t\t\t_Utils_update(\n\t\t\t\t\tmodel,\n\t\t\t\t\t{dM: listing}),\n\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t} else {\n\t\t\tvar project = msg.a;\n\t\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t\t}\n\t});\nvar $elm$core$String$concat = function (strings) {\n\treturn A2($elm$core$String$join, '', strings);\n};\nvar $elm$html$Html$span = _VirtualDom_node('span');\nvar $elm$html$Html$Attributes$target = $elm$html$Html$Attributes$stringProperty('target');\nvar $author$project$Components$ProjectList$viewErrorDiv = function (listing) {\n\treturn ($elm$core$String$length(listing.ej.eV) > 0) ? A2(\n\t\t$elm$html$Html$div,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('alert alert-warning')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$text(listing.ej.eV)\n\t\t\t])) : $elm$html$Html$text('');\n};\nvar $author$project$Components$ProjectList$viewProject = function (listing) {\n\treturn A2(\n\t\t$elm$html$Html$div,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('highlight col-md-10')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$h5,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.fj)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$p,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.eS)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$p,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$target('_blank'),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t\t\t$elm$core$String$concat(\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t'/public/v1/projects/',\n\t\t\t\t\t\t\t\t\t\t\t$elm$core$String$fromInt(listing.e9)\n\t\t\t\t\t\t\t\t\t\t])))\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text('public')\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$p,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.e2.f_)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$p,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.e2.f$)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$span,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('badge badge-pill badge-secondary')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.ej.ej)\n\t\t\t\t\t])),\n\t\t\t\t$author$project$Components$ProjectList$viewErrorDiv(listing)\n\t\t\t]));\n};\nvar $author$project$Components$ProjectList$view = function (options) {\n\tvar _v0 = options.fD;\n\tswitch (_v0.$) {\n\t\tcase 0:\n\t\t\treturn A2($elm$html$Html$div, _List_Nil, _List_Nil);\n\t\tcase 2:\n\t\t\treturn A2($elm$html$Html$div, _List_Nil, _List_Nil);\n\t\tcase 1:\n\t\t\treturn A2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('project-preview')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text('Loading...')\n\t\t\t\t\t]));\n\t\tdefault:\n\t\t\tvar listing = _v0.a;\n\t\t\treturn A2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('listings')\n\t\t\t\t\t]),\n\t\t\t\tA2($elm$core$List$map, $author$project$Components$ProjectList$viewProject, listing));\n\t}\n};\nvar $author$project$Pages$Projects$view = function (model) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('container')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$h1,\n\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text('Projects')\n\t\t\t\t\t\t\t])),\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('col-md-9')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$author$project$Components$ProjectList$view(\n\t\t\t\t\t\t\t\t{fD: model.dM, O: model.O})\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]),\n\t\tfR: 'Projects'\n\t};\n};\nvar $author$project$Pages$Projects$page = $author$project$Spa$Page$application(\n\t{fb: $author$project$Pages$Projects$init, fg: $author$project$Pages$Projects$load, fJ: $author$project$Pages$Projects$save, fN: $author$project$Pages$Projects$subscriptions, fZ: $author$project$Pages$Projects$update, f0: $author$project$Pages$Projects$view});\nvar $author$project$Pages$Register$Model = F5(\n\tfunction (user, key, username, email, password) {\n\t\treturn {av: email, fd: key, cN: password, O: user, cf: username};\n\t});\nvar $author$project$Pages$Register$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar key = _v0.fd;\n\t\treturn _Utils_Tuple2(\n\t\t\tA5(\n\t\t\t\t$author$project$Pages$Register$Model,\n\t\t\t\tfunction () {\n\t\t\t\t\tvar _v1 = shared.O;\n\t\t\t\t\tif (!_v1.$) {\n\t\t\t\t\t\tvar user = _v1.a;\n\t\t\t\t\t\treturn $author$project$Api$Data$Success(user);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn $author$project$Api$Data$NotAsked;\n\t\t\t\t\t}\n\t\t\t\t}(),\n\t\t\t\tkey,\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t''),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Register$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Register$save = F2(\n\tfunction (model, shared) {\n\t\treturn _Utils_update(\n\t\t\tshared,\n\t\t\t{\n\t\t\t\tO: function () {\n\t\t\t\t\tvar _v0 = $author$project$Api$Data$toMaybe(model.O);\n\t\t\t\t\tif (!_v0.$) {\n\t\t\t\t\t\tvar user = _v0.a;\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(user);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn shared.O;\n\t\t\t\t\t}\n\t\t\t\t}()\n\t\t\t});\n\t});\nvar $author$project$Pages$Register$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Register$GotUser = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$http$Http$jsonBody = function (value) {\n\treturn A2(\n\t\t_Http_pair,\n\t\t'application/json',\n\t\tA2($elm$json$Json$Encode$encode, 0, value));\n};\nvar $author$project$Api$User$registration = function (options) {\n\tvar body = $elm$json$Json$Encode$object(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'user',\n\t\t\t\t$elm$json$Json$Encode$object(\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t'username',\n\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.cf)),\n\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t'email',\n\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.av)),\n\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t'password',\n\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.cN))\n\t\t\t\t\t\t])))\n\t\t\t]));\n\treturn $elm$http$Http$post(\n\t\t{\n\t\t\teJ: $elm$http$Http$jsonBody(body),\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fv,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder)),\n\t\t\tf_: 'https://conduit.productionready.io/api/users'\n\t\t});\n};\nvar $author$project$Pages$Register$update = F2(\n\tfunction (msg, model) {\n\t\tswitch (msg.$) {\n\t\t\tcase 0:\n\t\t\t\tswitch (msg.a) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tvar _v1 = msg.a;\n\t\t\t\t\t\tvar username = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{cf: username}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tvar _v2 = msg.a;\n\t\t\t\t\t\tvar email = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{av: email}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar _v3 = msg.a;\n\t\t\t\t\t\tvar password = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{cN: password}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t}\n\t\t\tcase 1:\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\tmodel,\n\t\t\t\t\t$author$project$Api$User$registration(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfv: $author$project$Pages$Register$GotUser,\n\t\t\t\t\t\t\tO: {av: model.av, cN: model.cN, cf: model.cf}\n\t\t\t\t\t\t}));\n\t\t\tdefault:\n\t\t\t\tvar user = msg.a;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{O: user}),\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\tvar _v4 = $author$project$Api$Data$toMaybe(user);\n\t\t\t\t\t\tif (!_v4.$) {\n\t\t\t\t\t\t\tvar user_ = _v4.a;\n\t\t\t\t\t\t\treturn $elm$core$Platform$Cmd$batch(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$author$project$Ports$saveUser(user_),\n\t\t\t\t\t\t\t\t\t\tA2($author$project$Utils$Route$navigate, model.fd, $author$project$Spa$Generated$Route$Top)\n\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Platform$Cmd$none;\n\t\t\t\t\t\t}\n\t\t\t\t\t}());\n\t\t}\n\t});\nvar $author$project$Pages$Register$AttemptedSignUp = {$: 1};\nvar $author$project$Pages$Register$Email = 1;\nvar $author$project$Pages$Register$Password = 2;\nvar $author$project$Pages$Register$Updated = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $author$project$Pages$Register$Username = 0;\nvar $author$project$Pages$Register$view = function (model) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[\n\t\t\t\t$author$project$Components$UserForm$view(\n\t\t\t\t{\n\t\t\t\t\tde: {fe: 'Have an account?', fI: $author$project$Spa$Generated$Route$Login},\n\t\t\t\t\te0: _List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfe: 'Your Name',\n\t\t\t\t\t\t\tdU: $author$project$Pages$Register$Updated(0),\n\t\t\t\t\t\t\tex: 'text',\n\t\t\t\t\t\t\tez: model.cf\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfe: 'Email',\n\t\t\t\t\t\t\tdU: $author$project$Pages$Register$Updated(1),\n\t\t\t\t\t\t\tex: 'email',\n\t\t\t\t\t\t\tez: model.av\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfe: 'Password',\n\t\t\t\t\t\t\tdU: $author$project$Pages$Register$Updated(2),\n\t\t\t\t\t\t\tex: 'password',\n\t\t\t\t\t\t\tez: model.cN\n\t\t\t\t\t\t}\n\t\t\t\t\t\t]),\n\t\t\t\t\tfe: 'Sign up',\n\t\t\t\t\tft: $author$project$Pages$Register$AttemptedSignUp,\n\t\t\t\t\tO: model.O\n\t\t\t\t})\n\t\t\t]),\n\t\tfR: 'Sign up'\n\t};\n};\nvar $author$project$Pages$Register$page = $author$project$Spa$Page$application(\n\t{fb: $author$project$Pages$Register$init, fg: $author$project$Pages$Register$load, fJ: $author$project$Pages$Register$save, fN: $author$project$Pages$Register$subscriptions, fZ: $author$project$Pages$Register$update, f0: $author$project$Pages$Register$view});\nvar $author$project$Pages$Settings$init = F2(\n\tfunction (shared, _v0) {\n\t\treturn _Utils_Tuple2(\n\t\t\tfunction () {\n\t\t\t\tvar _v1 = shared.O;\n\t\t\t\tif (!_v1.$) {\n\t\t\t\t\tvar user = _v1.a;\n\t\t\t\t\treturn {av: user.av, ab: _List_Nil, ah: $elm$core$Maybe$Nothing, cN: $elm$core$Maybe$Nothing, O: shared.O, cf: user.cf};\n\t\t\t\t} else {\n\t\t\t\t\treturn {av: '', ab: _List_Nil, ah: $elm$core$Maybe$Nothing, cN: $elm$core$Maybe$Nothing, O: shared.O, cf: ''};\n\t\t\t\t}\n\t\t\t}(),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Settings$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Utils$Auth$protected = F2(\n\tfunction (view, model) {\n\t\tvar _v0 = model.O;\n\t\tif (!_v0.$) {\n\t\t\tvar user = _v0.a;\n\t\t\treturn A2(view, user, model);\n\t\t} else {\n\t\t\treturn {\n\t\t\t\teJ: _List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$h2,\n\t\t\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Not signed in.')\n\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$h5,\n\t\t\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Please '),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('/login')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('sign in')\n\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(' to view this page.')\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]),\n\t\t\t\tfR: '401'\n\t\t\t};\n\t\t}\n\t});\nvar $author$project$Pages$Settings$save = F2(\n\tfunction (model, shared) {\n\t\treturn _Utils_update(\n\t\t\tshared,\n\t\t\t{O: model.O});\n\t});\nvar $author$project$Pages$Settings$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Settings$GotUser = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Api$Token$put = F2(\n\tfunction (token, options) {\n\t\treturn A4($author$project$Api$Token$request, 'PUT', options.eJ, token, options);\n\t});\nvar $author$project$Api$User$update = function (options) {\n\tvar body = $elm$json$Json$Encode$object(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'user',\n\t\t\t\t$elm$json$Json$Encode$object(\n\t\t\t\t\t$elm$core$List$concat(\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t'username',\n\t\t\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.cf)),\n\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t'email',\n\t\t\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.av))\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\tvar _v0 = options.O.cN;\n\t\t\t\t\t\t\t\tif (!_v0.$) {\n\t\t\t\t\t\t\t\t\tvar password = _v0.a;\n\t\t\t\t\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t\t\t'password',\n\t\t\t\t\t\t\t\t\t\t\t$elm$json$Json$Encode$string(password))\n\t\t\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn _List_Nil;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}()\n\t\t\t\t\t\t\t]))))\n\t\t\t]));\n\treturn A2(\n\t\t$author$project$Api$Token$put,\n\t\t$elm$core$Maybe$Just(options.c9),\n\t\t{\n\t\t\teJ: $elm$http$Http$jsonBody(body),\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fv,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder)),\n\t\t\tf_: 'https://conduit.productionready.io/api/user'\n\t\t});\n};\nvar $author$project$Pages$Settings$update = F2(\n\tfunction (msg, model) {\n\t\tswitch (msg.$) {\n\t\t\tcase 0:\n\t\t\t\tswitch (msg.a) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tvar _v1 = msg.a;\n\t\t\t\t\t\tvar value = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{cf: value}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tvar _v2 = msg.a;\n\t\t\t\t\t\tvar value = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{av: value}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar _v3 = msg.a;\n\t\t\t\t\t\tvar value = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcN: $elm$core$Maybe$Just(value)\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t}\n\t\t\tcase 1:\n\t\t\t\tvar user = msg.a;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{ab: _List_Nil, ah: $elm$core$Maybe$Nothing}),\n\t\t\t\t\t$author$project$Api$User$update(\n\t\t\t\t\t\t{fv: $author$project$Pages$Settings$GotUser, c9: user.c9, O: model}));\n\t\t\tdefault:\n\t\t\t\tswitch (msg.a.$) {\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tvar user = msg.a.a;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tah: $elm$core$Maybe$Just('User updated!'),\n\t\t\t\t\t\t\t\t\tO: $elm$core$Maybe$Just(user)\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t$author$project$Ports$saveUser(user));\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tvar reasons = msg.a.a;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{ab: reasons}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t\t\t\t}\n\t\t}\n\t});\nvar $author$project$Pages$Settings$Email = 1;\nvar $author$project$Pages$Settings$Password = 2;\nvar $author$project$Pages$Settings$SubmittedForm = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $author$project$Pages$Settings$Updated = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $author$project$Pages$Settings$Username = 0;\nvar $elm$html$Html$br = _VirtualDom_node('br');\nvar $author$project$Utils$Maybe$view = F2(\n\tfunction (maybe, toView) {\n\t\tif (!maybe.$) {\n\t\t\tvar value = maybe.a;\n\t\t\treturn toView(value);\n\t\t} else {\n\t\t\treturn $elm$html$Html$text('');\n\t\t}\n\t});\nvar $author$project$Pages$Settings$view = F2(\n\tfunction (user, model) {\n\t\treturn {\n\t\t\teJ: _List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('settings-page')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('row')\n\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('col-md-6 offset-md-3 col-xs-12')\n\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$h1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-xs-center')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Your Settings')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$br, _List_Nil, _List_Nil),\n\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Components$ErrorList$view(model.ab),\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Utils$Maybe$view,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel.ah,\n\t\t\t\t\t\t\t\t\t\t\t\t\tfunction (message) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$p,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-success')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(message)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$form,\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onSubmit(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Pages$Settings$SubmittedForm(user))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$fieldset,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$fieldset,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-group')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-control form-control-lg'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder('Your Username'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$type_('text'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$value(model.cf),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Pages$Settings$Updated(0))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$fieldset,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-group')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-control form-control-lg'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder('Email'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$type_('text'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$value(model.av),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Pages$Settings$Updated(1))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$fieldset,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-group')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-control form-control-lg'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder('Password'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$type_('password'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$value(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$core$Maybe$withDefault, '', model.cN)),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Pages$Settings$Updated(2))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-lg btn-primary pull-xs-right')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Update Settings')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t]))\n\t\t\t\t]),\n\t\t\tfR: 'Settings'\n\t\t};\n\t});\nvar $author$project$Pages$Settings$page = $author$project$Spa$Page$application(\n\t{\n\t\tfb: $author$project$Pages$Settings$init,\n\t\tfg: $author$project$Pages$Settings$load,\n\t\tfJ: $author$project$Pages$Settings$save,\n\t\tfN: $author$project$Pages$Settings$subscriptions,\n\t\tfZ: $author$project$Pages$Settings$update,\n\t\tf0: $author$project$Utils$Auth$protected($author$project$Pages$Settings$view)\n\t});\nvar $author$project$Pages$Top$FeedFor = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Pages$Top$Global = {$: 1};\nvar $author$project$Pages$Top$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar activeTab = A2(\n\t\t\t$elm$core$Maybe$withDefault,\n\t\t\t$author$project$Pages$Top$Global,\n\t\t\tA2($elm$core$Maybe$map, $author$project$Pages$Top$FeedFor, shared.O));\n\t\tvar model = {db: activeTab, dM: $author$project$Api$Data$Loading, eo: $author$project$Api$Data$Loading, O: shared.O};\n\t\treturn _Utils_Tuple2(\n\t\t\tmodel,\n\t\t\t$elm$core$Platform$Cmd$batch(_List_Nil));\n\t});\nvar $author$project$Pages$Top$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Top$save = F2(\n\tfunction (_v0, shared) {\n\t\treturn shared;\n\t});\nvar $author$project$Pages$Top$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Top$update = F2(\n\tfunction (msg, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Top$view = function (model) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('home-page')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('banner')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container')\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t])),\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('row')\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('col-md-9')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]),\n\t\tfR: ''\n\t};\n};\nvar $author$project$Pages$Top$page = $author$project$Spa$Page$application(\n\t{fb: $author$project$Pages$Top$init, fg: $author$project$Pages$Top$load, fJ: $author$project$Pages$Top$save, fN: $author$project$Pages$Top$subscriptions, fZ: $author$project$Pages$Top$update, f0: $author$project$Pages$Top$view});\nvar $elm$core$List$drop = F2(\n\tfunction (n, list) {\n\t\tdrop:\n\t\twhile (true) {\n\t\t\tif (n <= 0) {\n\t\t\t\treturn list;\n\t\t\t} else {\n\t\t\t\tif (!list.b) {\n\t\t\t\t\treturn list;\n\t\t\t\t} else {\n\t\t\t\t\tvar x = list.a;\n\t\t\t\t\tvar xs = list.b;\n\t\t\t\t\tvar $temp$n = n - 1,\n\t\t\t\t\t\t$temp$list = xs;\n\t\t\t\t\tn = $temp$n;\n\t\t\t\t\tlist = $temp$list;\n\t\t\t\t\tcontinue drop;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$fromList = function (assocs) {\n\treturn A3(\n\t\t$elm$core$List$foldl,\n\t\tF2(\n\t\t\tfunction (_v0, dict) {\n\t\t\t\tvar key = _v0.a;\n\t\t\t\tvar value = _v0.b;\n\t\t\t\treturn A3($elm$core$Dict$insert, key, value, dict);\n\t\t\t}),\n\t\t$elm$core$Dict$empty,\n\t\tassocs);\n};\nvar $elm$core$List$head = function (list) {\n\tif (list.b) {\n\t\tvar x = list.a;\n\t\tvar xs = list.b;\n\t\treturn $elm$core$Maybe$Just(x);\n\t} else {\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n};\nvar $elm$core$Tuple$mapBoth = F3(\n\tfunction (funcA, funcB, _v0) {\n\t\tvar x = _v0.a;\n\t\tvar y = _v0.b;\n\t\treturn _Utils_Tuple2(\n\t\t\tfuncA(x),\n\t\t\tfuncB(y));\n\t});\nvar $author$project$Spa$Url$toQueryDict = function (queryString) {\n\tvar second = A2(\n\t\t$elm$core$Basics$composeR,\n\t\t$elm$core$List$drop(1),\n\t\t$elm$core$List$head);\n\tvar toTuple = function (list) {\n\t\treturn A2(\n\t\t\t$elm$core$Maybe$map,\n\t\t\tfunction (first) {\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\tfirst,\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$core$Maybe$withDefault,\n\t\t\t\t\t\t'',\n\t\t\t\t\t\tsecond(list)));\n\t\t\t},\n\t\t\t$elm$core$List$head(list));\n\t};\n\tvar decode = A2(\n\t\t$elm$core$Basics$composeR,\n\t\t$elm$url$Url$percentDecode,\n\t\t$elm$core$Maybe$withDefault(''));\n\treturn $elm$core$Dict$fromList(\n\t\tA2(\n\t\t\t$elm$core$List$map,\n\t\t\tA2($elm$core$Tuple$mapBoth, decode, decode),\n\t\t\tA2(\n\t\t\t\t$elm$core$List$filterMap,\n\t\t\t\ttoTuple,\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t$elm$core$String$split('='),\n\t\t\t\t\tA2($elm$core$String$split, '&', queryString)))));\n};\nvar $author$project$Spa$Url$create = F3(\n\tfunction (params, key, url) {\n\t\treturn {\n\t\t\tfd: key,\n\t\t\tfB: params,\n\t\t\tcS: A2(\n\t\t\t\t$elm$core$Maybe$withDefault,\n\t\t\t\t$elm$core$Dict$empty,\n\t\t\t\tA2($elm$core$Maybe$map, $author$project$Spa$Url$toQueryDict, url.cS)),\n\t\t\td3: url\n\t\t};\n\t});\nvar $elm$core$Platform$Cmd$map = _Platform_map;\nvar $elm$core$Platform$Sub$map = _Platform_map;\nvar $elm$virtual_dom$VirtualDom$map = _VirtualDom_map;\nvar $elm$html$Html$map = $elm$virtual_dom$VirtualDom$map;\nvar $author$project$Spa$Document$map = F2(\n\tfunction (fn, doc) {\n\t\treturn {\n\t\t\teJ: A2(\n\t\t\t\t$elm$core$List$map,\n\t\t\t\t$elm$html$Html$map(fn),\n\t\t\t\tdoc.eJ),\n\t\t\tfR: doc.fR\n\t\t};\n\t});\nvar $author$project$Spa$Generated$Pages$upgrade = F3(\n\tfunction (toModel, toMsg, page) {\n\t\tvar update_ = F2(\n\t\t\tfunction (msg, model) {\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$core$Tuple$mapBoth,\n\t\t\t\t\ttoModel,\n\t\t\t\t\t$elm$core$Platform$Cmd$map(toMsg),\n\t\t\t\t\tA2(page.fZ, msg, model));\n\t\t\t});\n\t\tvar load_ = F2(\n\t\t\tfunction (model, shared) {\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$core$Tuple$mapBoth,\n\t\t\t\t\ttoModel,\n\t\t\t\t\t$elm$core$Platform$Cmd$map(toMsg),\n\t\t\t\t\tA2(page.fg, shared, model));\n\t\t\t});\n\t\tvar init_ = F2(\n\t\t\tfunction (params, shared) {\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$core$Tuple$mapBoth,\n\t\t\t\t\ttoModel,\n\t\t\t\t\t$elm$core$Platform$Cmd$map(toMsg),\n\t\t\t\t\tA2(\n\t\t\t\t\t\tpage.fb,\n\t\t\t\t\t\tshared,\n\t\t\t\t\t\tA3($author$project$Spa$Url$create, params, shared.fd, shared.f_)));\n\t\t\t});\n\t\tvar bundle_ = function (model) {\n\t\t\treturn {\n\t\t\t\tfg: load_(model),\n\t\t\t\tfJ: page.fJ(model),\n\t\t\t\tfN: A2(\n\t\t\t\t\t$elm$core$Platform$Sub$map,\n\t\t\t\t\ttoMsg,\n\t\t\t\t\tpage.fN(model)),\n\t\t\t\tf0: A2(\n\t\t\t\t\t$author$project$Spa$Document$map,\n\t\t\t\t\ttoMsg,\n\t\t\t\t\tpage.f0(model))\n\t\t\t};\n\t\t};\n\t\treturn {D: bundle_, fb: init_, fZ: update_};\n\t});\nvar $author$project$Spa$Generated$Pages$pages = {\n\tbt: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Login__Model, $author$project$Spa$Generated$Pages$Login__Msg, $author$project$Pages$Login$page),\n\tbx: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$NotFound__Model, $author$project$Spa$Generated$Pages$NotFound__Msg, $author$project$Pages$NotFound$page),\n\tbQ: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Profile__Username_String__Model, $author$project$Spa$Generated$Pages$Profile__Username_String__Msg, $author$project$Pages$Profile$Username_String$page),\n\tbR: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Projects__Model, $author$project$Spa$Generated$Pages$Projects__Msg, $author$project$Pages$Projects$page),\n\tb1: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Register__Model, $author$project$Spa$Generated$Pages$Register__Msg, $author$project$Pages$Register$page),\n\tb8: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Settings__Model, $author$project$Spa$Generated$Pages$Settings__Msg, $author$project$Pages$Settings$page),\n\tcc: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Top__Model, $author$project$Spa$Generated$Pages$Top__Msg, $author$project$Pages$Top$page)\n};\nvar $author$project$Spa$Generated$Pages$init = function (route) {\n\tswitch (route.$) {\n\t\tcase 0:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.cc.fb(0);\n\t\tcase 1:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bt.fb(0);\n\t\tcase 2:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bx.fb(0);\n\t\tcase 3:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bR.fb(0);\n\t\tcase 4:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.b1.fb(0);\n\t\tcase 5:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.b8.fb(0);\n\t\tdefault:\n\t\t\tvar params = route.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bQ.fb(params);\n\t}\n};\nvar $author$project$Main$init = F3(\n\tfunction (flags, url, key) {\n\t\tvar _v0 = A3($author$project$Shared$init, flags, url, key);\n\t\tvar shared = _v0.a;\n\t\tvar sharedCmd = _v0.b;\n\t\tvar _v1 = A2(\n\t\t\t$author$project$Spa$Generated$Pages$init,\n\t\t\t$author$project$Utils$Route$fromUrl(url),\n\t\t\tshared);\n\t\tvar page = _v1.a;\n\t\tvar pageCmd = _v1.b;\n\t\treturn _Utils_Tuple2(\n\t\t\tA2($author$project$Main$Model, shared, page),\n\t\t\t$elm$core$Platform$Cmd$batch(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Shared, sharedCmd),\n\t\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd)\n\t\t\t\t\t])));\n\t});\nvar $author$project$Shared$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Spa$Generated$Pages$bundle = function (bigModel) {\n\tswitch (bigModel.$) {\n\t\tcase 0:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.cc.D(model);\n\t\tcase 1:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bt.D(model);\n\t\tcase 2:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bx.D(model);\n\t\tcase 3:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bR.D(model);\n\t\tcase 4:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.b1.D(model);\n\t\tcase 5:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.b8.D(model);\n\t\tdefault:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bQ.D(model);\n\t}\n};\nvar $author$project$Spa$Generated$Pages$subscriptions = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Pages$bundle,\n\tfunction ($) {\n\t\treturn $.fN;\n\t});\nvar $author$project$Main$subscriptions = function (model) {\n\treturn $elm$core$Platform$Sub$batch(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$core$Platform$Sub$map,\n\t\t\t\t$author$project$Main$Shared,\n\t\t\t\t$author$project$Shared$subscriptions(model.x)),\n\t\t\t\tA2(\n\t\t\t\t$elm$core$Platform$Sub$map,\n\t\t\t\t$author$project$Main$Pages,\n\t\t\t\t$author$project$Spa$Generated$Pages$subscriptions(model.C))\n\t\t\t]));\n};\nvar $author$project$Spa$Document$toBrowserDocument = function (doc) {\n\treturn {eJ: doc.eJ, fR: doc.fR};\n};\nvar $elm$browser$Browser$Navigation$load = _Browser_load;\nvar $author$project$Spa$Generated$Pages$load = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Pages$bundle,\n\tfunction ($) {\n\t\treturn $.fg;\n\t});\nvar $author$project$Spa$Generated$Pages$save = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Pages$bundle,\n\tfunction ($) {\n\t\treturn $.fJ;\n\t});\nvar $elm$url$Url$addPort = F2(\n\tfunction (maybePort, starter) {\n\t\tif (maybePort.$ === 1) {\n\t\t\treturn starter;\n\t\t} else {\n\t\t\tvar port_ = maybePort.a;\n\t\t\treturn starter + (':' + $elm$core$String$fromInt(port_));\n\t\t}\n\t});\nvar $elm$url$Url$addPrefixed = F3(\n\tfunction (prefix, maybeSegment, starter) {\n\t\tif (maybeSegment.$ === 1) {\n\t\t\treturn starter;\n\t\t} else {\n\t\t\tvar segment = maybeSegment.a;\n\t\t\treturn _Utils_ap(\n\t\t\t\tstarter,\n\t\t\t\t_Utils_ap(prefix, segment));\n\t\t}\n\t});\nvar $elm$url$Url$toString = function (url) {\n\tvar http = function () {\n\t\tvar _v0 = url.d2;\n\t\tif (!_v0) {\n\t\t\treturn 'http://';\n\t\t} else {\n\t\t\treturn 'https://';\n\t\t}\n\t}();\n\treturn A3(\n\t\t$elm$url$Url$addPrefixed,\n\t\t'#',\n\t\turl.dw,\n\t\tA3(\n\t\t\t$elm$url$Url$addPrefixed,\n\t\t\t'?',\n\t\t\turl.cS,\n\t\t\t_Utils_ap(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$url$Url$addPort,\n\t\t\t\t\turl.dZ,\n\t\t\t\t\t_Utils_ap(http, url.e6)),\n\t\t\t\turl.dX)));\n};\nvar $elm$json$Json$Encode$null = _Json_encodeNull;\nvar $author$project$Ports$clearUser = $author$project$Ports$outgoing(\n\t{cs: $elm$json$Json$Encode$null, c7: 'clearUser'});\nvar $author$project$Shared$update = F2(\n\tfunction (msg, model) {\n\t\treturn _Utils_Tuple2(\n\t\t\t_Utils_update(\n\t\t\t\tmodel,\n\t\t\t\t{O: $elm$core$Maybe$Nothing}),\n\t\t\t$author$project$Ports$clearUser);\n\t});\nvar $author$project$Spa$Generated$Pages$update = F2(\n\tfunction (bigMsg, bigModel) {\n\t\tvar _v0 = _Utils_Tuple2(bigMsg, bigModel);\n\t\t_v0$7:\n\t\twhile (true) {\n\t\t\tswitch (_v0.a.$) {\n\t\t\t\tcase 0:\n\t\t\t\t\tif (!_v0.b.$) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.cc.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 1:\n\t\t\t\t\tif (_v0.b.$ === 1) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.bt.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 2:\n\t\t\t\t\tif (_v0.b.$ === 2) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.bx.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 3:\n\t\t\t\t\tif (_v0.b.$ === 3) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.bR.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 4:\n\t\t\t\t\tif (_v0.b.$ === 4) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.b1.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 5:\n\t\t\t\t\tif (_v0.b.$ === 5) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.b8.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tif (_v0.b.$ === 6) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.bQ.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn _Utils_Tuple2(bigModel, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Main$update = F2(\n\tfunction (msg, model) {\n\t\tswitch (msg.$) {\n\t\t\tcase 0:\n\t\t\t\tif (!msg.a.$) {\n\t\t\t\t\tvar url = msg.a.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$browser$Browser$Navigation$pushUrl,\n\t\t\t\t\t\t\tmodel.x.fd,\n\t\t\t\t\t\t\t$elm$url$Url$toString(url)));\n\t\t\t\t} else {\n\t\t\t\t\tvar href = msg.a.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t$elm$browser$Browser$Navigation$load(href));\n\t\t\t\t}\n\t\t\tcase 1:\n\t\t\t\tvar url = msg.a;\n\t\t\t\tvar original = model.x;\n\t\t\t\tvar shared = _Utils_update(\n\t\t\t\t\toriginal,\n\t\t\t\t\t{f_: url});\n\t\t\t\tvar _v1 = _Utils_eq(url.dX, model.x.f_.dX) ? A2($author$project$Spa$Generated$Pages$load, model.C, shared) : A2(\n\t\t\t\t\t$author$project$Spa$Generated$Pages$init,\n\t\t\t\t\t$author$project$Utils$Route$fromUrl(url),\n\t\t\t\t\tshared);\n\t\t\t\tvar page = _v1.a;\n\t\t\t\tvar pageCmd = _v1.b;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tC: page,\n\t\t\t\t\t\t\tx: A2($author$project$Spa$Generated$Pages$save, page, shared)\n\t\t\t\t\t\t}),\n\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd));\n\t\t\tcase 2:\n\t\t\t\tvar sharedMsg = msg.a;\n\t\t\t\tvar _v2 = A2($author$project$Shared$update, sharedMsg, model.x);\n\t\t\t\tvar shared = _v2.a;\n\t\t\t\tvar sharedCmd = _v2.b;\n\t\t\t\tvar _v3 = A2($author$project$Spa$Generated$Pages$load, model.C, shared);\n\t\t\t\tvar page = _v3.a;\n\t\t\t\tvar pageCmd = _v3.b;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{C: page, x: shared}),\n\t\t\t\t\t$elm$core$Platform$Cmd$batch(\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Shared, sharedCmd),\n\t\t\t\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd)\n\t\t\t\t\t\t\t])));\n\t\t\tdefault:\n\t\t\t\tvar pageMsg = msg.a;\n\t\t\t\tvar _v4 = A2($author$project$Spa$Generated$Pages$update, pageMsg, model.C);\n\t\t\t\tvar page = _v4.a;\n\t\t\t\tvar pageCmd = _v4.b;\n\t\t\t\tvar shared = A2($author$project$Spa$Generated$Pages$save, page, model.x);\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{C: page, x: shared}),\n\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd));\n\t\t}\n\t});\nvar $elm$json$Json$Decode$value = _Json_decodeValue;\nvar $author$project$Shared$ClickedSignOut = 0;\nvar $elm$virtual_dom$VirtualDom$node = function (tag) {\n\treturn _VirtualDom_node(\n\t\t_VirtualDom_noScript(tag));\n};\nvar $elm$html$Html$node = $elm$virtual_dom$VirtualDom$node;\nvar $elm$html$Html$Attributes$rel = _VirtualDom_attribute('rel');\nvar $author$project$Shared$slogan = 'Highly flexible Application Runtime Platform';\nvar $rundis$elm_bootstrap$Bootstrap$CDN$stylesheet = A3(\n\t$elm$html$Html$node,\n\t'link',\n\t_List_fromArray(\n\t\t[\n\t\t\t$elm$html$Html$Attributes$rel('stylesheet'),\n\t\t\t$elm$html$Html$Attributes$href('https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css')\n\t\t]),\n\t_List_Nil);\nvar $elm$html$Html$footer = _VirtualDom_node('footer');\nvar $author$project$Components$Footer$view = A2(\n\t$elm$html$Html$footer,\n\t_List_fromArray(\n\t\t[\n\t\t\t$elm$html$Html$Attributes$class('footer')\n\t\t]),\n\t_List_fromArray(\n\t\t[\n\t\t\tA2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('container text-center')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$span,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-muted')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text('© 2020 Copyright sahli.net')\n\t\t\t\t\t\t]))\n\t\t\t\t]))\n\t\t]));\nvar $elm$virtual_dom$VirtualDom$property = F2(\n\tfunction (key, value) {\n\t\treturn A2(\n\t\t\t_VirtualDom_property,\n\t\t\t_VirtualDom_noInnerHtmlOrFormAction(key),\n\t\t\t_VirtualDom_noJavaScriptOrHtmlUri(value));\n\t});\nvar $elm$html$Html$Attributes$property = $elm$virtual_dom$VirtualDom$property;\nvar $author$project$Components$Navbar$stringProperty = F2(\n\tfunction (name, string) {\n\t\treturn A2(\n\t\t\t$elm$html$Html$Attributes$property,\n\t\t\tname,\n\t\t\t$elm$json$Json$Encode$string(string));\n\t});\nvar $author$project$Components$Navbar$ariaControls = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'aria-controls', value);\n};\nvar $author$project$Components$Navbar$ariaExpanded = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'aria-expanded', value);\n};\nvar $author$project$Components$Navbar$ariaLabel = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'aria-label', value);\n};\nvar $author$project$Components$Navbar$dataTarget = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'data-target', value);\n};\nvar $author$project$Components$Navbar$dataToggle = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'data-toggle', value);\n};\nvar $elm$html$Html$i = _VirtualDom_node('i');\nvar $elm$html$Html$Attributes$id = $elm$html$Html$Attributes$stringProperty('id');\nvar $elm$html$Html$nav = _VirtualDom_node('nav');\nvar $elm$virtual_dom$VirtualDom$style = _VirtualDom_style;\nvar $elm$html$Html$Attributes$style = $elm$virtual_dom$VirtualDom$style;\nvar $author$project$Components$Navbar$viewLink = F2(\n\tfunction (currentRoute, _v0) {\n\t\tvar label = _v0.a;\n\t\tvar route = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$html$Html$li,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('nav-item')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-link'),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$classList(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t'active',\n\t\t\t\t\t\t\t\t\t_Utils_eq(currentRoute, route))\n\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t\t$author$project$Spa$Generated$Route$toString(route))\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text(label)\n\t\t\t\t\t\t]))\n\t\t\t\t]));\n\t});\nvar $author$project$Components$Navbar$view = function (options) {\n\treturn A2(\n\t\t$elm$html$Html$nav,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('navbar navbar-expand-lg navbar-light')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$a,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('navbar-brand'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t$author$project$Spa$Generated$Route$toString($author$project$Spa$Generated$Route$Top)),\n\t\t\t\t\t\tA2($elm$html$Html$Attributes$style, 'color', '#FF5733')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text('Tumbo')\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$button,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('navbar-toggler'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$type_('button'),\n\t\t\t\t\t\t$author$project$Components$Navbar$dataToggle('collapse'),\n\t\t\t\t\t\t$author$project$Components$Navbar$dataTarget('#navbarTogglerDemo02'),\n\t\t\t\t\t\t$author$project$Components$Navbar$ariaControls('navbarTogglerDemo02'),\n\t\t\t\t\t\t$author$project$Components$Navbar$ariaExpanded('false'),\n\t\t\t\t\t\t$author$project$Components$Navbar$ariaLabel('Toggle navigation')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$span,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('navbar-toggler-icon')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('collapse navbar-collapse'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$id('navbarTogglerDemo02')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$ul,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav navbar-nav ml-auto')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\tvar _v0 = options.O;\n\t\t\t\t\t\t\tif (!_v0.$) {\n\t\t\t\t\t\t\t\treturn $elm$core$List$concat(\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t\t\t\t\t\t\t$author$project$Components$Navbar$viewLink(options.dm),\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Home', $author$project$Spa$Generated$Route$Top),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Projects', $author$project$Spa$Generated$Route$Projects),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Settings', $author$project$Spa$Generated$Route$Settings)\n\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$li,\n\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-item')\n\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-link'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onClick(options.fw)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Sign out')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t\t\t\t\t$author$project$Components$Navbar$viewLink(options.dm),\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Home', $author$project$Spa$Generated$Route$Top),\n\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Sign in', $author$project$Spa$Generated$Route$Login),\n\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Sign up', $author$project$Spa$Generated$Route$Register)\n\t\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}()),\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$target('blank'),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('https://github.com/sahlinet/go-tumbo3')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$i,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('fa fa-github'),\n\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$Attributes$style, 'color', 'black')\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]));\n};\nvar $author$project$Shared$view = F2(\n\tfunction (_v0, model) {\n\t\tvar page = _v0.C;\n\t\tvar toMsg = _v0.fV;\n\t\treturn {\n\t\t\teJ: _List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA3(\n\t\t\t\t\t$elm$html$Html$node,\n\t\t\t\t\t'link',\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$rel('stylesheet'),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_Nil),\n\t\t\t\t\t$rundis$elm_bootstrap$Bootstrap$CDN$stylesheet,\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('layout')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$author$project$Components$Navbar$view(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdm: $author$project$Utils$Route$fromUrl(model.f_),\n\t\t\t\t\t\t\t\tfw: toMsg(0),\n\t\t\t\t\t\t\t\tO: model.O\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('jumbotron')\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$text($author$project$Shared$slogan)\n\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('page')\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\tpage.eJ),\n\t\t\t\t\t\t\t$author$project$Components$Footer$view\n\t\t\t\t\t\t]))\n\t\t\t\t]),\n\t\t\tfR: $elm$core$String$isEmpty(page.fR) ? 'Tumbo' : (page.fR + ' | Tumbo')\n\t\t};\n\t});\nvar $author$project$Spa$Generated$Pages$view = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Pages$bundle,\n\tfunction ($) {\n\t\treturn $.f0;\n\t});\nvar $author$project$Main$view = function (model) {\n\treturn A2(\n\t\t$author$project$Shared$view,\n\t\t{\n\t\t\tC: A2(\n\t\t\t\t$author$project$Spa$Document$map,\n\t\t\t\t$author$project$Main$Pages,\n\t\t\t\t$author$project$Spa$Generated$Pages$view(model.C)),\n\t\t\tfV: $author$project$Main$Shared\n\t\t},\n\t\tmodel.x);\n};\nvar $author$project$Main$main = $elm$browser$Browser$application(\n\t{\n\t\tfb: $author$project$Main$init,\n\t\tfx: $author$project$Main$UrlChanged,\n\t\tfy: $author$project$Main$LinkClicked,\n\t\tfN: $author$project$Main$subscriptions,\n\t\tfZ: $author$project$Main$update,\n\t\tf0: A2($elm$core$Basics$composeR, $author$project$Main$view, $author$project$Spa$Document$toBrowserDocument)\n\t});\n_Platform_export({'Main':{'init':$author$project$Main$main($elm$json$Json$Decode$value)(0)}});}(this));"), } // define dirs dir1 := &embedded.EmbeddedDir{ Filename: "", - DirModTime: time.Unix(1606682149, 0), + DirModTime: time.Unix(1611413802, 0), ChildFiles: []*embedded.EmbeddedFile{ file2, // "elm.compiled.js" @@ -32,7 +32,7 @@ func init() { // register embeddedBox embedded.RegisterEmbeddedBox(`../../web/elm/public/dist`, &embedded.EmbeddedBox{ Name: `../../web/elm/public/dist`, - Time: time.Unix(1606682149, 0), + Time: time.Unix(1611413802, 0), Dirs: map[string]*embedded.EmbeddedDir{ "": dir1, }, @@ -47,9 +47,9 @@ func init() { // define files file5 := &embedded.EmbeddedFile{ Filename: "dist/elm.compiled.js", - FileModTime: time.Unix(1611410652, 0), + FileModTime: time.Unix(1611607243, 0), - Content: string("(function(scope){\n'use strict';\n\nfunction F(arity, fun, wrapper) {\n wrapper.a = arity;\n wrapper.f = fun;\n return wrapper;\n}\n\nfunction F2(fun) {\n return F(2, fun, function(a) { return function(b) { return fun(a,b); }; })\n}\nfunction F3(fun) {\n return F(3, fun, function(a) {\n return function(b) { return function(c) { return fun(a, b, c); }; };\n });\n}\nfunction F4(fun) {\n return F(4, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return fun(a, b, c, d); }; }; };\n });\n}\nfunction F5(fun) {\n return F(5, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return fun(a, b, c, d, e); }; }; }; };\n });\n}\nfunction F6(fun) {\n return F(6, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return fun(a, b, c, d, e, f); }; }; }; }; };\n });\n}\nfunction F7(fun) {\n return F(7, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return fun(a, b, c, d, e, f, g); }; }; }; }; }; };\n });\n}\nfunction F8(fun) {\n return F(8, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return function(h) {\n return fun(a, b, c, d, e, f, g, h); }; }; }; }; }; }; };\n });\n}\nfunction F9(fun) {\n return F(9, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return function(h) { return function(i) {\n return fun(a, b, c, d, e, f, g, h, i); }; }; }; }; }; }; }; };\n });\n}\n\nfunction A2(fun, a, b) {\n return fun.a === 2 ? fun.f(a, b) : fun(a)(b);\n}\nfunction A3(fun, a, b, c) {\n return fun.a === 3 ? fun.f(a, b, c) : fun(a)(b)(c);\n}\nfunction A4(fun, a, b, c, d) {\n return fun.a === 4 ? fun.f(a, b, c, d) : fun(a)(b)(c)(d);\n}\nfunction A5(fun, a, b, c, d, e) {\n return fun.a === 5 ? fun.f(a, b, c, d, e) : fun(a)(b)(c)(d)(e);\n}\nfunction A6(fun, a, b, c, d, e, f) {\n return fun.a === 6 ? fun.f(a, b, c, d, e, f) : fun(a)(b)(c)(d)(e)(f);\n}\nfunction A7(fun, a, b, c, d, e, f, g) {\n return fun.a === 7 ? fun.f(a, b, c, d, e, f, g) : fun(a)(b)(c)(d)(e)(f)(g);\n}\nfunction A8(fun, a, b, c, d, e, f, g, h) {\n return fun.a === 8 ? fun.f(a, b, c, d, e, f, g, h) : fun(a)(b)(c)(d)(e)(f)(g)(h);\n}\nfunction A9(fun, a, b, c, d, e, f, g, h, i) {\n return fun.a === 9 ? fun.f(a, b, c, d, e, f, g, h, i) : fun(a)(b)(c)(d)(e)(f)(g)(h)(i);\n}\n\n\n\n\n// EQUALITY\n\nfunction _Utils_eq(x, y)\n{\n\tfor (\n\t\tvar pair, stack = [], isEqual = _Utils_eqHelp(x, y, 0, stack);\n\t\tisEqual && (pair = stack.pop());\n\t\tisEqual = _Utils_eqHelp(pair.a, pair.b, 0, stack)\n\t\t)\n\t{}\n\n\treturn isEqual;\n}\n\nfunction _Utils_eqHelp(x, y, depth, stack)\n{\n\tif (x === y)\n\t{\n\t\treturn true;\n\t}\n\n\tif (typeof x !== 'object' || x === null || y === null)\n\t{\n\t\ttypeof x === 'function' && _Debug_crash(5);\n\t\treturn false;\n\t}\n\n\tif (depth > 100)\n\t{\n\t\tstack.push(_Utils_Tuple2(x,y));\n\t\treturn true;\n\t}\n\n\t/**_UNUSED/\n\tif (x.$ === 'Set_elm_builtin')\n\t{\n\t\tx = $elm$core$Set$toList(x);\n\t\ty = $elm$core$Set$toList(y);\n\t}\n\tif (x.$ === 'RBNode_elm_builtin' || x.$ === 'RBEmpty_elm_builtin')\n\t{\n\t\tx = $elm$core$Dict$toList(x);\n\t\ty = $elm$core$Dict$toList(y);\n\t}\n\t//*/\n\n\t/**/\n\tif (x.$ < 0)\n\t{\n\t\tx = $elm$core$Dict$toList(x);\n\t\ty = $elm$core$Dict$toList(y);\n\t}\n\t//*/\n\n\tfor (var key in x)\n\t{\n\t\tif (!_Utils_eqHelp(x[key], y[key], depth + 1, stack))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nvar _Utils_equal = F2(_Utils_eq);\nvar _Utils_notEqual = F2(function(a, b) { return !_Utils_eq(a,b); });\n\n\n\n// COMPARISONS\n\n// Code in Generate/JavaScript.hs, Basics.js, and List.js depends on\n// the particular integer values assigned to LT, EQ, and GT.\n\nfunction _Utils_cmp(x, y, ord)\n{\n\tif (typeof x !== 'object')\n\t{\n\t\treturn x === y ? /*EQ*/ 0 : x < y ? /*LT*/ -1 : /*GT*/ 1;\n\t}\n\n\t/**_UNUSED/\n\tif (x instanceof String)\n\t{\n\t\tvar a = x.valueOf();\n\t\tvar b = y.valueOf();\n\t\treturn a === b ? 0 : a < b ? -1 : 1;\n\t}\n\t//*/\n\n\t/**/\n\tif (typeof x.$ === 'undefined')\n\t//*/\n\t/**_UNUSED/\n\tif (x.$[0] === '#')\n\t//*/\n\t{\n\t\treturn (ord = _Utils_cmp(x.a, y.a))\n\t\t\t? ord\n\t\t\t: (ord = _Utils_cmp(x.b, y.b))\n\t\t\t\t? ord\n\t\t\t\t: _Utils_cmp(x.c, y.c);\n\t}\n\n\t// traverse conses until end of a list or a mismatch\n\tfor (; x.b && y.b && !(ord = _Utils_cmp(x.a, y.a)); x = x.b, y = y.b) {} // WHILE_CONSES\n\treturn ord || (x.b ? /*GT*/ 1 : y.b ? /*LT*/ -1 : /*EQ*/ 0);\n}\n\nvar _Utils_lt = F2(function(a, b) { return _Utils_cmp(a, b) < 0; });\nvar _Utils_le = F2(function(a, b) { return _Utils_cmp(a, b) < 1; });\nvar _Utils_gt = F2(function(a, b) { return _Utils_cmp(a, b) > 0; });\nvar _Utils_ge = F2(function(a, b) { return _Utils_cmp(a, b) >= 0; });\n\nvar _Utils_compare = F2(function(x, y)\n{\n\tvar n = _Utils_cmp(x, y);\n\treturn n < 0 ? $elm$core$Basics$LT : n ? $elm$core$Basics$GT : $elm$core$Basics$EQ;\n});\n\n\n// COMMON VALUES\n\nvar _Utils_Tuple0 = 0;\nvar _Utils_Tuple0_UNUSED = { $: '#0' };\n\nfunction _Utils_Tuple2(a, b) { return { a: a, b: b }; }\nfunction _Utils_Tuple2_UNUSED(a, b) { return { $: '#2', a: a, b: b }; }\n\nfunction _Utils_Tuple3(a, b, c) { return { a: a, b: b, c: c }; }\nfunction _Utils_Tuple3_UNUSED(a, b, c) { return { $: '#3', a: a, b: b, c: c }; }\n\nfunction _Utils_chr(c) { return c; }\nfunction _Utils_chr_UNUSED(c) { return new String(c); }\n\n\n// RECORDS\n\nfunction _Utils_update(oldRecord, updatedFields)\n{\n\tvar newRecord = {};\n\n\tfor (var key in oldRecord)\n\t{\n\t\tnewRecord[key] = oldRecord[key];\n\t}\n\n\tfor (var key in updatedFields)\n\t{\n\t\tnewRecord[key] = updatedFields[key];\n\t}\n\n\treturn newRecord;\n}\n\n\n// APPEND\n\nvar _Utils_append = F2(_Utils_ap);\n\nfunction _Utils_ap(xs, ys)\n{\n\t// append Strings\n\tif (typeof xs === 'string')\n\t{\n\t\treturn xs + ys;\n\t}\n\n\t// append Lists\n\tif (!xs.b)\n\t{\n\t\treturn ys;\n\t}\n\tvar root = _List_Cons(xs.a, ys);\n\txs = xs.b\n\tfor (var curr = root; xs.b; xs = xs.b) // WHILE_CONS\n\t{\n\t\tcurr = curr.b = _List_Cons(xs.a, ys);\n\t}\n\treturn root;\n}\n\n\n\nvar _List_Nil = { $: 0 };\nvar _List_Nil_UNUSED = { $: '[]' };\n\nfunction _List_Cons(hd, tl) { return { $: 1, a: hd, b: tl }; }\nfunction _List_Cons_UNUSED(hd, tl) { return { $: '::', a: hd, b: tl }; }\n\n\nvar _List_cons = F2(_List_Cons);\n\nfunction _List_fromArray(arr)\n{\n\tvar out = _List_Nil;\n\tfor (var i = arr.length; i--; )\n\t{\n\t\tout = _List_Cons(arr[i], out);\n\t}\n\treturn out;\n}\n\nfunction _List_toArray(xs)\n{\n\tfor (var out = []; xs.b; xs = xs.b) // WHILE_CONS\n\t{\n\t\tout.push(xs.a);\n\t}\n\treturn out;\n}\n\nvar _List_map2 = F3(function(f, xs, ys)\n{\n\tfor (var arr = []; xs.b && ys.b; xs = xs.b, ys = ys.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A2(f, xs.a, ys.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map3 = F4(function(f, xs, ys, zs)\n{\n\tfor (var arr = []; xs.b && ys.b && zs.b; xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A3(f, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map4 = F5(function(f, ws, xs, ys, zs)\n{\n\tfor (var arr = []; ws.b && xs.b && ys.b && zs.b; ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A4(f, ws.a, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map5 = F6(function(f, vs, ws, xs, ys, zs)\n{\n\tfor (var arr = []; vs.b && ws.b && xs.b && ys.b && zs.b; vs = vs.b, ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A5(f, vs.a, ws.a, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_sortBy = F2(function(f, xs)\n{\n\treturn _List_fromArray(_List_toArray(xs).sort(function(a, b) {\n\t\treturn _Utils_cmp(f(a), f(b));\n\t}));\n});\n\nvar _List_sortWith = F2(function(f, xs)\n{\n\treturn _List_fromArray(_List_toArray(xs).sort(function(a, b) {\n\t\tvar ord = A2(f, a, b);\n\t\treturn ord === $elm$core$Basics$EQ ? 0 : ord === $elm$core$Basics$LT ? -1 : 1;\n\t}));\n});\n\n\n\nvar _JsArray_empty = [];\n\nfunction _JsArray_singleton(value)\n{\n return [value];\n}\n\nfunction _JsArray_length(array)\n{\n return array.length;\n}\n\nvar _JsArray_initialize = F3(function(size, offset, func)\n{\n var result = new Array(size);\n\n for (var i = 0; i < size; i++)\n {\n result[i] = func(offset + i);\n }\n\n return result;\n});\n\nvar _JsArray_initializeFromList = F2(function (max, ls)\n{\n var result = new Array(max);\n\n for (var i = 0; i < max && ls.b; i++)\n {\n result[i] = ls.a;\n ls = ls.b;\n }\n\n result.length = i;\n return _Utils_Tuple2(result, ls);\n});\n\nvar _JsArray_unsafeGet = F2(function(index, array)\n{\n return array[index];\n});\n\nvar _JsArray_unsafeSet = F3(function(index, value, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = array[i];\n }\n\n result[index] = value;\n return result;\n});\n\nvar _JsArray_push = F2(function(value, array)\n{\n var length = array.length;\n var result = new Array(length + 1);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = array[i];\n }\n\n result[length] = value;\n return result;\n});\n\nvar _JsArray_foldl = F3(function(func, acc, array)\n{\n var length = array.length;\n\n for (var i = 0; i < length; i++)\n {\n acc = A2(func, array[i], acc);\n }\n\n return acc;\n});\n\nvar _JsArray_foldr = F3(function(func, acc, array)\n{\n for (var i = array.length - 1; i >= 0; i--)\n {\n acc = A2(func, array[i], acc);\n }\n\n return acc;\n});\n\nvar _JsArray_map = F2(function(func, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = func(array[i]);\n }\n\n return result;\n});\n\nvar _JsArray_indexedMap = F3(function(func, offset, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = A2(func, offset + i, array[i]);\n }\n\n return result;\n});\n\nvar _JsArray_slice = F3(function(from, to, array)\n{\n return array.slice(from, to);\n});\n\nvar _JsArray_appendN = F3(function(n, dest, source)\n{\n var destLen = dest.length;\n var itemsToCopy = n - destLen;\n\n if (itemsToCopy > source.length)\n {\n itemsToCopy = source.length;\n }\n\n var size = destLen + itemsToCopy;\n var result = new Array(size);\n\n for (var i = 0; i < destLen; i++)\n {\n result[i] = dest[i];\n }\n\n for (var i = 0; i < itemsToCopy; i++)\n {\n result[i + destLen] = source[i];\n }\n\n return result;\n});\n\n\n\n// LOG\n\nvar _Debug_log = F2(function(tag, value)\n{\n\treturn value;\n});\n\nvar _Debug_log_UNUSED = F2(function(tag, value)\n{\n\tconsole.log(tag + ': ' + _Debug_toString(value));\n\treturn value;\n});\n\n\n// TODOS\n\nfunction _Debug_todo(moduleName, region)\n{\n\treturn function(message) {\n\t\t_Debug_crash(8, moduleName, region, message);\n\t};\n}\n\nfunction _Debug_todoCase(moduleName, region, value)\n{\n\treturn function(message) {\n\t\t_Debug_crash(9, moduleName, region, value, message);\n\t};\n}\n\n\n// TO STRING\n\nfunction _Debug_toString(value)\n{\n\treturn '';\n}\n\nfunction _Debug_toString_UNUSED(value)\n{\n\treturn _Debug_toAnsiString(false, value);\n}\n\nfunction _Debug_toAnsiString(ansi, value)\n{\n\tif (typeof value === 'function')\n\t{\n\t\treturn _Debug_internalColor(ansi, '');\n\t}\n\n\tif (typeof value === 'boolean')\n\t{\n\t\treturn _Debug_ctorColor(ansi, value ? 'True' : 'False');\n\t}\n\n\tif (typeof value === 'number')\n\t{\n\t\treturn _Debug_numberColor(ansi, value + '');\n\t}\n\n\tif (value instanceof String)\n\t{\n\t\treturn _Debug_charColor(ansi, \"'\" + _Debug_addSlashes(value, true) + \"'\");\n\t}\n\n\tif (typeof value === 'string')\n\t{\n\t\treturn _Debug_stringColor(ansi, '\"' + _Debug_addSlashes(value, false) + '\"');\n\t}\n\n\tif (typeof value === 'object' && '$' in value)\n\t{\n\t\tvar tag = value.$;\n\n\t\tif (typeof tag === 'number')\n\t\t{\n\t\t\treturn _Debug_internalColor(ansi, '');\n\t\t}\n\n\t\tif (tag[0] === '#')\n\t\t{\n\t\t\tvar output = [];\n\t\t\tfor (var k in value)\n\t\t\t{\n\t\t\t\tif (k === '$') continue;\n\t\t\t\toutput.push(_Debug_toAnsiString(ansi, value[k]));\n\t\t\t}\n\t\t\treturn '(' + output.join(',') + ')';\n\t\t}\n\n\t\tif (tag === 'Set_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Set')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Set$toList(value));\n\t\t}\n\n\t\tif (tag === 'RBNode_elm_builtin' || tag === 'RBEmpty_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Dict')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Dict$toList(value));\n\t\t}\n\n\t\tif (tag === 'Array_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Array')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Array$toList(value));\n\t\t}\n\n\t\tif (tag === '::' || tag === '[]')\n\t\t{\n\t\t\tvar output = '[';\n\n\t\t\tvalue.b && (output += _Debug_toAnsiString(ansi, value.a), value = value.b)\n\n\t\t\tfor (; value.b; value = value.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\toutput += ',' + _Debug_toAnsiString(ansi, value.a);\n\t\t\t}\n\t\t\treturn output + ']';\n\t\t}\n\n\t\tvar output = '';\n\t\tfor (var i in value)\n\t\t{\n\t\t\tif (i === '$') continue;\n\t\t\tvar str = _Debug_toAnsiString(ansi, value[i]);\n\t\t\tvar c0 = str[0];\n\t\t\tvar parenless = c0 === '{' || c0 === '(' || c0 === '[' || c0 === '<' || c0 === '\"' || str.indexOf(' ') < 0;\n\t\t\toutput += ' ' + (parenless ? str : '(' + str + ')');\n\t\t}\n\t\treturn _Debug_ctorColor(ansi, tag) + output;\n\t}\n\n\tif (typeof DataView === 'function' && value instanceof DataView)\n\t{\n\t\treturn _Debug_stringColor(ansi, '<' + value.byteLength + ' bytes>');\n\t}\n\n\tif (typeof File !== 'undefined' && value instanceof File)\n\t{\n\t\treturn _Debug_internalColor(ansi, '<' + value.name + '>');\n\t}\n\n\tif (typeof value === 'object')\n\t{\n\t\tvar output = [];\n\t\tfor (var key in value)\n\t\t{\n\t\t\tvar field = key[0] === '_' ? key.slice(1) : key;\n\t\t\toutput.push(_Debug_fadeColor(ansi, field) + ' = ' + _Debug_toAnsiString(ansi, value[key]));\n\t\t}\n\t\tif (output.length === 0)\n\t\t{\n\t\t\treturn '{}';\n\t\t}\n\t\treturn '{ ' + output.join(', ') + ' }';\n\t}\n\n\treturn _Debug_internalColor(ansi, '');\n}\n\nfunction _Debug_addSlashes(str, isChar)\n{\n\tvar s = str\n\t\t.replace(/\\\\/g, '\\\\\\\\')\n\t\t.replace(/\\n/g, '\\\\n')\n\t\t.replace(/\\t/g, '\\\\t')\n\t\t.replace(/\\r/g, '\\\\r')\n\t\t.replace(/\\v/g, '\\\\v')\n\t\t.replace(/\\0/g, '\\\\0');\n\n\tif (isChar)\n\t{\n\t\treturn s.replace(/\\'/g, '\\\\\\'');\n\t}\n\telse\n\t{\n\t\treturn s.replace(/\\\"/g, '\\\\\"');\n\t}\n}\n\nfunction _Debug_ctorColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[96m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_numberColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[95m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_stringColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[93m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_charColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[92m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_fadeColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[37m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_internalColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[36m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_toHexDigit(n)\n{\n\treturn String.fromCharCode(n < 10 ? 48 + n : 55 + n);\n}\n\n\n// CRASH\n\n\nfunction _Debug_crash(identifier)\n{\n\tthrow new Error('https://github.com/elm/core/blob/1.0.0/hints/' + identifier + '.md');\n}\n\n\nfunction _Debug_crash_UNUSED(identifier, fact1, fact2, fact3, fact4)\n{\n\tswitch(identifier)\n\t{\n\t\tcase 0:\n\t\t\tthrow new Error('What node should I take over? In JavaScript I need something like:\\n\\n Elm.Main.init({\\n node: document.getElementById(\"elm-node\")\\n })\\n\\nYou need to do this with any Browser.sandbox or Browser.element program.');\n\n\t\tcase 1:\n\t\t\tthrow new Error('Browser.application programs cannot handle URLs like this:\\n\\n ' + document.location.href + '\\n\\nWhat is the root? The root of your file system? Try looking at this program with `elm reactor` or some other server.');\n\n\t\tcase 2:\n\t\t\tvar jsonErrorString = fact1;\n\t\t\tthrow new Error('Problem with the flags given to your Elm program on initialization.\\n\\n' + jsonErrorString);\n\n\t\tcase 3:\n\t\t\tvar portName = fact1;\n\t\t\tthrow new Error('There can only be one port named `' + portName + '`, but your program has multiple.');\n\n\t\tcase 4:\n\t\t\tvar portName = fact1;\n\t\t\tvar problem = fact2;\n\t\t\tthrow new Error('Trying to send an unexpected type of value through port `' + portName + '`:\\n' + problem);\n\n\t\tcase 5:\n\t\t\tthrow new Error('Trying to use `(==)` on functions.\\nThere is no way to know if functions are \"the same\" in the Elm sense.\\nRead more about this at https://package.elm-lang.org/packages/elm/core/latest/Basics#== which describes why it is this way and what the better version will look like.');\n\n\t\tcase 6:\n\t\t\tvar moduleName = fact1;\n\t\t\tthrow new Error('Your page is loading multiple Elm scripts with a module named ' + moduleName + '. Maybe a duplicate script is getting loaded accidentally? If not, rename one of them so I know which is which!');\n\n\t\tcase 8:\n\t\t\tvar moduleName = fact1;\n\t\t\tvar region = fact2;\n\t\t\tvar message = fact3;\n\t\t\tthrow new Error('TODO in module `' + moduleName + '` ' + _Debug_regionToString(region) + '\\n\\n' + message);\n\n\t\tcase 9:\n\t\t\tvar moduleName = fact1;\n\t\t\tvar region = fact2;\n\t\t\tvar value = fact3;\n\t\t\tvar message = fact4;\n\t\t\tthrow new Error(\n\t\t\t\t'TODO in module `' + moduleName + '` from the `case` expression '\n\t\t\t\t+ _Debug_regionToString(region) + '\\n\\nIt received the following value:\\n\\n '\n\t\t\t\t+ _Debug_toString(value).replace('\\n', '\\n ')\n\t\t\t\t+ '\\n\\nBut the branch that handles it says:\\n\\n ' + message.replace('\\n', '\\n ')\n\t\t\t);\n\n\t\tcase 10:\n\t\t\tthrow new Error('Bug in https://github.com/elm/virtual-dom/issues');\n\n\t\tcase 11:\n\t\t\tthrow new Error('Cannot perform mod 0. Division by zero error.');\n\t}\n}\n\nfunction _Debug_regionToString(region)\n{\n\tif (region.c3.aD === region.dt.aD)\n\t{\n\t\treturn 'on line ' + region.c3.aD;\n\t}\n\treturn 'on lines ' + region.c3.aD + ' through ' + region.dt.aD;\n}\n\n\n\n// MATH\n\nvar _Basics_add = F2(function(a, b) { return a + b; });\nvar _Basics_sub = F2(function(a, b) { return a - b; });\nvar _Basics_mul = F2(function(a, b) { return a * b; });\nvar _Basics_fdiv = F2(function(a, b) { return a / b; });\nvar _Basics_idiv = F2(function(a, b) { return (a / b) | 0; });\nvar _Basics_pow = F2(Math.pow);\n\nvar _Basics_remainderBy = F2(function(b, a) { return a % b; });\n\n// https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/divmodnote-letter.pdf\nvar _Basics_modBy = F2(function(modulus, x)\n{\n\tvar answer = x % modulus;\n\treturn modulus === 0\n\t\t? _Debug_crash(11)\n\t\t:\n\t((answer > 0 && modulus < 0) || (answer < 0 && modulus > 0))\n\t\t? answer + modulus\n\t\t: answer;\n});\n\n\n// TRIGONOMETRY\n\nvar _Basics_pi = Math.PI;\nvar _Basics_e = Math.E;\nvar _Basics_cos = Math.cos;\nvar _Basics_sin = Math.sin;\nvar _Basics_tan = Math.tan;\nvar _Basics_acos = Math.acos;\nvar _Basics_asin = Math.asin;\nvar _Basics_atan = Math.atan;\nvar _Basics_atan2 = F2(Math.atan2);\n\n\n// MORE MATH\n\nfunction _Basics_toFloat(x) { return x; }\nfunction _Basics_truncate(n) { return n | 0; }\nfunction _Basics_isInfinite(n) { return n === Infinity || n === -Infinity; }\n\nvar _Basics_ceiling = Math.ceil;\nvar _Basics_floor = Math.floor;\nvar _Basics_round = Math.round;\nvar _Basics_sqrt = Math.sqrt;\nvar _Basics_log = Math.log;\nvar _Basics_isNaN = isNaN;\n\n\n// BOOLEANS\n\nfunction _Basics_not(bool) { return !bool; }\nvar _Basics_and = F2(function(a, b) { return a && b; });\nvar _Basics_or = F2(function(a, b) { return a || b; });\nvar _Basics_xor = F2(function(a, b) { return a !== b; });\n\n\n\nvar _String_cons = F2(function(chr, str)\n{\n\treturn chr + str;\n});\n\nfunction _String_uncons(string)\n{\n\tvar word = string.charCodeAt(0);\n\treturn !isNaN(word)\n\t\t? $elm$core$Maybe$Just(\n\t\t\t0xD800 <= word && word <= 0xDBFF\n\t\t\t\t? _Utils_Tuple2(_Utils_chr(string[0] + string[1]), string.slice(2))\n\t\t\t\t: _Utils_Tuple2(_Utils_chr(string[0]), string.slice(1))\n\t\t)\n\t\t: $elm$core$Maybe$Nothing;\n}\n\nvar _String_append = F2(function(a, b)\n{\n\treturn a + b;\n});\n\nfunction _String_length(str)\n{\n\treturn str.length;\n}\n\nvar _String_map = F2(function(func, string)\n{\n\tvar len = string.length;\n\tvar array = new Array(len);\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tarray[i] = func(_Utils_chr(string[i] + string[i+1]));\n\t\t\ti += 2;\n\t\t\tcontinue;\n\t\t}\n\t\tarray[i] = func(_Utils_chr(string[i]));\n\t\ti++;\n\t}\n\treturn array.join('');\n});\n\nvar _String_filter = F2(function(isGood, str)\n{\n\tvar arr = [];\n\tvar len = str.length;\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar char = str[i];\n\t\tvar word = str.charCodeAt(i);\n\t\ti++;\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tchar += str[i];\n\t\t\ti++;\n\t\t}\n\n\t\tif (isGood(_Utils_chr(char)))\n\t\t{\n\t\t\tarr.push(char);\n\t\t}\n\t}\n\treturn arr.join('');\n});\n\nfunction _String_reverse(str)\n{\n\tvar len = str.length;\n\tvar arr = new Array(len);\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar word = str.charCodeAt(i);\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tarr[len - i] = str[i + 1];\n\t\t\ti++;\n\t\t\tarr[len - i] = str[i - 1];\n\t\t\ti++;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tarr[len - i] = str[i];\n\t\t\ti++;\n\t\t}\n\t}\n\treturn arr.join('');\n}\n\nvar _String_foldl = F3(function(func, state, string)\n{\n\tvar len = string.length;\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\ti++;\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tchar += string[i];\n\t\t\ti++;\n\t\t}\n\t\tstate = A2(func, _Utils_chr(char), state);\n\t}\n\treturn state;\n});\n\nvar _String_foldr = F3(function(func, state, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tstate = A2(func, _Utils_chr(char), state);\n\t}\n\treturn state;\n});\n\nvar _String_split = F2(function(sep, str)\n{\n\treturn str.split(sep);\n});\n\nvar _String_join = F2(function(sep, strs)\n{\n\treturn strs.join(sep);\n});\n\nvar _String_slice = F3(function(start, end, str) {\n\treturn str.slice(start, end);\n});\n\nfunction _String_trim(str)\n{\n\treturn str.trim();\n}\n\nfunction _String_trimLeft(str)\n{\n\treturn str.replace(/^\\s+/, '');\n}\n\nfunction _String_trimRight(str)\n{\n\treturn str.replace(/\\s+$/, '');\n}\n\nfunction _String_words(str)\n{\n\treturn _List_fromArray(str.trim().split(/\\s+/g));\n}\n\nfunction _String_lines(str)\n{\n\treturn _List_fromArray(str.split(/\\r\\n|\\r|\\n/g));\n}\n\nfunction _String_toUpper(str)\n{\n\treturn str.toUpperCase();\n}\n\nfunction _String_toLower(str)\n{\n\treturn str.toLowerCase();\n}\n\nvar _String_any = F2(function(isGood, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tif (isGood(_Utils_chr(char)))\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n});\n\nvar _String_all = F2(function(isGood, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tif (!isGood(_Utils_chr(char)))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n});\n\nvar _String_contains = F2(function(sub, str)\n{\n\treturn str.indexOf(sub) > -1;\n});\n\nvar _String_startsWith = F2(function(sub, str)\n{\n\treturn str.indexOf(sub) === 0;\n});\n\nvar _String_endsWith = F2(function(sub, str)\n{\n\treturn str.length >= sub.length &&\n\t\tstr.lastIndexOf(sub) === str.length - sub.length;\n});\n\nvar _String_indexes = F2(function(sub, str)\n{\n\tvar subLen = sub.length;\n\n\tif (subLen < 1)\n\t{\n\t\treturn _List_Nil;\n\t}\n\n\tvar i = 0;\n\tvar is = [];\n\n\twhile ((i = str.indexOf(sub, i)) > -1)\n\t{\n\t\tis.push(i);\n\t\ti = i + subLen;\n\t}\n\n\treturn _List_fromArray(is);\n});\n\n\n// TO STRING\n\nfunction _String_fromNumber(number)\n{\n\treturn number + '';\n}\n\n\n// INT CONVERSIONS\n\nfunction _String_toInt(str)\n{\n\tvar total = 0;\n\tvar code0 = str.charCodeAt(0);\n\tvar start = code0 == 0x2B /* + */ || code0 == 0x2D /* - */ ? 1 : 0;\n\n\tfor (var i = start; i < str.length; ++i)\n\t{\n\t\tvar code = str.charCodeAt(i);\n\t\tif (code < 0x30 || 0x39 < code)\n\t\t{\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t}\n\t\ttotal = 10 * total + code - 0x30;\n\t}\n\n\treturn i == start\n\t\t? $elm$core$Maybe$Nothing\n\t\t: $elm$core$Maybe$Just(code0 == 0x2D ? -total : total);\n}\n\n\n// FLOAT CONVERSIONS\n\nfunction _String_toFloat(s)\n{\n\t// check if it is a hex, octal, or binary number\n\tif (s.length === 0 || /[\\sxbo]/.test(s))\n\t{\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n\tvar n = +s;\n\t// faster isNaN check\n\treturn n === n ? $elm$core$Maybe$Just(n) : $elm$core$Maybe$Nothing;\n}\n\nfunction _String_fromList(chars)\n{\n\treturn _List_toArray(chars).join('');\n}\n\n\n\n\nfunction _Char_toCode(char)\n{\n\tvar code = char.charCodeAt(0);\n\tif (0xD800 <= code && code <= 0xDBFF)\n\t{\n\t\treturn (code - 0xD800) * 0x400 + char.charCodeAt(1) - 0xDC00 + 0x10000\n\t}\n\treturn code;\n}\n\nfunction _Char_fromCode(code)\n{\n\treturn _Utils_chr(\n\t\t(code < 0 || 0x10FFFF < code)\n\t\t\t? '\\uFFFD'\n\t\t\t:\n\t\t(code <= 0xFFFF)\n\t\t\t? String.fromCharCode(code)\n\t\t\t:\n\t\t(code -= 0x10000,\n\t\t\tString.fromCharCode(Math.floor(code / 0x400) + 0xD800, code % 0x400 + 0xDC00)\n\t\t)\n\t);\n}\n\nfunction _Char_toUpper(char)\n{\n\treturn _Utils_chr(char.toUpperCase());\n}\n\nfunction _Char_toLower(char)\n{\n\treturn _Utils_chr(char.toLowerCase());\n}\n\nfunction _Char_toLocaleUpper(char)\n{\n\treturn _Utils_chr(char.toLocaleUpperCase());\n}\n\nfunction _Char_toLocaleLower(char)\n{\n\treturn _Utils_chr(char.toLocaleLowerCase());\n}\n\n\n\n/**_UNUSED/\nfunction _Json_errorToString(error)\n{\n\treturn $elm$json$Json$Decode$errorToString(error);\n}\n//*/\n\n\n// CORE DECODERS\n\nfunction _Json_succeed(msg)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: msg\n\t};\n}\n\nfunction _Json_fail(msg)\n{\n\treturn {\n\t\t$: 1,\n\t\ta: msg\n\t};\n}\n\nfunction _Json_decodePrim(decoder)\n{\n\treturn { $: 2, b: decoder };\n}\n\nvar _Json_decodeInt = _Json_decodePrim(function(value) {\n\treturn (typeof value !== 'number')\n\t\t? _Json_expecting('an INT', value)\n\t\t:\n\t(-2147483647 < value && value < 2147483647 && (value | 0) === value)\n\t\t? $elm$core$Result$Ok(value)\n\t\t:\n\t(isFinite(value) && !(value % 1))\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('an INT', value);\n});\n\nvar _Json_decodeBool = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'boolean')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('a BOOL', value);\n});\n\nvar _Json_decodeFloat = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'number')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('a FLOAT', value);\n});\n\nvar _Json_decodeValue = _Json_decodePrim(function(value) {\n\treturn $elm$core$Result$Ok(_Json_wrap(value));\n});\n\nvar _Json_decodeString = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'string')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: (value instanceof String)\n\t\t\t? $elm$core$Result$Ok(value + '')\n\t\t\t: _Json_expecting('a STRING', value);\n});\n\nfunction _Json_decodeList(decoder) { return { $: 3, b: decoder }; }\nfunction _Json_decodeArray(decoder) { return { $: 4, b: decoder }; }\n\nfunction _Json_decodeNull(value) { return { $: 5, c: value }; }\n\nvar _Json_decodeField = F2(function(field, decoder)\n{\n\treturn {\n\t\t$: 6,\n\t\td: field,\n\t\tb: decoder\n\t};\n});\n\nvar _Json_decodeIndex = F2(function(index, decoder)\n{\n\treturn {\n\t\t$: 7,\n\t\te: index,\n\t\tb: decoder\n\t};\n});\n\nfunction _Json_decodeKeyValuePairs(decoder)\n{\n\treturn {\n\t\t$: 8,\n\t\tb: decoder\n\t};\n}\n\nfunction _Json_mapMany(f, decoders)\n{\n\treturn {\n\t\t$: 9,\n\t\tf: f,\n\t\tg: decoders\n\t};\n}\n\nvar _Json_andThen = F2(function(callback, decoder)\n{\n\treturn {\n\t\t$: 10,\n\t\tb: decoder,\n\t\th: callback\n\t};\n});\n\nfunction _Json_oneOf(decoders)\n{\n\treturn {\n\t\t$: 11,\n\t\tg: decoders\n\t};\n}\n\n\n// DECODING OBJECTS\n\nvar _Json_map1 = F2(function(f, d1)\n{\n\treturn _Json_mapMany(f, [d1]);\n});\n\nvar _Json_map2 = F3(function(f, d1, d2)\n{\n\treturn _Json_mapMany(f, [d1, d2]);\n});\n\nvar _Json_map3 = F4(function(f, d1, d2, d3)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3]);\n});\n\nvar _Json_map4 = F5(function(f, d1, d2, d3, d4)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4]);\n});\n\nvar _Json_map5 = F6(function(f, d1, d2, d3, d4, d5)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5]);\n});\n\nvar _Json_map6 = F7(function(f, d1, d2, d3, d4, d5, d6)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6]);\n});\n\nvar _Json_map7 = F8(function(f, d1, d2, d3, d4, d5, d6, d7)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7]);\n});\n\nvar _Json_map8 = F9(function(f, d1, d2, d3, d4, d5, d6, d7, d8)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7, d8]);\n});\n\n\n// DECODE\n\nvar _Json_runOnString = F2(function(decoder, string)\n{\n\ttry\n\t{\n\t\tvar value = JSON.parse(string);\n\t\treturn _Json_runHelp(decoder, value);\n\t}\n\tcatch (e)\n\t{\n\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'This is not valid JSON! ' + e.message, _Json_wrap(string)));\n\t}\n});\n\nvar _Json_run = F2(function(decoder, value)\n{\n\treturn _Json_runHelp(decoder, _Json_unwrap(value));\n});\n\nfunction _Json_runHelp(decoder, value)\n{\n\tswitch (decoder.$)\n\t{\n\t\tcase 2:\n\t\t\treturn decoder.b(value);\n\n\t\tcase 5:\n\t\t\treturn (value === null)\n\t\t\t\t? $elm$core$Result$Ok(decoder.c)\n\t\t\t\t: _Json_expecting('null', value);\n\n\t\tcase 3:\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('a LIST', value);\n\t\t\t}\n\t\t\treturn _Json_runArrayDecoder(decoder.b, value, _List_fromArray);\n\n\t\tcase 4:\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an ARRAY', value);\n\t\t\t}\n\t\t\treturn _Json_runArrayDecoder(decoder.b, value, _Json_toElmArray);\n\n\t\tcase 6:\n\t\t\tvar field = decoder.d;\n\t\t\tif (typeof value !== 'object' || value === null || !(field in value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an OBJECT with a field named `' + field + '`', value);\n\t\t\t}\n\t\t\tvar result = _Json_runHelp(decoder.b, value[field]);\n\t\t\treturn ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, field, result.a));\n\n\t\tcase 7:\n\t\t\tvar index = decoder.e;\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an ARRAY', value);\n\t\t\t}\n\t\t\tif (index >= value.length)\n\t\t\t{\n\t\t\t\treturn _Json_expecting('a LONGER array. Need index ' + index + ' but only see ' + value.length + ' entries', value);\n\t\t\t}\n\t\t\tvar result = _Json_runHelp(decoder.b, value[index]);\n\t\t\treturn ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, index, result.a));\n\n\t\tcase 8:\n\t\t\tif (typeof value !== 'object' || value === null || _Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an OBJECT', value);\n\t\t\t}\n\n\t\t\tvar keyValuePairs = _List_Nil;\n\t\t\t// TODO test perf of Object.keys and switch when support is good enough\n\t\t\tfor (var key in value)\n\t\t\t{\n\t\t\t\tif (value.hasOwnProperty(key))\n\t\t\t\t{\n\t\t\t\t\tvar result = _Json_runHelp(decoder.b, value[key]);\n\t\t\t\t\tif (!$elm$core$Result$isOk(result))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, key, result.a));\n\t\t\t\t\t}\n\t\t\t\t\tkeyValuePairs = _List_Cons(_Utils_Tuple2(key, result.a), keyValuePairs);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn $elm$core$Result$Ok($elm$core$List$reverse(keyValuePairs));\n\n\t\tcase 9:\n\t\t\tvar answer = decoder.f;\n\t\t\tvar decoders = decoder.g;\n\t\t\tfor (var i = 0; i < decoders.length; i++)\n\t\t\t{\n\t\t\t\tvar result = _Json_runHelp(decoders[i], value);\n\t\t\t\tif (!$elm$core$Result$isOk(result))\n\t\t\t\t{\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tanswer = answer(result.a);\n\t\t\t}\n\t\t\treturn $elm$core$Result$Ok(answer);\n\n\t\tcase 10:\n\t\t\tvar result = _Json_runHelp(decoder.b, value);\n\t\t\treturn (!$elm$core$Result$isOk(result))\n\t\t\t\t? result\n\t\t\t\t: _Json_runHelp(decoder.h(result.a), value);\n\n\t\tcase 11:\n\t\t\tvar errors = _List_Nil;\n\t\t\tfor (var temp = decoder.g; temp.b; temp = temp.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\tvar result = _Json_runHelp(temp.a, value);\n\t\t\t\tif ($elm$core$Result$isOk(result))\n\t\t\t\t{\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\terrors = _List_Cons(result.a, errors);\n\t\t\t}\n\t\t\treturn $elm$core$Result$Err($elm$json$Json$Decode$OneOf($elm$core$List$reverse(errors)));\n\n\t\tcase 1:\n\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, decoder.a, _Json_wrap(value)));\n\n\t\tcase 0:\n\t\t\treturn $elm$core$Result$Ok(decoder.a);\n\t}\n}\n\nfunction _Json_runArrayDecoder(decoder, value, toElmValue)\n{\n\tvar len = value.length;\n\tvar array = new Array(len);\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tvar result = _Json_runHelp(decoder, value[i]);\n\t\tif (!$elm$core$Result$isOk(result))\n\t\t{\n\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, i, result.a));\n\t\t}\n\t\tarray[i] = result.a;\n\t}\n\treturn $elm$core$Result$Ok(toElmValue(array));\n}\n\nfunction _Json_isArray(value)\n{\n\treturn Array.isArray(value) || (typeof FileList !== 'undefined' && value instanceof FileList);\n}\n\nfunction _Json_toElmArray(array)\n{\n\treturn A2($elm$core$Array$initialize, array.length, function(i) { return array[i]; });\n}\n\nfunction _Json_expecting(type, value)\n{\n\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'Expecting ' + type, _Json_wrap(value)));\n}\n\n\n// EQUALITY\n\nfunction _Json_equality(x, y)\n{\n\tif (x === y)\n\t{\n\t\treturn true;\n\t}\n\n\tif (x.$ !== y.$)\n\t{\n\t\treturn false;\n\t}\n\n\tswitch (x.$)\n\t{\n\t\tcase 0:\n\t\tcase 1:\n\t\t\treturn x.a === y.a;\n\n\t\tcase 2:\n\t\t\treturn x.b === y.b;\n\n\t\tcase 5:\n\t\t\treturn x.c === y.c;\n\n\t\tcase 3:\n\t\tcase 4:\n\t\tcase 8:\n\t\t\treturn _Json_equality(x.b, y.b);\n\n\t\tcase 6:\n\t\t\treturn x.d === y.d && _Json_equality(x.b, y.b);\n\n\t\tcase 7:\n\t\t\treturn x.e === y.e && _Json_equality(x.b, y.b);\n\n\t\tcase 9:\n\t\t\treturn x.f === y.f && _Json_listEquality(x.g, y.g);\n\n\t\tcase 10:\n\t\t\treturn x.h === y.h && _Json_equality(x.b, y.b);\n\n\t\tcase 11:\n\t\t\treturn _Json_listEquality(x.g, y.g);\n\t}\n}\n\nfunction _Json_listEquality(aDecoders, bDecoders)\n{\n\tvar len = aDecoders.length;\n\tif (len !== bDecoders.length)\n\t{\n\t\treturn false;\n\t}\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tif (!_Json_equality(aDecoders[i], bDecoders[i]))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// ENCODE\n\nvar _Json_encode = F2(function(indentLevel, value)\n{\n\treturn JSON.stringify(_Json_unwrap(value), null, indentLevel) + '';\n});\n\nfunction _Json_wrap_UNUSED(value) { return { $: 0, a: value }; }\nfunction _Json_unwrap_UNUSED(value) { return value.a; }\n\nfunction _Json_wrap(value) { return value; }\nfunction _Json_unwrap(value) { return value; }\n\nfunction _Json_emptyArray() { return []; }\nfunction _Json_emptyObject() { return {}; }\n\nvar _Json_addField = F3(function(key, value, object)\n{\n\tobject[key] = _Json_unwrap(value);\n\treturn object;\n});\n\nfunction _Json_addEntry(func)\n{\n\treturn F2(function(entry, array)\n\t{\n\t\tarray.push(_Json_unwrap(func(entry)));\n\t\treturn array;\n\t});\n}\n\nvar _Json_encodeNull = _Json_wrap(null);\n\n\n\n// TASKS\n\nfunction _Scheduler_succeed(value)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: value\n\t};\n}\n\nfunction _Scheduler_fail(error)\n{\n\treturn {\n\t\t$: 1,\n\t\ta: error\n\t};\n}\n\nfunction _Scheduler_binding(callback)\n{\n\treturn {\n\t\t$: 2,\n\t\tb: callback,\n\t\tc: null\n\t};\n}\n\nvar _Scheduler_andThen = F2(function(callback, task)\n{\n\treturn {\n\t\t$: 3,\n\t\tb: callback,\n\t\td: task\n\t};\n});\n\nvar _Scheduler_onError = F2(function(callback, task)\n{\n\treturn {\n\t\t$: 4,\n\t\tb: callback,\n\t\td: task\n\t};\n});\n\nfunction _Scheduler_receive(callback)\n{\n\treturn {\n\t\t$: 5,\n\t\tb: callback\n\t};\n}\n\n\n// PROCESSES\n\nvar _Scheduler_guid = 0;\n\nfunction _Scheduler_rawSpawn(task)\n{\n\tvar proc = {\n\t\t$: 0,\n\t\te: _Scheduler_guid++,\n\t\tf: task,\n\t\tg: null,\n\t\th: []\n\t};\n\n\t_Scheduler_enqueue(proc);\n\n\treturn proc;\n}\n\nfunction _Scheduler_spawn(task)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tcallback(_Scheduler_succeed(_Scheduler_rawSpawn(task)));\n\t});\n}\n\nfunction _Scheduler_rawSend(proc, msg)\n{\n\tproc.h.push(msg);\n\t_Scheduler_enqueue(proc);\n}\n\nvar _Scheduler_send = F2(function(proc, msg)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\t_Scheduler_rawSend(proc, msg);\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n});\n\nfunction _Scheduler_kill(proc)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tvar task = proc.f;\n\t\tif (task.$ === 2 && task.c)\n\t\t{\n\t\t\ttask.c();\n\t\t}\n\n\t\tproc.f = null;\n\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n}\n\n\n/* STEP PROCESSES\n\ntype alias Process =\n { $ : tag\n , id : unique_id\n , root : Task\n , stack : null | { $: SUCCEED | FAIL, a: callback, b: stack }\n , mailbox : [msg]\n }\n\n*/\n\n\nvar _Scheduler_working = false;\nvar _Scheduler_queue = [];\n\n\nfunction _Scheduler_enqueue(proc)\n{\n\t_Scheduler_queue.push(proc);\n\tif (_Scheduler_working)\n\t{\n\t\treturn;\n\t}\n\t_Scheduler_working = true;\n\twhile (proc = _Scheduler_queue.shift())\n\t{\n\t\t_Scheduler_step(proc);\n\t}\n\t_Scheduler_working = false;\n}\n\n\nfunction _Scheduler_step(proc)\n{\n\twhile (proc.f)\n\t{\n\t\tvar rootTag = proc.f.$;\n\t\tif (rootTag === 0 || rootTag === 1)\n\t\t{\n\t\t\twhile (proc.g && proc.g.$ !== rootTag)\n\t\t\t{\n\t\t\t\tproc.g = proc.g.i;\n\t\t\t}\n\t\t\tif (!proc.g)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tproc.f = proc.g.b(proc.f.a);\n\t\t\tproc.g = proc.g.i;\n\t\t}\n\t\telse if (rootTag === 2)\n\t\t{\n\t\t\tproc.f.c = proc.f.b(function(newRoot) {\n\t\t\t\tproc.f = newRoot;\n\t\t\t\t_Scheduler_enqueue(proc);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\telse if (rootTag === 5)\n\t\t{\n\t\t\tif (proc.h.length === 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tproc.f = proc.f.b(proc.h.shift());\n\t\t}\n\t\telse // if (rootTag === 3 || rootTag === 4)\n\t\t{\n\t\t\tproc.g = {\n\t\t\t\t$: rootTag === 3 ? 0 : 1,\n\t\t\t\tb: proc.f.b,\n\t\t\t\ti: proc.g\n\t\t\t};\n\t\t\tproc.f = proc.f.d;\n\t\t}\n\t}\n}\n\n\n\nfunction _Process_sleep(time)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tvar id = setTimeout(function() {\n\t\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t\t}, time);\n\n\t\treturn function() { clearTimeout(id); };\n\t});\n}\n\n\n\n\n// PROGRAMS\n\n\nvar _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.fa,\n\t\timpl.fZ,\n\t\timpl.fN,\n\t\tfunction() { return function() {} }\n\t);\n});\n\n\n\n// INITIALIZE A PROGRAM\n\n\nfunction _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)\n{\n\tvar result = A2(_Json_run, flagDecoder, _Json_wrap(args ? args['flags'] : undefined));\n\t$elm$core$Result$isOk(result) || _Debug_crash(2 /**_UNUSED/, _Json_errorToString(result.a) /**/);\n\tvar managers = {};\n\tvar initPair = init(result.a);\n\tvar model = initPair.a;\n\tvar stepper = stepperBuilder(sendToApp, model);\n\tvar ports = _Platform_setupEffects(managers, sendToApp);\n\n\tfunction sendToApp(msg, viewMetadata)\n\t{\n\t\tvar pair = A2(update, msg, model);\n\t\tstepper(model = pair.a, viewMetadata);\n\t\t_Platform_enqueueEffects(managers, pair.b, subscriptions(model));\n\t}\n\n\t_Platform_enqueueEffects(managers, initPair.b, subscriptions(model));\n\n\treturn ports ? { ports: ports } : {};\n}\n\n\n\n// TRACK PRELOADS\n//\n// This is used by code in elm/browser and elm/http\n// to register any HTTP requests that are triggered by init.\n//\n\n\nvar _Platform_preload;\n\n\nfunction _Platform_registerPreload(url)\n{\n\t_Platform_preload.add(url);\n}\n\n\n\n// EFFECT MANAGERS\n\n\nvar _Platform_effectManagers = {};\n\n\nfunction _Platform_setupEffects(managers, sendToApp)\n{\n\tvar ports;\n\n\t// setup all necessary effect managers\n\tfor (var key in _Platform_effectManagers)\n\t{\n\t\tvar manager = _Platform_effectManagers[key];\n\n\t\tif (manager.a)\n\t\t{\n\t\t\tports = ports || {};\n\t\t\tports[key] = manager.a(key, sendToApp);\n\t\t}\n\n\t\tmanagers[key] = _Platform_instantiateManager(manager, sendToApp);\n\t}\n\n\treturn ports;\n}\n\n\nfunction _Platform_createManager(init, onEffects, onSelfMsg, cmdMap, subMap)\n{\n\treturn {\n\t\tb: init,\n\t\tc: onEffects,\n\t\td: onSelfMsg,\n\t\te: cmdMap,\n\t\tf: subMap\n\t};\n}\n\n\nfunction _Platform_instantiateManager(info, sendToApp)\n{\n\tvar router = {\n\t\tg: sendToApp,\n\t\th: undefined\n\t};\n\n\tvar onEffects = info.c;\n\tvar onSelfMsg = info.d;\n\tvar cmdMap = info.e;\n\tvar subMap = info.f;\n\n\tfunction loop(state)\n\t{\n\t\treturn A2(_Scheduler_andThen, loop, _Scheduler_receive(function(msg)\n\t\t{\n\t\t\tvar value = msg.a;\n\n\t\t\tif (msg.$ === 0)\n\t\t\t{\n\t\t\t\treturn A3(onSelfMsg, router, value, state);\n\t\t\t}\n\n\t\t\treturn cmdMap && subMap\n\t\t\t\t? A4(onEffects, router, value.i, value.j, state)\n\t\t\t\t: A3(onEffects, router, cmdMap ? value.i : value.j, state);\n\t\t}));\n\t}\n\n\treturn router.h = _Scheduler_rawSpawn(A2(_Scheduler_andThen, loop, info.b));\n}\n\n\n\n// ROUTING\n\n\nvar _Platform_sendToApp = F2(function(router, msg)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\trouter.g(msg);\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n});\n\n\nvar _Platform_sendToSelf = F2(function(router, msg)\n{\n\treturn A2(_Scheduler_send, router.h, {\n\t\t$: 0,\n\t\ta: msg\n\t});\n});\n\n\n\n// BAGS\n\n\nfunction _Platform_leaf(home)\n{\n\treturn function(value)\n\t{\n\t\treturn {\n\t\t\t$: 1,\n\t\t\tk: home,\n\t\t\tl: value\n\t\t};\n\t};\n}\n\n\nfunction _Platform_batch(list)\n{\n\treturn {\n\t\t$: 2,\n\t\tm: list\n\t};\n}\n\n\nvar _Platform_map = F2(function(tagger, bag)\n{\n\treturn {\n\t\t$: 3,\n\t\tn: tagger,\n\t\to: bag\n\t}\n});\n\n\n\n// PIPE BAGS INTO EFFECT MANAGERS\n//\n// Effects must be queued!\n//\n// Say your init contains a synchronous command, like Time.now or Time.here\n//\n// - This will produce a batch of effects (FX_1)\n// - The synchronous task triggers the subsequent `update` call\n// - This will produce a batch of effects (FX_2)\n//\n// If we just start dispatching FX_2, subscriptions from FX_2 can be processed\n// before subscriptions from FX_1. No good! Earlier versions of this code had\n// this problem, leading to these reports:\n//\n// https://github.com/elm/core/issues/980\n// https://github.com/elm/core/pull/981\n// https://github.com/elm/compiler/issues/1776\n//\n// The queue is necessary to avoid ordering issues for synchronous commands.\n\n\n// Why use true/false here? Why not just check the length of the queue?\n// The goal is to detect \"are we currently dispatching effects?\" If we\n// are, we need to bail and let the ongoing while loop handle things.\n//\n// Now say the queue has 1 element. When we dequeue the final element,\n// the queue will be empty, but we are still actively dispatching effects.\n// So you could get queue jumping in a really tricky category of cases.\n//\nvar _Platform_effectsQueue = [];\nvar _Platform_effectsActive = false;\n\n\nfunction _Platform_enqueueEffects(managers, cmdBag, subBag)\n{\n\t_Platform_effectsQueue.push({ p: managers, q: cmdBag, r: subBag });\n\n\tif (_Platform_effectsActive) return;\n\n\t_Platform_effectsActive = true;\n\tfor (var fx; fx = _Platform_effectsQueue.shift(); )\n\t{\n\t\t_Platform_dispatchEffects(fx.p, fx.q, fx.r);\n\t}\n\t_Platform_effectsActive = false;\n}\n\n\nfunction _Platform_dispatchEffects(managers, cmdBag, subBag)\n{\n\tvar effectsDict = {};\n\t_Platform_gatherEffects(true, cmdBag, effectsDict, null);\n\t_Platform_gatherEffects(false, subBag, effectsDict, null);\n\n\tfor (var home in managers)\n\t{\n\t\t_Scheduler_rawSend(managers[home], {\n\t\t\t$: 'fx',\n\t\t\ta: effectsDict[home] || { i: _List_Nil, j: _List_Nil }\n\t\t});\n\t}\n}\n\n\nfunction _Platform_gatherEffects(isCmd, bag, effectsDict, taggers)\n{\n\tswitch (bag.$)\n\t{\n\t\tcase 1:\n\t\t\tvar home = bag.k;\n\t\t\tvar effect = _Platform_toEffect(isCmd, home, taggers, bag.l);\n\t\t\teffectsDict[home] = _Platform_insert(isCmd, effect, effectsDict[home]);\n\t\t\treturn;\n\n\t\tcase 2:\n\t\t\tfor (var list = bag.m; list.b; list = list.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\t_Platform_gatherEffects(isCmd, list.a, effectsDict, taggers);\n\t\t\t}\n\t\t\treturn;\n\n\t\tcase 3:\n\t\t\t_Platform_gatherEffects(isCmd, bag.o, effectsDict, {\n\t\t\t\ts: bag.n,\n\t\t\t\tt: taggers\n\t\t\t});\n\t\t\treturn;\n\t}\n}\n\n\nfunction _Platform_toEffect(isCmd, home, taggers, value)\n{\n\tfunction applyTaggers(x)\n\t{\n\t\tfor (var temp = taggers; temp; temp = temp.t)\n\t\t{\n\t\t\tx = temp.s(x);\n\t\t}\n\t\treturn x;\n\t}\n\n\tvar map = isCmd\n\t\t? _Platform_effectManagers[home].e\n\t\t: _Platform_effectManagers[home].f;\n\n\treturn A2(map, applyTaggers, value)\n}\n\n\nfunction _Platform_insert(isCmd, newEffect, effects)\n{\n\teffects = effects || { i: _List_Nil, j: _List_Nil };\n\n\tisCmd\n\t\t? (effects.i = _List_Cons(newEffect, effects.i))\n\t\t: (effects.j = _List_Cons(newEffect, effects.j));\n\n\treturn effects;\n}\n\n\n\n// PORTS\n\n\nfunction _Platform_checkPortName(name)\n{\n\tif (_Platform_effectManagers[name])\n\t{\n\t\t_Debug_crash(3, name)\n\t}\n}\n\n\n\n// OUTGOING PORTS\n\n\nfunction _Platform_outgoingPort(name, converter)\n{\n\t_Platform_checkPortName(name);\n\t_Platform_effectManagers[name] = {\n\t\te: _Platform_outgoingPortMap,\n\t\tu: converter,\n\t\ta: _Platform_setupOutgoingPort\n\t};\n\treturn _Platform_leaf(name);\n}\n\n\nvar _Platform_outgoingPortMap = F2(function(tagger, value) { return value; });\n\n\nfunction _Platform_setupOutgoingPort(name)\n{\n\tvar subs = [];\n\tvar converter = _Platform_effectManagers[name].u;\n\n\t// CREATE MANAGER\n\n\tvar init = _Process_sleep(0);\n\n\t_Platform_effectManagers[name].b = init;\n\t_Platform_effectManagers[name].c = F3(function(router, cmdList, state)\n\t{\n\t\tfor ( ; cmdList.b; cmdList = cmdList.b) // WHILE_CONS\n\t\t{\n\t\t\t// grab a separate reference to subs in case unsubscribe is called\n\t\t\tvar currentSubs = subs;\n\t\t\tvar value = _Json_unwrap(converter(cmdList.a));\n\t\t\tfor (var i = 0; i < currentSubs.length; i++)\n\t\t\t{\n\t\t\t\tcurrentSubs[i](value);\n\t\t\t}\n\t\t}\n\t\treturn init;\n\t});\n\n\t// PUBLIC API\n\n\tfunction subscribe(callback)\n\t{\n\t\tsubs.push(callback);\n\t}\n\n\tfunction unsubscribe(callback)\n\t{\n\t\t// copy subs into a new array in case unsubscribe is called within a\n\t\t// subscribed callback\n\t\tsubs = subs.slice();\n\t\tvar index = subs.indexOf(callback);\n\t\tif (index >= 0)\n\t\t{\n\t\t\tsubs.splice(index, 1);\n\t\t}\n\t}\n\n\treturn {\n\t\tsubscribe: subscribe,\n\t\tunsubscribe: unsubscribe\n\t};\n}\n\n\n\n// INCOMING PORTS\n\n\nfunction _Platform_incomingPort(name, converter)\n{\n\t_Platform_checkPortName(name);\n\t_Platform_effectManagers[name] = {\n\t\tf: _Platform_incomingPortMap,\n\t\tu: converter,\n\t\ta: _Platform_setupIncomingPort\n\t};\n\treturn _Platform_leaf(name);\n}\n\n\nvar _Platform_incomingPortMap = F2(function(tagger, finalTagger)\n{\n\treturn function(value)\n\t{\n\t\treturn tagger(finalTagger(value));\n\t};\n});\n\n\nfunction _Platform_setupIncomingPort(name, sendToApp)\n{\n\tvar subs = _List_Nil;\n\tvar converter = _Platform_effectManagers[name].u;\n\n\t// CREATE MANAGER\n\n\tvar init = _Scheduler_succeed(null);\n\n\t_Platform_effectManagers[name].b = init;\n\t_Platform_effectManagers[name].c = F3(function(router, subList, state)\n\t{\n\t\tsubs = subList;\n\t\treturn init;\n\t});\n\n\t// PUBLIC API\n\n\tfunction send(incomingValue)\n\t{\n\t\tvar result = A2(_Json_run, converter, _Json_wrap(incomingValue));\n\n\t\t$elm$core$Result$isOk(result) || _Debug_crash(4, name, result.a);\n\n\t\tvar value = result.a;\n\t\tfor (var temp = subs; temp.b; temp = temp.b) // WHILE_CONS\n\t\t{\n\t\t\tsendToApp(temp.a(value));\n\t\t}\n\t}\n\n\treturn { send: send };\n}\n\n\n\n// EXPORT ELM MODULES\n//\n// Have DEBUG and PROD versions so that we can (1) give nicer errors in\n// debug mode and (2) not pay for the bits needed for that in prod mode.\n//\n\n\nfunction _Platform_export(exports)\n{\n\tscope['Elm']\n\t\t? _Platform_mergeExportsProd(scope['Elm'], exports)\n\t\t: scope['Elm'] = exports;\n}\n\n\nfunction _Platform_mergeExportsProd(obj, exports)\n{\n\tfor (var name in exports)\n\t{\n\t\t(name in obj)\n\t\t\t? (name == 'init')\n\t\t\t\t? _Debug_crash(6)\n\t\t\t\t: _Platform_mergeExportsProd(obj[name], exports[name])\n\t\t\t: (obj[name] = exports[name]);\n\t}\n}\n\n\nfunction _Platform_export_UNUSED(exports)\n{\n\tscope['Elm']\n\t\t? _Platform_mergeExportsDebug('Elm', scope['Elm'], exports)\n\t\t: scope['Elm'] = exports;\n}\n\n\nfunction _Platform_mergeExportsDebug(moduleName, obj, exports)\n{\n\tfor (var name in exports)\n\t{\n\t\t(name in obj)\n\t\t\t? (name == 'init')\n\t\t\t\t? _Debug_crash(6, moduleName)\n\t\t\t\t: _Platform_mergeExportsDebug(moduleName + '.' + name, obj[name], exports[name])\n\t\t\t: (obj[name] = exports[name]);\n\t}\n}\n\n\n\n\n// HELPERS\n\n\nvar _VirtualDom_divertHrefToApp;\n\nvar _VirtualDom_doc = typeof document !== 'undefined' ? document : {};\n\n\nfunction _VirtualDom_appendChild(parent, child)\n{\n\tparent.appendChild(child);\n}\n\nvar _VirtualDom_init = F4(function(virtualNode, flagDecoder, debugMetadata, args)\n{\n\t// NOTE: this function needs _Platform_export available to work\n\n\t/**/\n\tvar node = args['node'];\n\t//*/\n\t/**_UNUSED/\n\tvar node = args && args['node'] ? args['node'] : _Debug_crash(0);\n\t//*/\n\n\tnode.parentNode.replaceChild(\n\t\t_VirtualDom_render(virtualNode, function() {}),\n\t\tnode\n\t);\n\n\treturn {};\n});\n\n\n\n// TEXT\n\n\nfunction _VirtualDom_text(string)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: string\n\t};\n}\n\n\n\n// NODE\n\n\nvar _VirtualDom_nodeNS = F2(function(namespace, tag)\n{\n\treturn F2(function(factList, kidList)\n\t{\n\t\tfor (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS\n\t\t{\n\t\t\tvar kid = kidList.a;\n\t\t\tdescendantsCount += (kid.b || 0);\n\t\t\tkids.push(kid);\n\t\t}\n\t\tdescendantsCount += kids.length;\n\n\t\treturn {\n\t\t\t$: 1,\n\t\t\tc: tag,\n\t\t\td: _VirtualDom_organizeFacts(factList),\n\t\t\te: kids,\n\t\t\tf: namespace,\n\t\t\tb: descendantsCount\n\t\t};\n\t});\n});\n\n\nvar _VirtualDom_node = _VirtualDom_nodeNS(undefined);\n\n\n\n// KEYED NODE\n\n\nvar _VirtualDom_keyedNodeNS = F2(function(namespace, tag)\n{\n\treturn F2(function(factList, kidList)\n\t{\n\t\tfor (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS\n\t\t{\n\t\t\tvar kid = kidList.a;\n\t\t\tdescendantsCount += (kid.b.b || 0);\n\t\t\tkids.push(kid);\n\t\t}\n\t\tdescendantsCount += kids.length;\n\n\t\treturn {\n\t\t\t$: 2,\n\t\t\tc: tag,\n\t\t\td: _VirtualDom_organizeFacts(factList),\n\t\t\te: kids,\n\t\t\tf: namespace,\n\t\t\tb: descendantsCount\n\t\t};\n\t});\n});\n\n\nvar _VirtualDom_keyedNode = _VirtualDom_keyedNodeNS(undefined);\n\n\n\n// CUSTOM\n\n\nfunction _VirtualDom_custom(factList, model, render, diff)\n{\n\treturn {\n\t\t$: 3,\n\t\td: _VirtualDom_organizeFacts(factList),\n\t\tg: model,\n\t\th: render,\n\t\ti: diff\n\t};\n}\n\n\n\n// MAP\n\n\nvar _VirtualDom_map = F2(function(tagger, node)\n{\n\treturn {\n\t\t$: 4,\n\t\tj: tagger,\n\t\tk: node,\n\t\tb: 1 + (node.b || 0)\n\t};\n});\n\n\n\n// LAZY\n\n\nfunction _VirtualDom_thunk(refs, thunk)\n{\n\treturn {\n\t\t$: 5,\n\t\tl: refs,\n\t\tm: thunk,\n\t\tk: undefined\n\t};\n}\n\nvar _VirtualDom_lazy = F2(function(func, a)\n{\n\treturn _VirtualDom_thunk([func, a], function() {\n\t\treturn func(a);\n\t});\n});\n\nvar _VirtualDom_lazy2 = F3(function(func, a, b)\n{\n\treturn _VirtualDom_thunk([func, a, b], function() {\n\t\treturn A2(func, a, b);\n\t});\n});\n\nvar _VirtualDom_lazy3 = F4(function(func, a, b, c)\n{\n\treturn _VirtualDom_thunk([func, a, b, c], function() {\n\t\treturn A3(func, a, b, c);\n\t});\n});\n\nvar _VirtualDom_lazy4 = F5(function(func, a, b, c, d)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d], function() {\n\t\treturn A4(func, a, b, c, d);\n\t});\n});\n\nvar _VirtualDom_lazy5 = F6(function(func, a, b, c, d, e)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e], function() {\n\t\treturn A5(func, a, b, c, d, e);\n\t});\n});\n\nvar _VirtualDom_lazy6 = F7(function(func, a, b, c, d, e, f)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f], function() {\n\t\treturn A6(func, a, b, c, d, e, f);\n\t});\n});\n\nvar _VirtualDom_lazy7 = F8(function(func, a, b, c, d, e, f, g)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f, g], function() {\n\t\treturn A7(func, a, b, c, d, e, f, g);\n\t});\n});\n\nvar _VirtualDom_lazy8 = F9(function(func, a, b, c, d, e, f, g, h)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f, g, h], function() {\n\t\treturn A8(func, a, b, c, d, e, f, g, h);\n\t});\n});\n\n\n\n// FACTS\n\n\nvar _VirtualDom_on = F2(function(key, handler)\n{\n\treturn {\n\t\t$: 'a0',\n\t\tn: key,\n\t\to: handler\n\t};\n});\nvar _VirtualDom_style = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a1',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_property = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a2',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_attribute = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a3',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_attributeNS = F3(function(namespace, key, value)\n{\n\treturn {\n\t\t$: 'a4',\n\t\tn: key,\n\t\to: { f: namespace, o: value }\n\t};\n});\n\n\n\n// XSS ATTACK VECTOR CHECKS\n\n\nfunction _VirtualDom_noScript(tag)\n{\n\treturn tag == 'script' ? 'p' : tag;\n}\n\nfunction _VirtualDom_noOnOrFormAction(key)\n{\n\treturn /^(on|formAction$)/i.test(key) ? 'data-' + key : key;\n}\n\nfunction _VirtualDom_noInnerHtmlOrFormAction(key)\n{\n\treturn key == 'innerHTML' || key == 'formAction' ? 'data-' + key : key;\n}\n\nfunction _VirtualDom_noJavaScriptUri(value)\n{\n\treturn /^javascript:/i.test(value.replace(/\\s/g,'')) ? '' : value;\n}\n\nfunction _VirtualDom_noJavaScriptUri_UNUSED(value)\n{\n\treturn /^javascript:/i.test(value.replace(/\\s/g,''))\n\t\t? 'javascript:alert(\"This is an XSS vector. Please use ports or web components instead.\")'\n\t\t: value;\n}\n\nfunction _VirtualDom_noJavaScriptOrHtmlUri(value)\n{\n\treturn /^\\s*(javascript:|data:text\\/html)/i.test(value) ? '' : value;\n}\n\nfunction _VirtualDom_noJavaScriptOrHtmlUri_UNUSED(value)\n{\n\treturn /^\\s*(javascript:|data:text\\/html)/i.test(value)\n\t\t? 'javascript:alert(\"This is an XSS vector. Please use ports or web components instead.\")'\n\t\t: value;\n}\n\n\n\n// MAP FACTS\n\n\nvar _VirtualDom_mapAttribute = F2(function(func, attr)\n{\n\treturn (attr.$ === 'a0')\n\t\t? A2(_VirtualDom_on, attr.n, _VirtualDom_mapHandler(func, attr.o))\n\t\t: attr;\n});\n\nfunction _VirtualDom_mapHandler(func, handler)\n{\n\tvar tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler);\n\n\t// 0 = Normal\n\t// 1 = MayStopPropagation\n\t// 2 = MayPreventDefault\n\t// 3 = Custom\n\n\treturn {\n\t\t$: handler.$,\n\t\ta:\n\t\t\t!tag\n\t\t\t\t? A2($elm$json$Json$Decode$map, func, handler.a)\n\t\t\t\t:\n\t\t\tA3($elm$json$Json$Decode$map2,\n\t\t\t\ttag < 3\n\t\t\t\t\t? _VirtualDom_mapEventTuple\n\t\t\t\t\t: _VirtualDom_mapEventRecord,\n\t\t\t\t$elm$json$Json$Decode$succeed(func),\n\t\t\t\thandler.a\n\t\t\t)\n\t};\n}\n\nvar _VirtualDom_mapEventTuple = F2(function(func, tuple)\n{\n\treturn _Utils_Tuple2(func(tuple.a), tuple.b);\n});\n\nvar _VirtualDom_mapEventRecord = F2(function(func, record)\n{\n\treturn {\n\t\tah: func(record.ah),\n\t\tc5: record.c5,\n\t\tcR: record.cR\n\t}\n});\n\n\n\n// ORGANIZE FACTS\n\n\nfunction _VirtualDom_organizeFacts(factList)\n{\n\tfor (var facts = {}; factList.b; factList = factList.b) // WHILE_CONS\n\t{\n\t\tvar entry = factList.a;\n\n\t\tvar tag = entry.$;\n\t\tvar key = entry.n;\n\t\tvar value = entry.o;\n\n\t\tif (tag === 'a2')\n\t\t{\n\t\t\t(key === 'className')\n\t\t\t\t? _VirtualDom_addClass(facts, key, _Json_unwrap(value))\n\t\t\t\t: facts[key] = _Json_unwrap(value);\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar subFacts = facts[tag] || (facts[tag] = {});\n\t\t(tag === 'a3' && key === 'class')\n\t\t\t? _VirtualDom_addClass(subFacts, key, value)\n\t\t\t: subFacts[key] = value;\n\t}\n\n\treturn facts;\n}\n\nfunction _VirtualDom_addClass(object, key, newClass)\n{\n\tvar classes = object[key];\n\tobject[key] = classes ? classes + ' ' + newClass : newClass;\n}\n\n\n\n// RENDER\n\n\nfunction _VirtualDom_render(vNode, eventNode)\n{\n\tvar tag = vNode.$;\n\n\tif (tag === 5)\n\t{\n\t\treturn _VirtualDom_render(vNode.k || (vNode.k = vNode.m()), eventNode);\n\t}\n\n\tif (tag === 0)\n\t{\n\t\treturn _VirtualDom_doc.createTextNode(vNode.a);\n\t}\n\n\tif (tag === 4)\n\t{\n\t\tvar subNode = vNode.k;\n\t\tvar tagger = vNode.j;\n\n\t\twhile (subNode.$ === 4)\n\t\t{\n\t\t\ttypeof tagger !== 'object'\n\t\t\t\t? tagger = [tagger, subNode.j]\n\t\t\t\t: tagger.push(subNode.j);\n\n\t\t\tsubNode = subNode.k;\n\t\t}\n\n\t\tvar subEventRoot = { j: tagger, p: eventNode };\n\t\tvar domNode = _VirtualDom_render(subNode, subEventRoot);\n\t\tdomNode.elm_event_node_ref = subEventRoot;\n\t\treturn domNode;\n\t}\n\n\tif (tag === 3)\n\t{\n\t\tvar domNode = vNode.h(vNode.g);\n\t\t_VirtualDom_applyFacts(domNode, eventNode, vNode.d);\n\t\treturn domNode;\n\t}\n\n\t// at this point `tag` must be 1 or 2\n\n\tvar domNode = vNode.f\n\t\t? _VirtualDom_doc.createElementNS(vNode.f, vNode.c)\n\t\t: _VirtualDom_doc.createElement(vNode.c);\n\n\tif (_VirtualDom_divertHrefToApp && vNode.c == 'a')\n\t{\n\t\tdomNode.addEventListener('click', _VirtualDom_divertHrefToApp(domNode));\n\t}\n\n\t_VirtualDom_applyFacts(domNode, eventNode, vNode.d);\n\n\tfor (var kids = vNode.e, i = 0; i < kids.length; i++)\n\t{\n\t\t_VirtualDom_appendChild(domNode, _VirtualDom_render(tag === 1 ? kids[i] : kids[i].b, eventNode));\n\t}\n\n\treturn domNode;\n}\n\n\n\n// APPLY FACTS\n\n\nfunction _VirtualDom_applyFacts(domNode, eventNode, facts)\n{\n\tfor (var key in facts)\n\t{\n\t\tvar value = facts[key];\n\n\t\tkey === 'a1'\n\t\t\t? _VirtualDom_applyStyles(domNode, value)\n\t\t\t:\n\t\tkey === 'a0'\n\t\t\t? _VirtualDom_applyEvents(domNode, eventNode, value)\n\t\t\t:\n\t\tkey === 'a3'\n\t\t\t? _VirtualDom_applyAttrs(domNode, value)\n\t\t\t:\n\t\tkey === 'a4'\n\t\t\t? _VirtualDom_applyAttrsNS(domNode, value)\n\t\t\t:\n\t\t((key !== 'value' && key !== 'checked') || domNode[key] !== value) && (domNode[key] = value);\n\t}\n}\n\n\n\n// APPLY STYLES\n\n\nfunction _VirtualDom_applyStyles(domNode, styles)\n{\n\tvar domNodeStyle = domNode.style;\n\n\tfor (var key in styles)\n\t{\n\t\tdomNodeStyle[key] = styles[key];\n\t}\n}\n\n\n\n// APPLY ATTRS\n\n\nfunction _VirtualDom_applyAttrs(domNode, attrs)\n{\n\tfor (var key in attrs)\n\t{\n\t\tvar value = attrs[key];\n\t\ttypeof value !== 'undefined'\n\t\t\t? domNode.setAttribute(key, value)\n\t\t\t: domNode.removeAttribute(key);\n\t}\n}\n\n\n\n// APPLY NAMESPACED ATTRS\n\n\nfunction _VirtualDom_applyAttrsNS(domNode, nsAttrs)\n{\n\tfor (var key in nsAttrs)\n\t{\n\t\tvar pair = nsAttrs[key];\n\t\tvar namespace = pair.f;\n\t\tvar value = pair.o;\n\n\t\ttypeof value !== 'undefined'\n\t\t\t? domNode.setAttributeNS(namespace, key, value)\n\t\t\t: domNode.removeAttributeNS(namespace, key);\n\t}\n}\n\n\n\n// APPLY EVENTS\n\n\nfunction _VirtualDom_applyEvents(domNode, eventNode, events)\n{\n\tvar allCallbacks = domNode.elmFs || (domNode.elmFs = {});\n\n\tfor (var key in events)\n\t{\n\t\tvar newHandler = events[key];\n\t\tvar oldCallback = allCallbacks[key];\n\n\t\tif (!newHandler)\n\t\t{\n\t\t\tdomNode.removeEventListener(key, oldCallback);\n\t\t\tallCallbacks[key] = undefined;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (oldCallback)\n\t\t{\n\t\t\tvar oldHandler = oldCallback.q;\n\t\t\tif (oldHandler.$ === newHandler.$)\n\t\t\t{\n\t\t\t\toldCallback.q = newHandler;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdomNode.removeEventListener(key, oldCallback);\n\t\t}\n\n\t\toldCallback = _VirtualDom_makeCallback(eventNode, newHandler);\n\t\tdomNode.addEventListener(key, oldCallback,\n\t\t\t_VirtualDom_passiveSupported\n\t\t\t&& { passive: $elm$virtual_dom$VirtualDom$toHandlerInt(newHandler) < 2 }\n\t\t);\n\t\tallCallbacks[key] = oldCallback;\n\t}\n}\n\n\n\n// PASSIVE EVENTS\n\n\nvar _VirtualDom_passiveSupported;\n\ntry\n{\n\twindow.addEventListener('t', null, Object.defineProperty({}, 'passive', {\n\t\tget: function() { _VirtualDom_passiveSupported = true; }\n\t}));\n}\ncatch(e) {}\n\n\n\n// EVENT HANDLERS\n\n\nfunction _VirtualDom_makeCallback(eventNode, initialHandler)\n{\n\tfunction callback(event)\n\t{\n\t\tvar handler = callback.q;\n\t\tvar result = _Json_runHelp(handler.a, event);\n\n\t\tif (!$elm$core$Result$isOk(result))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tvar tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler);\n\n\t\t// 0 = Normal\n\t\t// 1 = MayStopPropagation\n\t\t// 2 = MayPreventDefault\n\t\t// 3 = Custom\n\n\t\tvar value = result.a;\n\t\tvar message = !tag ? value : tag < 3 ? value.a : value.ah;\n\t\tvar stopPropagation = tag == 1 ? value.b : tag == 3 && value.c5;\n\t\tvar currentEventNode = (\n\t\t\tstopPropagation && event.stopPropagation(),\n\t\t\t(tag == 2 ? value.b : tag == 3 && value.cR) && event.preventDefault(),\n\t\t\teventNode\n\t\t);\n\t\tvar tagger;\n\t\tvar i;\n\t\twhile (tagger = currentEventNode.j)\n\t\t{\n\t\t\tif (typeof tagger == 'function')\n\t\t\t{\n\t\t\t\tmessage = tagger(message);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (var i = tagger.length; i--; )\n\t\t\t\t{\n\t\t\t\t\tmessage = tagger[i](message);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcurrentEventNode = currentEventNode.p;\n\t\t}\n\t\tcurrentEventNode(message, stopPropagation); // stopPropagation implies isSync\n\t}\n\n\tcallback.q = initialHandler;\n\n\treturn callback;\n}\n\nfunction _VirtualDom_equalEvents(x, y)\n{\n\treturn x.$ == y.$ && _Json_equality(x.a, y.a);\n}\n\n\n\n// DIFF\n\n\n// TODO: Should we do patches like in iOS?\n//\n// type Patch\n// = At Int Patch\n// | Batch (List Patch)\n// | Change ...\n//\n// How could it not be better?\n//\nfunction _VirtualDom_diff(x, y)\n{\n\tvar patches = [];\n\t_VirtualDom_diffHelp(x, y, patches, 0);\n\treturn patches;\n}\n\n\nfunction _VirtualDom_pushPatch(patches, type, index, data)\n{\n\tvar patch = {\n\t\t$: type,\n\t\tr: index,\n\t\ts: data,\n\t\tt: undefined,\n\t\tu: undefined\n\t};\n\tpatches.push(patch);\n\treturn patch;\n}\n\n\nfunction _VirtualDom_diffHelp(x, y, patches, index)\n{\n\tif (x === y)\n\t{\n\t\treturn;\n\t}\n\n\tvar xType = x.$;\n\tvar yType = y.$;\n\n\t// Bail if you run into different types of nodes. Implies that the\n\t// structure has changed significantly and it's not worth a diff.\n\tif (xType !== yType)\n\t{\n\t\tif (xType === 1 && yType === 2)\n\t\t{\n\t\t\ty = _VirtualDom_dekey(y);\n\t\t\tyType = 1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Now we know that both nodes are the same $.\n\tswitch (yType)\n\t{\n\t\tcase 5:\n\t\t\tvar xRefs = x.l;\n\t\t\tvar yRefs = y.l;\n\t\t\tvar i = xRefs.length;\n\t\t\tvar same = i === yRefs.length;\n\t\t\twhile (same && i--)\n\t\t\t{\n\t\t\t\tsame = xRefs[i] === yRefs[i];\n\t\t\t}\n\t\t\tif (same)\n\t\t\t{\n\t\t\t\ty.k = x.k;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ty.k = y.m();\n\t\t\tvar subPatches = [];\n\t\t\t_VirtualDom_diffHelp(x.k, y.k, subPatches, 0);\n\t\t\tsubPatches.length > 0 && _VirtualDom_pushPatch(patches, 1, index, subPatches);\n\t\t\treturn;\n\n\t\tcase 4:\n\t\t\t// gather nested taggers\n\t\t\tvar xTaggers = x.j;\n\t\t\tvar yTaggers = y.j;\n\t\t\tvar nesting = false;\n\n\t\t\tvar xSubNode = x.k;\n\t\t\twhile (xSubNode.$ === 4)\n\t\t\t{\n\t\t\t\tnesting = true;\n\n\t\t\t\ttypeof xTaggers !== 'object'\n\t\t\t\t\t? xTaggers = [xTaggers, xSubNode.j]\n\t\t\t\t\t: xTaggers.push(xSubNode.j);\n\n\t\t\t\txSubNode = xSubNode.k;\n\t\t\t}\n\n\t\t\tvar ySubNode = y.k;\n\t\t\twhile (ySubNode.$ === 4)\n\t\t\t{\n\t\t\t\tnesting = true;\n\n\t\t\t\ttypeof yTaggers !== 'object'\n\t\t\t\t\t? yTaggers = [yTaggers, ySubNode.j]\n\t\t\t\t\t: yTaggers.push(ySubNode.j);\n\n\t\t\t\tySubNode = ySubNode.k;\n\t\t\t}\n\n\t\t\t// Just bail if different numbers of taggers. This implies the\n\t\t\t// structure of the virtual DOM has changed.\n\t\t\tif (nesting && xTaggers.length !== yTaggers.length)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// check if taggers are \"the same\"\n\t\t\tif (nesting ? !_VirtualDom_pairwiseRefEqual(xTaggers, yTaggers) : xTaggers !== yTaggers)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 2, index, yTaggers);\n\t\t\t}\n\n\t\t\t// diff everything below the taggers\n\t\t\t_VirtualDom_diffHelp(xSubNode, ySubNode, patches, index + 1);\n\t\t\treturn;\n\n\t\tcase 0:\n\t\t\tif (x.a !== y.a)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 3, index, y.a);\n\t\t\t}\n\t\t\treturn;\n\n\t\tcase 1:\n\t\t\t_VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKids);\n\t\t\treturn;\n\n\t\tcase 2:\n\t\t\t_VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKeyedKids);\n\t\t\treturn;\n\n\t\tcase 3:\n\t\t\tif (x.h !== y.h)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar factsDiff = _VirtualDom_diffFacts(x.d, y.d);\n\t\t\tfactsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);\n\n\t\t\tvar patch = y.i(x.g, y.g);\n\t\t\tpatch && _VirtualDom_pushPatch(patches, 5, index, patch);\n\n\t\t\treturn;\n\t}\n}\n\n// assumes the incoming arrays are the same length\nfunction _VirtualDom_pairwiseRefEqual(as, bs)\n{\n\tfor (var i = 0; i < as.length; i++)\n\t{\n\t\tif (as[i] !== bs[i])\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction _VirtualDom_diffNodes(x, y, patches, index, diffKids)\n{\n\t// Bail if obvious indicators have changed. Implies more serious\n\t// structural changes such that it's not worth it to diff.\n\tif (x.c !== y.c || x.f !== y.f)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\treturn;\n\t}\n\n\tvar factsDiff = _VirtualDom_diffFacts(x.d, y.d);\n\tfactsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);\n\n\tdiffKids(x, y, patches, index);\n}\n\n\n\n// DIFF FACTS\n\n\n// TODO Instead of creating a new diff object, it's possible to just test if\n// there *is* a diff. During the actual patch, do the diff again and make the\n// modifications directly. This way, there's no new allocations. Worth it?\nfunction _VirtualDom_diffFacts(x, y, category)\n{\n\tvar diff;\n\n\t// look for changes and removals\n\tfor (var xKey in x)\n\t{\n\t\tif (xKey === 'a1' || xKey === 'a0' || xKey === 'a3' || xKey === 'a4')\n\t\t{\n\t\t\tvar subDiff = _VirtualDom_diffFacts(x[xKey], y[xKey] || {}, xKey);\n\t\t\tif (subDiff)\n\t\t\t{\n\t\t\t\tdiff = diff || {};\n\t\t\t\tdiff[xKey] = subDiff;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove if not in the new facts\n\t\tif (!(xKey in y))\n\t\t{\n\t\t\tdiff = diff || {};\n\t\t\tdiff[xKey] =\n\t\t\t\t!category\n\t\t\t\t\t? (typeof x[xKey] === 'string' ? '' : null)\n\t\t\t\t\t:\n\t\t\t\t(category === 'a1')\n\t\t\t\t\t? ''\n\t\t\t\t\t:\n\t\t\t\t(category === 'a0' || category === 'a3')\n\t\t\t\t\t? undefined\n\t\t\t\t\t:\n\t\t\t\t{ f: x[xKey].f, o: undefined };\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar xValue = x[xKey];\n\t\tvar yValue = y[xKey];\n\n\t\t// reference equal, so don't worry about it\n\t\tif (xValue === yValue && xKey !== 'value' && xKey !== 'checked'\n\t\t\t|| category === 'a0' && _VirtualDom_equalEvents(xValue, yValue))\n\t\t{\n\t\t\tcontinue;\n\t\t}\n\n\t\tdiff = diff || {};\n\t\tdiff[xKey] = yValue;\n\t}\n\n\t// add new stuff\n\tfor (var yKey in y)\n\t{\n\t\tif (!(yKey in x))\n\t\t{\n\t\t\tdiff = diff || {};\n\t\t\tdiff[yKey] = y[yKey];\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n\n\n// DIFF KIDS\n\n\nfunction _VirtualDom_diffKids(xParent, yParent, patches, index)\n{\n\tvar xKids = xParent.e;\n\tvar yKids = yParent.e;\n\n\tvar xLen = xKids.length;\n\tvar yLen = yKids.length;\n\n\t// FIGURE OUT IF THERE ARE INSERTS OR REMOVALS\n\n\tif (xLen > yLen)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 6, index, {\n\t\t\tv: yLen,\n\t\t\ti: xLen - yLen\n\t\t});\n\t}\n\telse if (xLen < yLen)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 7, index, {\n\t\t\tv: xLen,\n\t\t\te: yKids\n\t\t});\n\t}\n\n\t// PAIRWISE DIFF EVERYTHING ELSE\n\n\tfor (var minLen = xLen < yLen ? xLen : yLen, i = 0; i < minLen; i++)\n\t{\n\t\tvar xKid = xKids[i];\n\t\t_VirtualDom_diffHelp(xKid, yKids[i], patches, ++index);\n\t\tindex += xKid.b || 0;\n\t}\n}\n\n\n\n// KEYED DIFF\n\n\nfunction _VirtualDom_diffKeyedKids(xParent, yParent, patches, rootIndex)\n{\n\tvar localPatches = [];\n\n\tvar changes = {}; // Dict String Entry\n\tvar inserts = []; // Array { index : Int, entry : Entry }\n\t// type Entry = { tag : String, vnode : VNode, index : Int, data : _ }\n\n\tvar xKids = xParent.e;\n\tvar yKids = yParent.e;\n\tvar xLen = xKids.length;\n\tvar yLen = yKids.length;\n\tvar xIndex = 0;\n\tvar yIndex = 0;\n\n\tvar index = rootIndex;\n\n\twhile (xIndex < xLen && yIndex < yLen)\n\t{\n\t\tvar x = xKids[xIndex];\n\t\tvar y = yKids[yIndex];\n\n\t\tvar xKey = x.a;\n\t\tvar yKey = y.a;\n\t\tvar xNode = x.b;\n\t\tvar yNode = y.b;\n\n\t\tvar newMatch = undefined;\n\t\tvar oldMatch = undefined;\n\n\t\t// check if keys match\n\n\t\tif (xKey === yKey)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNode, yNode, localPatches, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\txIndex++;\n\t\t\tyIndex++;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// look ahead 1 to detect insertions and removals.\n\n\t\tvar xNext = xKids[xIndex + 1];\n\t\tvar yNext = yKids[yIndex + 1];\n\n\t\tif (xNext)\n\t\t{\n\t\t\tvar xNextKey = xNext.a;\n\t\t\tvar xNextNode = xNext.b;\n\t\t\toldMatch = yKey === xNextKey;\n\t\t}\n\n\t\tif (yNext)\n\t\t{\n\t\t\tvar yNextKey = yNext.a;\n\t\t\tvar yNextNode = yNext.b;\n\t\t\tnewMatch = xKey === yNextKey;\n\t\t}\n\n\n\t\t// swap x and y\n\t\tif (newMatch && oldMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);\n\t\t\t_VirtualDom_insertNode(changes, localPatches, xKey, yNode, yIndex, inserts);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNextNode, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// insert y\n\t\tif (newMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);\n\t\t\t_VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\txIndex += 1;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove x\n\t\tif (oldMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNextNode, yNode, localPatches, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove x, insert y\n\t\tif (xNext && xNextKey === yNextKey)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);\n\t\t\t_VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNextNode, yNextNode, localPatches, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\tbreak;\n\t}\n\n\t// eat up any remaining nodes with removeNode and insertNode\n\n\twhile (xIndex < xLen)\n\t{\n\t\tindex++;\n\t\tvar x = xKids[xIndex];\n\t\tvar xNode = x.b;\n\t\t_VirtualDom_removeNode(changes, localPatches, x.a, xNode, index);\n\t\tindex += xNode.b || 0;\n\t\txIndex++;\n\t}\n\n\twhile (yIndex < yLen)\n\t{\n\t\tvar endInserts = endInserts || [];\n\t\tvar y = yKids[yIndex];\n\t\t_VirtualDom_insertNode(changes, localPatches, y.a, y.b, undefined, endInserts);\n\t\tyIndex++;\n\t}\n\n\tif (localPatches.length > 0 || inserts.length > 0 || endInserts)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 8, rootIndex, {\n\t\t\tw: localPatches,\n\t\t\tx: inserts,\n\t\t\ty: endInserts\n\t\t});\n\t}\n}\n\n\n\n// CHANGES FROM KEYED DIFF\n\n\nvar _VirtualDom_POSTFIX = '_elmW6BL';\n\n\nfunction _VirtualDom_insertNode(changes, localPatches, key, vnode, yIndex, inserts)\n{\n\tvar entry = changes[key];\n\n\t// never seen this key before\n\tif (!entry)\n\t{\n\t\tentry = {\n\t\t\tc: 0,\n\t\t\tz: vnode,\n\t\t\tr: yIndex,\n\t\t\ts: undefined\n\t\t};\n\n\t\tinserts.push({ r: yIndex, A: entry });\n\t\tchanges[key] = entry;\n\n\t\treturn;\n\t}\n\n\t// this key was removed earlier, a match!\n\tif (entry.c === 1)\n\t{\n\t\tinserts.push({ r: yIndex, A: entry });\n\n\t\tentry.c = 2;\n\t\tvar subPatches = [];\n\t\t_VirtualDom_diffHelp(entry.z, vnode, subPatches, entry.r);\n\t\tentry.r = yIndex;\n\t\tentry.s.s = {\n\t\t\tw: subPatches,\n\t\t\tA: entry\n\t\t};\n\n\t\treturn;\n\t}\n\n\t// this key has already been inserted or moved, a duplicate!\n\t_VirtualDom_insertNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, yIndex, inserts);\n}\n\n\nfunction _VirtualDom_removeNode(changes, localPatches, key, vnode, index)\n{\n\tvar entry = changes[key];\n\n\t// never seen this key before\n\tif (!entry)\n\t{\n\t\tvar patch = _VirtualDom_pushPatch(localPatches, 9, index, undefined);\n\n\t\tchanges[key] = {\n\t\t\tc: 1,\n\t\t\tz: vnode,\n\t\t\tr: index,\n\t\t\ts: patch\n\t\t};\n\n\t\treturn;\n\t}\n\n\t// this key was inserted earlier, a match!\n\tif (entry.c === 0)\n\t{\n\t\tentry.c = 2;\n\t\tvar subPatches = [];\n\t\t_VirtualDom_diffHelp(vnode, entry.z, subPatches, index);\n\n\t\t_VirtualDom_pushPatch(localPatches, 9, index, {\n\t\t\tw: subPatches,\n\t\t\tA: entry\n\t\t});\n\n\t\treturn;\n\t}\n\n\t// this key has already been removed or moved, a duplicate!\n\t_VirtualDom_removeNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, index);\n}\n\n\n\n// ADD DOM NODES\n//\n// Each DOM node has an \"index\" assigned in order of traversal. It is important\n// to minimize our crawl over the actual DOM, so these indexes (along with the\n// descendantsCount of virtual nodes) let us skip touching entire subtrees of\n// the DOM if we know there are no patches there.\n\n\nfunction _VirtualDom_addDomNodes(domNode, vNode, patches, eventNode)\n{\n\t_VirtualDom_addDomNodesHelp(domNode, vNode, patches, 0, 0, vNode.b, eventNode);\n}\n\n\n// assumes `patches` is non-empty and indexes increase monotonically.\nfunction _VirtualDom_addDomNodesHelp(domNode, vNode, patches, i, low, high, eventNode)\n{\n\tvar patch = patches[i];\n\tvar index = patch.r;\n\n\twhile (index === low)\n\t{\n\t\tvar patchType = patch.$;\n\n\t\tif (patchType === 1)\n\t\t{\n\t\t\t_VirtualDom_addDomNodes(domNode, vNode.k, patch.s, eventNode);\n\t\t}\n\t\telse if (patchType === 8)\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\n\t\t\tvar subPatches = patch.s.w;\n\t\t\tif (subPatches.length > 0)\n\t\t\t{\n\t\t\t\t_VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);\n\t\t\t}\n\t\t}\n\t\telse if (patchType === 9)\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\n\t\t\tvar data = patch.s;\n\t\t\tif (data)\n\t\t\t{\n\t\t\t\tdata.A.s = domNode;\n\t\t\t\tvar subPatches = data.w;\n\t\t\t\tif (subPatches.length > 0)\n\t\t\t\t{\n\t\t\t\t\t_VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\t\t}\n\n\t\ti++;\n\n\t\tif (!(patch = patches[i]) || (index = patch.r) > high)\n\t\t{\n\t\t\treturn i;\n\t\t}\n\t}\n\n\tvar tag = vNode.$;\n\n\tif (tag === 4)\n\t{\n\t\tvar subNode = vNode.k;\n\n\t\twhile (subNode.$ === 4)\n\t\t{\n\t\t\tsubNode = subNode.k;\n\t\t}\n\n\t\treturn _VirtualDom_addDomNodesHelp(domNode, subNode, patches, i, low + 1, high, domNode.elm_event_node_ref);\n\t}\n\n\t// tag must be 1 or 2 at this point\n\n\tvar vKids = vNode.e;\n\tvar childNodes = domNode.childNodes;\n\tfor (var j = 0; j < vKids.length; j++)\n\t{\n\t\tlow++;\n\t\tvar vKid = tag === 1 ? vKids[j] : vKids[j].b;\n\t\tvar nextLow = low + (vKid.b || 0);\n\t\tif (low <= index && index <= nextLow)\n\t\t{\n\t\t\ti = _VirtualDom_addDomNodesHelp(childNodes[j], vKid, patches, i, low, nextLow, eventNode);\n\t\t\tif (!(patch = patches[i]) || (index = patch.r) > high)\n\t\t\t{\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\tlow = nextLow;\n\t}\n\treturn i;\n}\n\n\n\n// APPLY PATCHES\n\n\nfunction _VirtualDom_applyPatches(rootDomNode, oldVirtualNode, patches, eventNode)\n{\n\tif (patches.length === 0)\n\t{\n\t\treturn rootDomNode;\n\t}\n\n\t_VirtualDom_addDomNodes(rootDomNode, oldVirtualNode, patches, eventNode);\n\treturn _VirtualDom_applyPatchesHelp(rootDomNode, patches);\n}\n\nfunction _VirtualDom_applyPatchesHelp(rootDomNode, patches)\n{\n\tfor (var i = 0; i < patches.length; i++)\n\t{\n\t\tvar patch = patches[i];\n\t\tvar localDomNode = patch.t\n\t\tvar newNode = _VirtualDom_applyPatch(localDomNode, patch);\n\t\tif (localDomNode === rootDomNode)\n\t\t{\n\t\t\trootDomNode = newNode;\n\t\t}\n\t}\n\treturn rootDomNode;\n}\n\nfunction _VirtualDom_applyPatch(domNode, patch)\n{\n\tswitch (patch.$)\n\t{\n\t\tcase 0:\n\t\t\treturn _VirtualDom_applyPatchRedraw(domNode, patch.s, patch.u);\n\n\t\tcase 4:\n\t\t\t_VirtualDom_applyFacts(domNode, patch.u, patch.s);\n\t\t\treturn domNode;\n\n\t\tcase 3:\n\t\t\tdomNode.replaceData(0, domNode.length, patch.s);\n\t\t\treturn domNode;\n\n\t\tcase 1:\n\t\t\treturn _VirtualDom_applyPatchesHelp(domNode, patch.s);\n\n\t\tcase 2:\n\t\t\tif (domNode.elm_event_node_ref)\n\t\t\t{\n\t\t\t\tdomNode.elm_event_node_ref.j = patch.s;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tdomNode.elm_event_node_ref = { j: patch.s, p: patch.u };\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 6:\n\t\t\tvar data = patch.s;\n\t\t\tfor (var i = 0; i < data.i; i++)\n\t\t\t{\n\t\t\t\tdomNode.removeChild(domNode.childNodes[data.v]);\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 7:\n\t\t\tvar data = patch.s;\n\t\t\tvar kids = data.e;\n\t\t\tvar i = data.v;\n\t\t\tvar theEnd = domNode.childNodes[i];\n\t\t\tfor (; i < kids.length; i++)\n\t\t\t{\n\t\t\t\tdomNode.insertBefore(_VirtualDom_render(kids[i], patch.u), theEnd);\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 9:\n\t\t\tvar data = patch.s;\n\t\t\tif (!data)\n\t\t\t{\n\t\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t\t\treturn domNode;\n\t\t\t}\n\t\t\tvar entry = data.A;\n\t\t\tif (typeof entry.r !== 'undefined')\n\t\t\t{\n\t\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t\t}\n\t\t\tentry.s = _VirtualDom_applyPatchesHelp(domNode, data.w);\n\t\t\treturn domNode;\n\n\t\tcase 8:\n\t\t\treturn _VirtualDom_applyPatchReorder(domNode, patch);\n\n\t\tcase 5:\n\t\t\treturn patch.s(domNode);\n\n\t\tdefault:\n\t\t\t_Debug_crash(10); // 'Ran into an unknown patch!'\n\t}\n}\n\n\nfunction _VirtualDom_applyPatchRedraw(domNode, vNode, eventNode)\n{\n\tvar parentNode = domNode.parentNode;\n\tvar newNode = _VirtualDom_render(vNode, eventNode);\n\n\tif (!newNode.elm_event_node_ref)\n\t{\n\t\tnewNode.elm_event_node_ref = domNode.elm_event_node_ref;\n\t}\n\n\tif (parentNode && newNode !== domNode)\n\t{\n\t\tparentNode.replaceChild(newNode, domNode);\n\t}\n\treturn newNode;\n}\n\n\nfunction _VirtualDom_applyPatchReorder(domNode, patch)\n{\n\tvar data = patch.s;\n\n\t// remove end inserts\n\tvar frag = _VirtualDom_applyPatchReorderEndInsertsHelp(data.y, patch);\n\n\t// removals\n\tdomNode = _VirtualDom_applyPatchesHelp(domNode, data.w);\n\n\t// inserts\n\tvar inserts = data.x;\n\tfor (var i = 0; i < inserts.length; i++)\n\t{\n\t\tvar insert = inserts[i];\n\t\tvar entry = insert.A;\n\t\tvar node = entry.c === 2\n\t\t\t? entry.s\n\t\t\t: _VirtualDom_render(entry.z, patch.u);\n\t\tdomNode.insertBefore(node, domNode.childNodes[insert.r]);\n\t}\n\n\t// add end inserts\n\tif (frag)\n\t{\n\t\t_VirtualDom_appendChild(domNode, frag);\n\t}\n\n\treturn domNode;\n}\n\n\nfunction _VirtualDom_applyPatchReorderEndInsertsHelp(endInserts, patch)\n{\n\tif (!endInserts)\n\t{\n\t\treturn;\n\t}\n\n\tvar frag = _VirtualDom_doc.createDocumentFragment();\n\tfor (var i = 0; i < endInserts.length; i++)\n\t{\n\t\tvar insert = endInserts[i];\n\t\tvar entry = insert.A;\n\t\t_VirtualDom_appendChild(frag, entry.c === 2\n\t\t\t? entry.s\n\t\t\t: _VirtualDom_render(entry.z, patch.u)\n\t\t);\n\t}\n\treturn frag;\n}\n\n\nfunction _VirtualDom_virtualize(node)\n{\n\t// TEXT NODES\n\n\tif (node.nodeType === 3)\n\t{\n\t\treturn _VirtualDom_text(node.textContent);\n\t}\n\n\n\t// WEIRD NODES\n\n\tif (node.nodeType !== 1)\n\t{\n\t\treturn _VirtualDom_text('');\n\t}\n\n\n\t// ELEMENT NODES\n\n\tvar attrList = _List_Nil;\n\tvar attrs = node.attributes;\n\tfor (var i = attrs.length; i--; )\n\t{\n\t\tvar attr = attrs[i];\n\t\tvar name = attr.name;\n\t\tvar value = attr.value;\n\t\tattrList = _List_Cons( A2(_VirtualDom_attribute, name, value), attrList );\n\t}\n\n\tvar tag = node.tagName.toLowerCase();\n\tvar kidList = _List_Nil;\n\tvar kids = node.childNodes;\n\n\tfor (var i = kids.length; i--; )\n\t{\n\t\tkidList = _List_Cons(_VirtualDom_virtualize(kids[i]), kidList);\n\t}\n\treturn A3(_VirtualDom_node, tag, attrList, kidList);\n}\n\nfunction _VirtualDom_dekey(keyedNode)\n{\n\tvar keyedKids = keyedNode.e;\n\tvar len = keyedKids.length;\n\tvar kids = new Array(len);\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tkids[i] = keyedKids[i].b;\n\t}\n\n\treturn {\n\t\t$: 1,\n\t\tc: keyedNode.c,\n\t\td: keyedNode.d,\n\t\te: kids,\n\t\tf: keyedNode.f,\n\t\tb: keyedNode.b\n\t};\n}\n\n\n\n\n// ELEMENT\n\n\nvar _Debugger_element;\n\nvar _Browser_element = _Debugger_element || F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.fa,\n\t\timpl.fZ,\n\t\timpl.fN,\n\t\tfunction(sendToApp, initialModel) {\n\t\t\tvar view = impl.f0;\n\t\t\t/**/\n\t\t\tvar domNode = args['node'];\n\t\t\t//*/\n\t\t\t/**_UNUSED/\n\t\t\tvar domNode = args && args['node'] ? args['node'] : _Debug_crash(0);\n\t\t\t//*/\n\t\t\tvar currNode = _VirtualDom_virtualize(domNode);\n\n\t\t\treturn _Browser_makeAnimator(initialModel, function(model)\n\t\t\t{\n\t\t\t\tvar nextNode = view(model);\n\t\t\t\tvar patches = _VirtualDom_diff(currNode, nextNode);\n\t\t\t\tdomNode = _VirtualDom_applyPatches(domNode, currNode, patches, sendToApp);\n\t\t\t\tcurrNode = nextNode;\n\t\t\t});\n\t\t}\n\t);\n});\n\n\n\n// DOCUMENT\n\n\nvar _Debugger_document;\n\nvar _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.fa,\n\t\timpl.fZ,\n\t\timpl.fN,\n\t\tfunction(sendToApp, initialModel) {\n\t\t\tvar divertHrefToApp = impl.cY && impl.cY(sendToApp)\n\t\t\tvar view = impl.f0;\n\t\t\tvar title = _VirtualDom_doc.title;\n\t\t\tvar bodyNode = _VirtualDom_doc.body;\n\t\t\tvar currNode = _VirtualDom_virtualize(bodyNode);\n\t\t\treturn _Browser_makeAnimator(initialModel, function(model)\n\t\t\t{\n\t\t\t\t_VirtualDom_divertHrefToApp = divertHrefToApp;\n\t\t\t\tvar doc = view(model);\n\t\t\t\tvar nextNode = _VirtualDom_node('body')(_List_Nil)(doc.eJ);\n\t\t\t\tvar patches = _VirtualDom_diff(currNode, nextNode);\n\t\t\t\tbodyNode = _VirtualDom_applyPatches(bodyNode, currNode, patches, sendToApp);\n\t\t\t\tcurrNode = nextNode;\n\t\t\t\t_VirtualDom_divertHrefToApp = 0;\n\t\t\t\t(title !== doc.fR) && (_VirtualDom_doc.title = title = doc.fR);\n\t\t\t});\n\t\t}\n\t);\n});\n\n\n\n// ANIMATION\n\n\nvar _Browser_cancelAnimationFrame =\n\ttypeof cancelAnimationFrame !== 'undefined'\n\t\t? cancelAnimationFrame\n\t\t: function(id) { clearTimeout(id); };\n\nvar _Browser_requestAnimationFrame =\n\ttypeof requestAnimationFrame !== 'undefined'\n\t\t? requestAnimationFrame\n\t\t: function(callback) { return setTimeout(callback, 1000 / 60); };\n\n\nfunction _Browser_makeAnimator(model, draw)\n{\n\tdraw(model);\n\n\tvar state = 0;\n\n\tfunction updateIfNeeded()\n\t{\n\t\tstate = state === 1\n\t\t\t? 0\n\t\t\t: ( _Browser_requestAnimationFrame(updateIfNeeded), draw(model), 1 );\n\t}\n\n\treturn function(nextModel, isSync)\n\t{\n\t\tmodel = nextModel;\n\n\t\tisSync\n\t\t\t? ( draw(model),\n\t\t\t\tstate === 2 && (state = 1)\n\t\t\t\t)\n\t\t\t: ( state === 0 && _Browser_requestAnimationFrame(updateIfNeeded),\n\t\t\t\tstate = 2\n\t\t\t\t);\n\t};\n}\n\n\n\n// APPLICATION\n\n\nfunction _Browser_application(impl)\n{\n\tvar onUrlChange = impl.fw;\n\tvar onUrlRequest = impl.fx;\n\tvar key = function() { key.a(onUrlChange(_Browser_getUrl())); };\n\n\treturn _Browser_document({\n\t\tcY: function(sendToApp)\n\t\t{\n\t\t\tkey.a = sendToApp;\n\t\t\t_Browser_window.addEventListener('popstate', key);\n\t\t\t_Browser_window.navigator.userAgent.indexOf('Trident') < 0 || _Browser_window.addEventListener('hashchange', key);\n\n\t\t\treturn F2(function(domNode, event)\n\t\t\t{\n\t\t\t\tif (!event.ctrlKey && !event.metaKey && !event.shiftKey && event.button < 1 && !domNode.target && !domNode.hasAttribute('download'))\n\t\t\t\t{\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tvar href = domNode.href;\n\t\t\t\t\tvar curr = _Browser_getUrl();\n\t\t\t\t\tvar next = $elm$url$Url$fromString(href).a;\n\t\t\t\t\tsendToApp(onUrlRequest(\n\t\t\t\t\t\t(next\n\t\t\t\t\t\t\t&& curr.d3 === next.d3\n\t\t\t\t\t\t\t&& curr.e6 === next.e6\n\t\t\t\t\t\t\t&& curr.d_.a === next.d_.a\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\t? $elm$browser$Browser$Internal(next)\n\t\t\t\t\t\t\t: $elm$browser$Browser$External(href)\n\t\t\t\t\t));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tfa: function(flags)\n\t\t{\n\t\t\treturn A3(impl.fa, flags, _Browser_getUrl(), key);\n\t\t},\n\t\tf0: impl.f0,\n\t\tfZ: impl.fZ,\n\t\tfN: impl.fN\n\t});\n}\n\nfunction _Browser_getUrl()\n{\n\treturn $elm$url$Url$fromString(_VirtualDom_doc.location.href).a || _Debug_crash(1);\n}\n\nvar _Browser_go = F2(function(key, n)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\tn && history.go(n);\n\t\tkey();\n\t}));\n});\n\nvar _Browser_pushUrl = F2(function(key, url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\thistory.pushState({}, '', url);\n\t\tkey();\n\t}));\n});\n\nvar _Browser_replaceUrl = F2(function(key, url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\thistory.replaceState({}, '', url);\n\t\tkey();\n\t}));\n});\n\n\n\n// GLOBAL EVENTS\n\n\nvar _Browser_fakeNode = { addEventListener: function() {}, removeEventListener: function() {} };\nvar _Browser_doc = typeof document !== 'undefined' ? document : _Browser_fakeNode;\nvar _Browser_window = typeof window !== 'undefined' ? window : _Browser_fakeNode;\n\nvar _Browser_on = F3(function(node, eventName, sendToSelf)\n{\n\treturn _Scheduler_spawn(_Scheduler_binding(function(callback)\n\t{\n\t\tfunction handler(event)\t{ _Scheduler_rawSpawn(sendToSelf(event)); }\n\t\tnode.addEventListener(eventName, handler, _VirtualDom_passiveSupported && { passive: true });\n\t\treturn function() { node.removeEventListener(eventName, handler); };\n\t}));\n});\n\nvar _Browser_decodeEvent = F2(function(decoder, event)\n{\n\tvar result = _Json_runHelp(decoder, event);\n\treturn $elm$core$Result$isOk(result) ? $elm$core$Maybe$Just(result.a) : $elm$core$Maybe$Nothing;\n});\n\n\n\n// PAGE VISIBILITY\n\n\nfunction _Browser_visibilityInfo()\n{\n\treturn (typeof _VirtualDom_doc.hidden !== 'undefined')\n\t\t? { e5: 'hidden', eM: 'visibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.mozHidden !== 'undefined')\n\t\t? { e5: 'mozHidden', eM: 'mozvisibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.msHidden !== 'undefined')\n\t\t? { e5: 'msHidden', eM: 'msvisibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.webkitHidden !== 'undefined')\n\t\t? { e5: 'webkitHidden', eM: 'webkitvisibilitychange' }\n\t\t: { e5: 'hidden', eM: 'visibilitychange' };\n}\n\n\n\n// ANIMATION FRAMES\n\n\nfunction _Browser_rAF()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar id = _Browser_requestAnimationFrame(function() {\n\t\t\tcallback(_Scheduler_succeed(Date.now()));\n\t\t});\n\n\t\treturn function() {\n\t\t\t_Browser_cancelAnimationFrame(id);\n\t\t};\n\t});\n}\n\n\nfunction _Browser_now()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tcallback(_Scheduler_succeed(Date.now()));\n\t});\n}\n\n\n\n// DOM STUFF\n\n\nfunction _Browser_withNode(id, doStuff)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_Browser_requestAnimationFrame(function() {\n\t\t\tvar node = document.getElementById(id);\n\t\t\tcallback(node\n\t\t\t\t? _Scheduler_succeed(doStuff(node))\n\t\t\t\t: _Scheduler_fail($elm$browser$Browser$Dom$NotFound(id))\n\t\t\t);\n\t\t});\n\t});\n}\n\n\nfunction _Browser_withWindow(doStuff)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_Browser_requestAnimationFrame(function() {\n\t\t\tcallback(_Scheduler_succeed(doStuff()));\n\t\t});\n\t});\n}\n\n\n// FOCUS and BLUR\n\n\nvar _Browser_call = F2(function(functionName, id)\n{\n\treturn _Browser_withNode(id, function(node) {\n\t\tnode[functionName]();\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// WINDOW VIEWPORT\n\n\nfunction _Browser_getViewport()\n{\n\treturn {\n\t\ted: _Browser_getScene(),\n\t\teA: {\n\t\t\teC: _Browser_window.pageXOffset,\n\t\t\teD: _Browser_window.pageYOffset,\n\t\t\teB: _Browser_doc.documentElement.clientWidth,\n\t\t\tdA: _Browser_doc.documentElement.clientHeight\n\t\t}\n\t};\n}\n\nfunction _Browser_getScene()\n{\n\tvar body = _Browser_doc.body;\n\tvar elem = _Browser_doc.documentElement;\n\treturn {\n\t\teB: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth),\n\t\tdA: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight)\n\t};\n}\n\nvar _Browser_setViewport = F2(function(x, y)\n{\n\treturn _Browser_withWindow(function()\n\t{\n\t\t_Browser_window.scroll(x, y);\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// ELEMENT VIEWPORT\n\n\nfunction _Browser_getViewportOf(id)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\treturn {\n\t\t\ted: {\n\t\t\t\teB: node.scrollWidth,\n\t\t\t\tdA: node.scrollHeight\n\t\t\t},\n\t\t\teA: {\n\t\t\t\teC: node.scrollLeft,\n\t\t\t\teD: node.scrollTop,\n\t\t\t\teB: node.clientWidth,\n\t\t\t\tdA: node.clientHeight\n\t\t\t}\n\t\t};\n\t});\n}\n\n\nvar _Browser_setViewportOf = F3(function(id, x, y)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\tnode.scrollLeft = x;\n\t\tnode.scrollTop = y;\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// ELEMENT\n\n\nfunction _Browser_getElement(id)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\tvar rect = node.getBoundingClientRect();\n\t\tvar x = _Browser_window.pageXOffset;\n\t\tvar y = _Browser_window.pageYOffset;\n\t\treturn {\n\t\t\ted: _Browser_getScene(),\n\t\t\teA: {\n\t\t\t\teC: x,\n\t\t\t\teD: y,\n\t\t\t\teB: _Browser_doc.documentElement.clientWidth,\n\t\t\t\tdA: _Browser_doc.documentElement.clientHeight\n\t\t\t},\n\t\t\teU: {\n\t\t\t\teC: x + rect.left,\n\t\t\t\teD: y + rect.top,\n\t\t\t\teB: rect.width,\n\t\t\t\tdA: rect.height\n\t\t\t}\n\t\t};\n\t});\n}\n\n\n\n// LOAD and RELOAD\n\n\nfunction _Browser_reload(skipCache)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)\n\t{\n\t\t_VirtualDom_doc.location.reload(skipCache);\n\t}));\n}\n\nfunction _Browser_load(url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)\n\t{\n\t\ttry\n\t\t{\n\t\t\t_Browser_window.location = url;\n\t\t}\n\t\tcatch(err)\n\t\t{\n\t\t\t// Only Firefox can throw a NS_ERROR_MALFORMED_URI exception here.\n\t\t\t// Other browsers reload the page, so let's be consistent about that.\n\t\t\t_VirtualDom_doc.location.reload(false);\n\t\t}\n\t}));\n}\n\n\nfunction _Url_percentEncode(string)\n{\n\treturn encodeURIComponent(string);\n}\n\nfunction _Url_percentDecode(string)\n{\n\ttry\n\t{\n\t\treturn $elm$core$Maybe$Just(decodeURIComponent(string));\n\t}\n\tcatch (e)\n\t{\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n}\n\n\n// SEND REQUEST\n\nvar _Http_toTask = F3(function(router, toTask, request)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tfunction done(response) {\n\t\t\tcallback(toTask(request.eX.a(response)));\n\t\t}\n\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.addEventListener('error', function() { done($elm$http$Http$NetworkError_); });\n\t\txhr.addEventListener('timeout', function() { done($elm$http$Http$Timeout_); });\n\t\txhr.addEventListener('load', function() { done(_Http_toResponse(request.eX.b, xhr)); });\n\t\t$elm$core$Maybe$isJust(request.fY) && _Http_track(router, xhr, request.fY.a);\n\n\t\ttry {\n\t\t\txhr.open(request.fg, request.f_, true);\n\t\t} catch (e) {\n\t\t\treturn done($elm$http$Http$BadUrl_(request.f_));\n\t\t}\n\n\t\t_Http_configureRequest(xhr, request);\n\n\t\trequest.eJ.a && xhr.setRequestHeader('Content-Type', request.eJ.a);\n\t\txhr.send(request.eJ.b);\n\n\t\treturn function() { xhr.c = true; xhr.abort(); };\n\t});\n});\n\n\n// CONFIGURE\n\nfunction _Http_configureRequest(xhr, request)\n{\n\tfor (var headers = request.e3; headers.b; headers = headers.b) // WHILE_CONS\n\t{\n\t\txhr.setRequestHeader(headers.a.a, headers.a.b);\n\t}\n\txhr.timeout = request.fQ.a || 0;\n\txhr.responseType = request.eX.d;\n\txhr.withCredentials = request.eH;\n}\n\n\n// RESPONSES\n\nfunction _Http_toResponse(toBody, xhr)\n{\n\treturn A2(\n\t\t200 <= xhr.status && xhr.status < 300 ? $elm$http$Http$GoodStatus_ : $elm$http$Http$BadStatus_,\n\t\t_Http_toMetadata(xhr),\n\t\ttoBody(xhr.response)\n\t);\n}\n\n\n// METADATA\n\nfunction _Http_toMetadata(xhr)\n{\n\treturn {\n\t\tf_: xhr.responseURL,\n\t\tfL: xhr.status,\n\t\tfM: xhr.statusText,\n\t\te3: _Http_parseHeaders(xhr.getAllResponseHeaders())\n\t};\n}\n\n\n// HEADERS\n\nfunction _Http_parseHeaders(rawHeaders)\n{\n\tif (!rawHeaders)\n\t{\n\t\treturn $elm$core$Dict$empty;\n\t}\n\n\tvar headers = $elm$core$Dict$empty;\n\tvar headerPairs = rawHeaders.split('\\r\\n');\n\tfor (var i = headerPairs.length; i--; )\n\t{\n\t\tvar headerPair = headerPairs[i];\n\t\tvar index = headerPair.indexOf(': ');\n\t\tif (index > 0)\n\t\t{\n\t\t\tvar key = headerPair.substring(0, index);\n\t\t\tvar value = headerPair.substring(index + 2);\n\n\t\t\theaders = A3($elm$core$Dict$update, key, function(oldValue) {\n\t\t\t\treturn $elm$core$Maybe$Just($elm$core$Maybe$isJust(oldValue)\n\t\t\t\t\t? value + ', ' + oldValue.a\n\t\t\t\t\t: value\n\t\t\t\t);\n\t\t\t}, headers);\n\t\t}\n\t}\n\treturn headers;\n}\n\n\n// EXPECT\n\nvar _Http_expect = F3(function(type, toBody, toValue)\n{\n\treturn {\n\t\t$: 0,\n\t\td: type,\n\t\tb: toBody,\n\t\ta: toValue\n\t};\n});\n\nvar _Http_mapExpect = F2(function(func, expect)\n{\n\treturn {\n\t\t$: 0,\n\t\td: expect.d,\n\t\tb: expect.b,\n\t\ta: function(x) { return func(expect.a(x)); }\n\t};\n});\n\nfunction _Http_toDataView(arrayBuffer)\n{\n\treturn new DataView(arrayBuffer);\n}\n\n\n// BODY and PARTS\n\nvar _Http_emptyBody = { $: 0 };\nvar _Http_pair = F2(function(a, b) { return { $: 0, a: a, b: b }; });\n\nfunction _Http_toFormData(parts)\n{\n\tfor (var formData = new FormData(); parts.b; parts = parts.b) // WHILE_CONS\n\t{\n\t\tvar part = parts.a;\n\t\tformData.append(part.a, part.b);\n\t}\n\treturn formData;\n}\n\nvar _Http_bytesToBlob = F2(function(mime, bytes)\n{\n\treturn new Blob([bytes], { type: mime });\n});\n\n\n// PROGRESS\n\nfunction _Http_track(router, xhr, tracker)\n{\n\t// TODO check out lengthComputable on loadstart event\n\n\txhr.upload.addEventListener('progress', function(event) {\n\t\tif (xhr.c) { return; }\n\t\t_Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Sending({\n\t\t\tfJ: event.loaded,\n\t\t\teh: event.total\n\t\t}))));\n\t});\n\txhr.addEventListener('progress', function(event) {\n\t\tif (xhr.c) { return; }\n\t\t_Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Receiving({\n\t\t\tfD: event.loaded,\n\t\t\teh: event.lengthComputable ? $elm$core$Maybe$Just(event.total) : $elm$core$Maybe$Nothing\n\t\t}))));\n\t});\n}var $author$project$Main$LinkClicked = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Main$UrlChanged = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$core$Basics$EQ = 1;\nvar $elm$core$Basics$GT = 2;\nvar $elm$core$Basics$LT = 0;\nvar $elm$core$List$cons = _List_cons;\nvar $elm$core$Dict$foldr = F3(\n\tfunction (func, acc, t) {\n\t\tfoldr:\n\t\twhile (true) {\n\t\t\tif (t.$ === -2) {\n\t\t\t\treturn acc;\n\t\t\t} else {\n\t\t\t\tvar key = t.b;\n\t\t\t\tvar value = t.c;\n\t\t\t\tvar left = t.d;\n\t\t\t\tvar right = t.e;\n\t\t\t\tvar $temp$func = func,\n\t\t\t\t\t$temp$acc = A3(\n\t\t\t\t\tfunc,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tA3($elm$core$Dict$foldr, func, acc, right)),\n\t\t\t\t\t$temp$t = left;\n\t\t\t\tfunc = $temp$func;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tt = $temp$t;\n\t\t\t\tcontinue foldr;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$toList = function (dict) {\n\treturn A3(\n\t\t$elm$core$Dict$foldr,\n\t\tF3(\n\t\t\tfunction (key, value, list) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t_Utils_Tuple2(key, value),\n\t\t\t\t\tlist);\n\t\t\t}),\n\t\t_List_Nil,\n\t\tdict);\n};\nvar $elm$core$Dict$keys = function (dict) {\n\treturn A3(\n\t\t$elm$core$Dict$foldr,\n\t\tF3(\n\t\t\tfunction (key, value, keyList) {\n\t\t\t\treturn A2($elm$core$List$cons, key, keyList);\n\t\t\t}),\n\t\t_List_Nil,\n\t\tdict);\n};\nvar $elm$core$Set$toList = function (_v0) {\n\tvar dict = _v0;\n\treturn $elm$core$Dict$keys(dict);\n};\nvar $elm$core$Elm$JsArray$foldr = _JsArray_foldr;\nvar $elm$core$Array$foldr = F3(\n\tfunction (func, baseCase, _v0) {\n\t\tvar tree = _v0.c;\n\t\tvar tail = _v0.d;\n\t\tvar helper = F2(\n\t\t\tfunction (node, acc) {\n\t\t\t\tif (!node.$) {\n\t\t\t\t\tvar subTree = node.a;\n\t\t\t\t\treturn A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree);\n\t\t\t\t} else {\n\t\t\t\t\tvar values = node.a;\n\t\t\t\t\treturn A3($elm$core$Elm$JsArray$foldr, func, acc, values);\n\t\t\t\t}\n\t\t\t});\n\t\treturn A3(\n\t\t\t$elm$core$Elm$JsArray$foldr,\n\t\t\thelper,\n\t\t\tA3($elm$core$Elm$JsArray$foldr, func, baseCase, tail),\n\t\t\ttree);\n\t});\nvar $elm$core$Array$toList = function (array) {\n\treturn A3($elm$core$Array$foldr, $elm$core$List$cons, _List_Nil, array);\n};\nvar $elm$core$Result$Err = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$json$Json$Decode$Failure = F2(\n\tfunction (a, b) {\n\t\treturn {$: 3, a: a, b: b};\n\t});\nvar $elm$json$Json$Decode$Field = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $elm$json$Json$Decode$Index = F2(\n\tfunction (a, b) {\n\t\treturn {$: 1, a: a, b: b};\n\t});\nvar $elm$core$Result$Ok = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$json$Json$Decode$OneOf = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$core$Basics$False = 1;\nvar $elm$core$Basics$add = _Basics_add;\nvar $elm$core$Maybe$Just = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$core$Maybe$Nothing = {$: 1};\nvar $elm$core$String$all = _String_all;\nvar $elm$core$Basics$and = _Basics_and;\nvar $elm$core$Basics$append = _Utils_append;\nvar $elm$json$Json$Encode$encode = _Json_encode;\nvar $elm$core$String$fromInt = _String_fromNumber;\nvar $elm$core$String$join = F2(\n\tfunction (sep, chunks) {\n\t\treturn A2(\n\t\t\t_String_join,\n\t\t\tsep,\n\t\t\t_List_toArray(chunks));\n\t});\nvar $elm$core$String$split = F2(\n\tfunction (sep, string) {\n\t\treturn _List_fromArray(\n\t\t\tA2(_String_split, sep, string));\n\t});\nvar $elm$json$Json$Decode$indent = function (str) {\n\treturn A2(\n\t\t$elm$core$String$join,\n\t\t'\\n ',\n\t\tA2($elm$core$String$split, '\\n', str));\n};\nvar $elm$core$List$foldl = F3(\n\tfunction (func, acc, list) {\n\t\tfoldl:\n\t\twhile (true) {\n\t\t\tif (!list.b) {\n\t\t\t\treturn acc;\n\t\t\t} else {\n\t\t\t\tvar x = list.a;\n\t\t\t\tvar xs = list.b;\n\t\t\t\tvar $temp$func = func,\n\t\t\t\t\t$temp$acc = A2(func, x, acc),\n\t\t\t\t\t$temp$list = xs;\n\t\t\t\tfunc = $temp$func;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tlist = $temp$list;\n\t\t\t\tcontinue foldl;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$length = function (xs) {\n\treturn A3(\n\t\t$elm$core$List$foldl,\n\t\tF2(\n\t\t\tfunction (_v0, i) {\n\t\t\t\treturn i + 1;\n\t\t\t}),\n\t\t0,\n\t\txs);\n};\nvar $elm$core$List$map2 = _List_map2;\nvar $elm$core$Basics$le = _Utils_le;\nvar $elm$core$Basics$sub = _Basics_sub;\nvar $elm$core$List$rangeHelp = F3(\n\tfunction (lo, hi, list) {\n\t\trangeHelp:\n\t\twhile (true) {\n\t\t\tif (_Utils_cmp(lo, hi) < 1) {\n\t\t\t\tvar $temp$lo = lo,\n\t\t\t\t\t$temp$hi = hi - 1,\n\t\t\t\t\t$temp$list = A2($elm$core$List$cons, hi, list);\n\t\t\t\tlo = $temp$lo;\n\t\t\t\thi = $temp$hi;\n\t\t\t\tlist = $temp$list;\n\t\t\t\tcontinue rangeHelp;\n\t\t\t} else {\n\t\t\t\treturn list;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$range = F2(\n\tfunction (lo, hi) {\n\t\treturn A3($elm$core$List$rangeHelp, lo, hi, _List_Nil);\n\t});\nvar $elm$core$List$indexedMap = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$map2,\n\t\t\tf,\n\t\t\tA2(\n\t\t\t\t$elm$core$List$range,\n\t\t\t\t0,\n\t\t\t\t$elm$core$List$length(xs) - 1),\n\t\t\txs);\n\t});\nvar $elm$core$Char$toCode = _Char_toCode;\nvar $elm$core$Char$isLower = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (97 <= code) && (code <= 122);\n};\nvar $elm$core$Char$isUpper = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (code <= 90) && (65 <= code);\n};\nvar $elm$core$Basics$or = _Basics_or;\nvar $elm$core$Char$isAlpha = function (_char) {\n\treturn $elm$core$Char$isLower(_char) || $elm$core$Char$isUpper(_char);\n};\nvar $elm$core$Char$isDigit = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (code <= 57) && (48 <= code);\n};\nvar $elm$core$Char$isAlphaNum = function (_char) {\n\treturn $elm$core$Char$isLower(_char) || ($elm$core$Char$isUpper(_char) || $elm$core$Char$isDigit(_char));\n};\nvar $elm$core$List$reverse = function (list) {\n\treturn A3($elm$core$List$foldl, $elm$core$List$cons, _List_Nil, list);\n};\nvar $elm$core$String$uncons = _String_uncons;\nvar $elm$json$Json$Decode$errorOneOf = F2(\n\tfunction (i, error) {\n\t\treturn '\\n\\n(' + ($elm$core$String$fromInt(i + 1) + (') ' + $elm$json$Json$Decode$indent(\n\t\t\t$elm$json$Json$Decode$errorToString(error))));\n\t});\nvar $elm$json$Json$Decode$errorToString = function (error) {\n\treturn A2($elm$json$Json$Decode$errorToStringHelp, error, _List_Nil);\n};\nvar $elm$json$Json$Decode$errorToStringHelp = F2(\n\tfunction (error, context) {\n\t\terrorToStringHelp:\n\t\twhile (true) {\n\t\t\tswitch (error.$) {\n\t\t\t\tcase 0:\n\t\t\t\t\tvar f = error.a;\n\t\t\t\t\tvar err = error.b;\n\t\t\t\t\tvar isSimple = function () {\n\t\t\t\t\t\tvar _v1 = $elm$core$String$uncons(f);\n\t\t\t\t\t\tif (_v1.$ === 1) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar _v2 = _v1.a;\n\t\t\t\t\t\t\tvar _char = _v2.a;\n\t\t\t\t\t\t\tvar rest = _v2.b;\n\t\t\t\t\t\t\treturn $elm$core$Char$isAlpha(_char) && A2($elm$core$String$all, $elm$core$Char$isAlphaNum, rest);\n\t\t\t\t\t\t}\n\t\t\t\t\t}();\n\t\t\t\t\tvar fieldName = isSimple ? ('.' + f) : ('[\\'' + (f + '\\']'));\n\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t$temp$context = A2($elm$core$List$cons, fieldName, context);\n\t\t\t\t\terror = $temp$error;\n\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\tcase 1:\n\t\t\t\t\tvar i = error.a;\n\t\t\t\t\tvar err = error.b;\n\t\t\t\t\tvar indexName = '[' + ($elm$core$String$fromInt(i) + ']');\n\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t$temp$context = A2($elm$core$List$cons, indexName, context);\n\t\t\t\t\terror = $temp$error;\n\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\tcase 2:\n\t\t\t\t\tvar errors = error.a;\n\t\t\t\t\tif (!errors.b) {\n\t\t\t\t\t\treturn 'Ran into a Json.Decode.oneOf with no possibilities' + function () {\n\t\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\t\treturn '!';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn ' at json' + A2(\n\t\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t$elm$core$List$reverse(context));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!errors.b.b) {\n\t\t\t\t\t\t\tvar err = errors.a;\n\t\t\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t\t\t$temp$context = context;\n\t\t\t\t\t\t\terror = $temp$error;\n\t\t\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar starter = function () {\n\t\t\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\t\t\treturn 'Json.Decode.oneOf';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn 'The Json.Decode.oneOf at json' + A2(\n\t\t\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t\t$elm$core$List$reverse(context));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}();\n\t\t\t\t\t\t\tvar introduction = starter + (' failed in the following ' + ($elm$core$String$fromInt(\n\t\t\t\t\t\t\t\t$elm$core$List$length(errors)) + ' ways:'));\n\t\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t'\\n\\n',\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t\t\t\t\tintroduction,\n\t\t\t\t\t\t\t\t\tA2($elm$core$List$indexedMap, $elm$json$Json$Decode$errorOneOf, errors)));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tvar msg = error.a;\n\t\t\t\t\tvar json = error.b;\n\t\t\t\t\tvar introduction = function () {\n\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\treturn 'Problem with the given value:\\n\\n';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn 'Problem with the value at json' + (A2(\n\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t$elm$core$List$reverse(context)) + ':\\n\\n ');\n\t\t\t\t\t\t}\n\t\t\t\t\t}();\n\t\t\t\t\treturn introduction + ($elm$json$Json$Decode$indent(\n\t\t\t\t\t\tA2($elm$json$Json$Encode$encode, 4, json)) + ('\\n\\n' + msg));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Array$branchFactor = 32;\nvar $elm$core$Array$Array_elm_builtin = F4(\n\tfunction (a, b, c, d) {\n\t\treturn {$: 0, a: a, b: b, c: c, d: d};\n\t});\nvar $elm$core$Elm$JsArray$empty = _JsArray_empty;\nvar $elm$core$Basics$ceiling = _Basics_ceiling;\nvar $elm$core$Basics$fdiv = _Basics_fdiv;\nvar $elm$core$Basics$logBase = F2(\n\tfunction (base, number) {\n\t\treturn _Basics_log(number) / _Basics_log(base);\n\t});\nvar $elm$core$Basics$toFloat = _Basics_toFloat;\nvar $elm$core$Array$shiftStep = $elm$core$Basics$ceiling(\n\tA2($elm$core$Basics$logBase, 2, $elm$core$Array$branchFactor));\nvar $elm$core$Array$empty = A4($elm$core$Array$Array_elm_builtin, 0, $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, $elm$core$Elm$JsArray$empty);\nvar $elm$core$Elm$JsArray$initialize = _JsArray_initialize;\nvar $elm$core$Array$Leaf = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$core$Basics$apL = F2(\n\tfunction (f, x) {\n\t\treturn f(x);\n\t});\nvar $elm$core$Basics$apR = F2(\n\tfunction (x, f) {\n\t\treturn f(x);\n\t});\nvar $elm$core$Basics$eq = _Utils_equal;\nvar $elm$core$Basics$floor = _Basics_floor;\nvar $elm$core$Elm$JsArray$length = _JsArray_length;\nvar $elm$core$Basics$gt = _Utils_gt;\nvar $elm$core$Basics$max = F2(\n\tfunction (x, y) {\n\t\treturn (_Utils_cmp(x, y) > 0) ? x : y;\n\t});\nvar $elm$core$Basics$mul = _Basics_mul;\nvar $elm$core$Array$SubTree = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$core$Elm$JsArray$initializeFromList = _JsArray_initializeFromList;\nvar $elm$core$Array$compressNodes = F2(\n\tfunction (nodes, acc) {\n\t\tcompressNodes:\n\t\twhile (true) {\n\t\t\tvar _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodes);\n\t\t\tvar node = _v0.a;\n\t\t\tvar remainingNodes = _v0.b;\n\t\t\tvar newAcc = A2(\n\t\t\t\t$elm$core$List$cons,\n\t\t\t\t$elm$core$Array$SubTree(node),\n\t\t\t\tacc);\n\t\t\tif (!remainingNodes.b) {\n\t\t\t\treturn $elm$core$List$reverse(newAcc);\n\t\t\t} else {\n\t\t\t\tvar $temp$nodes = remainingNodes,\n\t\t\t\t\t$temp$acc = newAcc;\n\t\t\t\tnodes = $temp$nodes;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tcontinue compressNodes;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Tuple$first = function (_v0) {\n\tvar x = _v0.a;\n\treturn x;\n};\nvar $elm$core$Array$treeFromBuilder = F2(\n\tfunction (nodeList, nodeListSize) {\n\t\ttreeFromBuilder:\n\t\twhile (true) {\n\t\t\tvar newNodeSize = $elm$core$Basics$ceiling(nodeListSize / $elm$core$Array$branchFactor);\n\t\t\tif (newNodeSize === 1) {\n\t\t\t\treturn A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodeList).a;\n\t\t\t} else {\n\t\t\t\tvar $temp$nodeList = A2($elm$core$Array$compressNodes, nodeList, _List_Nil),\n\t\t\t\t\t$temp$nodeListSize = newNodeSize;\n\t\t\t\tnodeList = $temp$nodeList;\n\t\t\t\tnodeListSize = $temp$nodeListSize;\n\t\t\t\tcontinue treeFromBuilder;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Array$builderToArray = F2(\n\tfunction (reverseNodeList, builder) {\n\t\tif (!builder.g) {\n\t\t\treturn A4(\n\t\t\t\t$elm$core$Array$Array_elm_builtin,\n\t\t\t\t$elm$core$Elm$JsArray$length(builder.h),\n\t\t\t\t$elm$core$Array$shiftStep,\n\t\t\t\t$elm$core$Elm$JsArray$empty,\n\t\t\t\tbuilder.h);\n\t\t} else {\n\t\t\tvar treeLen = builder.g * $elm$core$Array$branchFactor;\n\t\t\tvar depth = $elm$core$Basics$floor(\n\t\t\t\tA2($elm$core$Basics$logBase, $elm$core$Array$branchFactor, treeLen - 1));\n\t\t\tvar correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.i) : builder.i;\n\t\t\tvar tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.g);\n\t\t\treturn A4(\n\t\t\t\t$elm$core$Array$Array_elm_builtin,\n\t\t\t\t$elm$core$Elm$JsArray$length(builder.h) + treeLen,\n\t\t\t\tA2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep),\n\t\t\t\ttree,\n\t\t\t\tbuilder.h);\n\t\t}\n\t});\nvar $elm$core$Basics$idiv = _Basics_idiv;\nvar $elm$core$Basics$lt = _Utils_lt;\nvar $elm$core$Array$initializeHelp = F5(\n\tfunction (fn, fromIndex, len, nodeList, tail) {\n\t\tinitializeHelp:\n\t\twhile (true) {\n\t\t\tif (fromIndex < 0) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Array$builderToArray,\n\t\t\t\t\tfalse,\n\t\t\t\t\t{i: nodeList, g: (len / $elm$core$Array$branchFactor) | 0, h: tail});\n\t\t\t} else {\n\t\t\t\tvar leaf = $elm$core$Array$Leaf(\n\t\t\t\t\tA3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn));\n\t\t\t\tvar $temp$fn = fn,\n\t\t\t\t\t$temp$fromIndex = fromIndex - $elm$core$Array$branchFactor,\n\t\t\t\t\t$temp$len = len,\n\t\t\t\t\t$temp$nodeList = A2($elm$core$List$cons, leaf, nodeList),\n\t\t\t\t\t$temp$tail = tail;\n\t\t\t\tfn = $temp$fn;\n\t\t\t\tfromIndex = $temp$fromIndex;\n\t\t\t\tlen = $temp$len;\n\t\t\t\tnodeList = $temp$nodeList;\n\t\t\t\ttail = $temp$tail;\n\t\t\t\tcontinue initializeHelp;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Basics$remainderBy = _Basics_remainderBy;\nvar $elm$core$Array$initialize = F2(\n\tfunction (len, fn) {\n\t\tif (len <= 0) {\n\t\t\treturn $elm$core$Array$empty;\n\t\t} else {\n\t\t\tvar tailLen = len % $elm$core$Array$branchFactor;\n\t\t\tvar tail = A3($elm$core$Elm$JsArray$initialize, tailLen, len - tailLen, fn);\n\t\t\tvar initialFromIndex = (len - tailLen) - $elm$core$Array$branchFactor;\n\t\t\treturn A5($elm$core$Array$initializeHelp, fn, initialFromIndex, len, _List_Nil, tail);\n\t\t}\n\t});\nvar $elm$core$Basics$True = 0;\nvar $elm$core$Result$isOk = function (result) {\n\tif (!result.$) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$json$Json$Decode$map = _Json_map1;\nvar $elm$json$Json$Decode$map2 = _Json_map2;\nvar $elm$json$Json$Decode$succeed = _Json_succeed;\nvar $elm$virtual_dom$VirtualDom$toHandlerInt = function (handler) {\n\tswitch (handler.$) {\n\t\tcase 0:\n\t\t\treturn 0;\n\t\tcase 1:\n\t\t\treturn 1;\n\t\tcase 2:\n\t\t\treturn 2;\n\t\tdefault:\n\t\t\treturn 3;\n\t}\n};\nvar $elm$browser$Browser$External = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$browser$Browser$Internal = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$core$Basics$identity = function (x) {\n\treturn x;\n};\nvar $elm$browser$Browser$Dom$NotFound = $elm$core$Basics$identity;\nvar $elm$url$Url$Http = 0;\nvar $elm$url$Url$Https = 1;\nvar $elm$url$Url$Url = F6(\n\tfunction (protocol, host, port_, path, query, fragment) {\n\t\treturn {dx: fragment, e6: host, dY: path, d_: port_, d3: protocol, cT: query};\n\t});\nvar $elm$core$String$contains = _String_contains;\nvar $elm$core$String$length = _String_length;\nvar $elm$core$String$slice = _String_slice;\nvar $elm$core$String$dropLeft = F2(\n\tfunction (n, string) {\n\t\treturn (n < 1) ? string : A3(\n\t\t\t$elm$core$String$slice,\n\t\t\tn,\n\t\t\t$elm$core$String$length(string),\n\t\t\tstring);\n\t});\nvar $elm$core$String$indexes = _String_indexes;\nvar $elm$core$String$isEmpty = function (string) {\n\treturn string === '';\n};\nvar $elm$core$String$left = F2(\n\tfunction (n, string) {\n\t\treturn (n < 1) ? '' : A3($elm$core$String$slice, 0, n, string);\n\t});\nvar $elm$core$String$toInt = _String_toInt;\nvar $elm$url$Url$chompBeforePath = F5(\n\tfunction (protocol, path, params, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str) || A2($elm$core$String$contains, '@', str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, ':', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t\tA6($elm$url$Url$Url, protocol, str, $elm$core$Maybe$Nothing, path, params, frag));\n\t\t\t} else {\n\t\t\t\tif (!_v0.b.b) {\n\t\t\t\t\tvar i = _v0.a;\n\t\t\t\t\tvar _v1 = $elm$core$String$toInt(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str));\n\t\t\t\t\tif (_v1.$ === 1) {\n\t\t\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar port_ = _v1;\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t\t\t\tA6(\n\t\t\t\t\t\t\t\t$elm$url$Url$Url,\n\t\t\t\t\t\t\t\tprotocol,\n\t\t\t\t\t\t\t\tA2($elm$core$String$left, i, str),\n\t\t\t\t\t\t\t\tport_,\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tparams,\n\t\t\t\t\t\t\t\tfrag));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompBeforeQuery = F4(\n\tfunction (protocol, params, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '/', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A5($elm$url$Url$chompBeforePath, protocol, '/', params, frag, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$url$Url$chompBeforePath,\n\t\t\t\t\tprotocol,\n\t\t\t\t\tA2($elm$core$String$dropLeft, i, str),\n\t\t\t\t\tparams,\n\t\t\t\t\tfrag,\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompBeforeFragment = F3(\n\tfunction (protocol, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '?', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A4($elm$url$Url$chompBeforeQuery, protocol, $elm$core$Maybe$Nothing, frag, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A4(\n\t\t\t\t\t$elm$url$Url$chompBeforeQuery,\n\t\t\t\t\tprotocol,\n\t\t\t\t\t$elm$core$Maybe$Just(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str)),\n\t\t\t\t\tfrag,\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompAfterProtocol = F2(\n\tfunction (protocol, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '#', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A3($elm$url$Url$chompBeforeFragment, protocol, $elm$core$Maybe$Nothing, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$url$Url$chompBeforeFragment,\n\t\t\t\t\tprotocol,\n\t\t\t\t\t$elm$core$Maybe$Just(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str)),\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$String$startsWith = _String_startsWith;\nvar $elm$url$Url$fromString = function (str) {\n\treturn A2($elm$core$String$startsWith, 'http://', str) ? A2(\n\t\t$elm$url$Url$chompAfterProtocol,\n\t\t0,\n\t\tA2($elm$core$String$dropLeft, 7, str)) : (A2($elm$core$String$startsWith, 'https://', str) ? A2(\n\t\t$elm$url$Url$chompAfterProtocol,\n\t\t1,\n\t\tA2($elm$core$String$dropLeft, 8, str)) : $elm$core$Maybe$Nothing);\n};\nvar $elm$core$Basics$never = function (_v0) {\n\tnever:\n\twhile (true) {\n\t\tvar nvr = _v0;\n\t\tvar $temp$_v0 = nvr;\n\t\t_v0 = $temp$_v0;\n\t\tcontinue never;\n\t}\n};\nvar $elm$core$Task$Perform = $elm$core$Basics$identity;\nvar $elm$core$Task$succeed = _Scheduler_succeed;\nvar $elm$core$Task$init = $elm$core$Task$succeed(0);\nvar $elm$core$List$foldrHelper = F4(\n\tfunction (fn, acc, ctr, ls) {\n\t\tif (!ls.b) {\n\t\t\treturn acc;\n\t\t} else {\n\t\t\tvar a = ls.a;\n\t\t\tvar r1 = ls.b;\n\t\t\tif (!r1.b) {\n\t\t\t\treturn A2(fn, a, acc);\n\t\t\t} else {\n\t\t\t\tvar b = r1.a;\n\t\t\t\tvar r2 = r1.b;\n\t\t\t\tif (!r2.b) {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\tfn,\n\t\t\t\t\t\ta,\n\t\t\t\t\t\tA2(fn, b, acc));\n\t\t\t\t} else {\n\t\t\t\t\tvar c = r2.a;\n\t\t\t\t\tvar r3 = r2.b;\n\t\t\t\t\tif (!r3.b) {\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\ta,\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\tb,\n\t\t\t\t\t\t\t\tA2(fn, c, acc)));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar d = r3.a;\n\t\t\t\t\t\tvar r4 = r3.b;\n\t\t\t\t\t\tvar res = (ctr > 500) ? A3(\n\t\t\t\t\t\t\t$elm$core$List$foldl,\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\tacc,\n\t\t\t\t\t\t\t$elm$core$List$reverse(r4)) : A4($elm$core$List$foldrHelper, fn, acc, ctr + 1, r4);\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\ta,\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\tb,\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\t\tc,\n\t\t\t\t\t\t\t\t\tA2(fn, d, res))));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$foldr = F3(\n\tfunction (fn, acc, ls) {\n\t\treturn A4($elm$core$List$foldrHelper, fn, acc, 0, ls);\n\t});\nvar $elm$core$List$map = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\tF2(\n\t\t\t\tfunction (x, acc) {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t\tf(x),\n\t\t\t\t\t\tacc);\n\t\t\t\t}),\n\t\t\t_List_Nil,\n\t\t\txs);\n\t});\nvar $elm$core$Task$andThen = _Scheduler_andThen;\nvar $elm$core$Task$map = F2(\n\tfunction (func, taskA) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (a) {\n\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\tfunc(a));\n\t\t\t},\n\t\t\ttaskA);\n\t});\nvar $elm$core$Task$map2 = F3(\n\tfunction (func, taskA, taskB) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (a) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\tfunction (b) {\n\t\t\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\t\t\tA2(func, a, b));\n\t\t\t\t\t},\n\t\t\t\t\ttaskB);\n\t\t\t},\n\t\t\ttaskA);\n\t});\nvar $elm$core$Task$sequence = function (tasks) {\n\treturn A3(\n\t\t$elm$core$List$foldr,\n\t\t$elm$core$Task$map2($elm$core$List$cons),\n\t\t$elm$core$Task$succeed(_List_Nil),\n\t\ttasks);\n};\nvar $elm$core$Platform$sendToApp = _Platform_sendToApp;\nvar $elm$core$Task$spawnCmd = F2(\n\tfunction (router, _v0) {\n\t\tvar task = _v0;\n\t\treturn _Scheduler_spawn(\n\t\t\tA2(\n\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t$elm$core$Platform$sendToApp(router),\n\t\t\t\ttask));\n\t});\nvar $elm$core$Task$onEffects = F3(\n\tfunction (router, commands, state) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$map,\n\t\t\tfunction (_v0) {\n\t\t\t\treturn 0;\n\t\t\t},\n\t\t\t$elm$core$Task$sequence(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t$elm$core$Task$spawnCmd(router),\n\t\t\t\t\tcommands)));\n\t});\nvar $elm$core$Task$onSelfMsg = F3(\n\tfunction (_v0, _v1, _v2) {\n\t\treturn $elm$core$Task$succeed(0);\n\t});\nvar $elm$core$Task$cmdMap = F2(\n\tfunction (tagger, _v0) {\n\t\tvar task = _v0;\n\t\treturn A2($elm$core$Task$map, tagger, task);\n\t});\n_Platform_effectManagers['Task'] = _Platform_createManager($elm$core$Task$init, $elm$core$Task$onEffects, $elm$core$Task$onSelfMsg, $elm$core$Task$cmdMap);\nvar $elm$core$Task$command = _Platform_leaf('Task');\nvar $elm$core$Task$perform = F2(\n\tfunction (toMessage, task) {\n\t\treturn $elm$core$Task$command(\n\t\t\tA2($elm$core$Task$map, toMessage, task));\n\t});\nvar $elm$browser$Browser$application = _Browser_application;\nvar $elm$core$Basics$composeR = F3(\n\tfunction (f, g, x) {\n\t\treturn g(\n\t\t\tf(x));\n\t});\nvar $author$project$Main$Model = F2(\n\tfunction (shared, page) {\n\t\treturn {C: page, x: shared};\n\t});\nvar $author$project$Main$Pages = function (a) {\n\treturn {$: 3, a: a};\n};\nvar $author$project$Main$Shared = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$core$Platform$Cmd$batch = _Platform_batch;\nvar $author$project$Spa$Generated$Route$NotFound = {$: 2};\nvar $elm$url$Url$Parser$State = F5(\n\tfunction (visited, unvisited, params, frag, value) {\n\t\treturn {S: frag, fA: params, N: unvisited, ez: value, W: visited};\n\t});\nvar $elm$url$Url$Parser$getFirstMatch = function (states) {\n\tgetFirstMatch:\n\twhile (true) {\n\t\tif (!states.b) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar state = states.a;\n\t\t\tvar rest = states.b;\n\t\t\tvar _v1 = state.N;\n\t\t\tif (!_v1.b) {\n\t\t\t\treturn $elm$core$Maybe$Just(state.ez);\n\t\t\t} else {\n\t\t\t\tif ((_v1.a === '') && (!_v1.b.b)) {\n\t\t\t\t\treturn $elm$core$Maybe$Just(state.ez);\n\t\t\t\t} else {\n\t\t\t\t\tvar $temp$states = rest;\n\t\t\t\t\tstates = $temp$states;\n\t\t\t\t\tcontinue getFirstMatch;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\nvar $elm$url$Url$Parser$removeFinalEmpty = function (segments) {\n\tif (!segments.b) {\n\t\treturn _List_Nil;\n\t} else {\n\t\tif ((segments.a === '') && (!segments.b.b)) {\n\t\t\treturn _List_Nil;\n\t\t} else {\n\t\t\tvar segment = segments.a;\n\t\t\tvar rest = segments.b;\n\t\t\treturn A2(\n\t\t\t\t$elm$core$List$cons,\n\t\t\t\tsegment,\n\t\t\t\t$elm$url$Url$Parser$removeFinalEmpty(rest));\n\t\t}\n\t}\n};\nvar $elm$url$Url$Parser$preparePath = function (path) {\n\tvar _v0 = A2($elm$core$String$split, '/', path);\n\tif (_v0.b && (_v0.a === '')) {\n\t\tvar segments = _v0.b;\n\t\treturn $elm$url$Url$Parser$removeFinalEmpty(segments);\n\t} else {\n\t\tvar segments = _v0;\n\t\treturn $elm$url$Url$Parser$removeFinalEmpty(segments);\n\t}\n};\nvar $elm$url$Url$Parser$addToParametersHelp = F2(\n\tfunction (value, maybeList) {\n\t\tif (maybeList.$ === 1) {\n\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[value]));\n\t\t} else {\n\t\t\tvar list = maybeList.a;\n\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\tA2($elm$core$List$cons, value, list));\n\t\t}\n\t});\nvar $elm$url$Url$percentDecode = _Url_percentDecode;\nvar $elm$core$Basics$compare = _Utils_compare;\nvar $elm$core$Dict$get = F2(\n\tfunction (targetKey, dict) {\n\t\tget:\n\t\twhile (true) {\n\t\t\tif (dict.$ === -2) {\n\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t} else {\n\t\t\t\tvar key = dict.b;\n\t\t\t\tvar value = dict.c;\n\t\t\t\tvar left = dict.d;\n\t\t\t\tvar right = dict.e;\n\t\t\t\tvar _v1 = A2($elm$core$Basics$compare, targetKey, key);\n\t\t\t\tswitch (_v1) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tvar $temp$targetKey = targetKey,\n\t\t\t\t\t\t\t$temp$dict = left;\n\t\t\t\t\t\ttargetKey = $temp$targetKey;\n\t\t\t\t\t\tdict = $temp$dict;\n\t\t\t\t\t\tcontinue get;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(value);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar $temp$targetKey = targetKey,\n\t\t\t\t\t\t\t$temp$dict = right;\n\t\t\t\t\t\ttargetKey = $temp$targetKey;\n\t\t\t\t\t\tdict = $temp$dict;\n\t\t\t\t\t\tcontinue get;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$Black = 1;\nvar $elm$core$Dict$RBNode_elm_builtin = F5(\n\tfunction (a, b, c, d, e) {\n\t\treturn {$: -1, a: a, b: b, c: c, d: d, e: e};\n\t});\nvar $elm$core$Dict$RBEmpty_elm_builtin = {$: -2};\nvar $elm$core$Dict$Red = 0;\nvar $elm$core$Dict$balance = F5(\n\tfunction (color, key, value, left, right) {\n\t\tif ((right.$ === -1) && (!right.a)) {\n\t\t\tvar _v1 = right.a;\n\t\t\tvar rK = right.b;\n\t\t\tvar rV = right.c;\n\t\t\tvar rLeft = right.d;\n\t\t\tvar rRight = right.e;\n\t\t\tif ((left.$ === -1) && (!left.a)) {\n\t\t\t\tvar _v3 = left.a;\n\t\t\t\tvar lK = left.b;\n\t\t\t\tvar lV = left.c;\n\t\t\t\tvar lLeft = left.d;\n\t\t\t\tvar lRight = left.e;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t0,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\tcolor,\n\t\t\t\t\trK,\n\t\t\t\t\trV,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, left, rLeft),\n\t\t\t\t\trRight);\n\t\t\t}\n\t\t} else {\n\t\t\tif ((((left.$ === -1) && (!left.a)) && (left.d.$ === -1)) && (!left.d.a)) {\n\t\t\t\tvar _v5 = left.a;\n\t\t\t\tvar lK = left.b;\n\t\t\t\tvar lV = left.c;\n\t\t\t\tvar _v6 = left.d;\n\t\t\t\tvar _v7 = _v6.a;\n\t\t\t\tvar llK = _v6.b;\n\t\t\t\tvar llV = _v6.c;\n\t\t\t\tvar llLeft = _v6.d;\n\t\t\t\tvar llRight = _v6.e;\n\t\t\t\tvar lRight = left.e;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t0,\n\t\t\t\t\tlK,\n\t\t\t\t\tlV,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, llK, llV, llLeft, llRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, key, value, lRight, right));\n\t\t\t} else {\n\t\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right);\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$insertHelp = F3(\n\tfunction (key, value, dict) {\n\t\tif (dict.$ === -2) {\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin);\n\t\t} else {\n\t\t\tvar nColor = dict.a;\n\t\t\tvar nKey = dict.b;\n\t\t\tvar nValue = dict.c;\n\t\t\tvar nLeft = dict.d;\n\t\t\tvar nRight = dict.e;\n\t\t\tvar _v1 = A2($elm$core$Basics$compare, key, nKey);\n\t\t\tswitch (_v1) {\n\t\t\t\tcase 0:\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\tA3($elm$core$Dict$insertHelp, key, value, nLeft),\n\t\t\t\t\t\tnRight);\n\t\t\t\tcase 1:\n\t\t\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight);\n\t\t\t\tdefault:\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\tnLeft,\n\t\t\t\t\t\tA3($elm$core$Dict$insertHelp, key, value, nRight));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$insert = F3(\n\tfunction (key, value, dict) {\n\t\tvar _v0 = A3($elm$core$Dict$insertHelp, key, value, dict);\n\t\tif ((_v0.$ === -1) && (!_v0.a)) {\n\t\t\tvar _v1 = _v0.a;\n\t\t\tvar k = _v0.b;\n\t\t\tvar v = _v0.c;\n\t\t\tvar l = _v0.d;\n\t\t\tvar r = _v0.e;\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, 1, k, v, l, r);\n\t\t} else {\n\t\t\tvar x = _v0;\n\t\t\treturn x;\n\t\t}\n\t});\nvar $elm$core$Dict$getMin = function (dict) {\n\tgetMin:\n\twhile (true) {\n\t\tif ((dict.$ === -1) && (dict.d.$ === -1)) {\n\t\t\tvar left = dict.d;\n\t\t\tvar $temp$dict = left;\n\t\t\tdict = $temp$dict;\n\t\t\tcontinue getMin;\n\t\t} else {\n\t\t\treturn dict;\n\t\t}\n\t}\n};\nvar $elm$core$Dict$moveRedLeft = function (dict) {\n\tif (((dict.$ === -1) && (dict.d.$ === -1)) && (dict.e.$ === -1)) {\n\t\tif ((dict.e.d.$ === -1) && (!dict.e.d.a)) {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v1 = dict.d;\n\t\t\tvar lClr = _v1.a;\n\t\t\tvar lK = _v1.b;\n\t\t\tvar lV = _v1.c;\n\t\t\tvar lLeft = _v1.d;\n\t\t\tvar lRight = _v1.e;\n\t\t\tvar _v2 = dict.e;\n\t\t\tvar rClr = _v2.a;\n\t\t\tvar rK = _v2.b;\n\t\t\tvar rV = _v2.c;\n\t\t\tvar rLeft = _v2.d;\n\t\t\tvar _v3 = rLeft.a;\n\t\t\tvar rlK = rLeft.b;\n\t\t\tvar rlV = rLeft.c;\n\t\t\tvar rlL = rLeft.d;\n\t\t\tvar rlR = rLeft.e;\n\t\t\tvar rRight = _v2.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t0,\n\t\t\t\trlK,\n\t\t\t\trlV,\n\t\t\t\tA5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\trlL),\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, rK, rV, rlR, rRight));\n\t\t} else {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v4 = dict.d;\n\t\t\tvar lClr = _v4.a;\n\t\t\tvar lK = _v4.b;\n\t\t\tvar lV = _v4.c;\n\t\t\tvar lLeft = _v4.d;\n\t\t\tvar lRight = _v4.e;\n\t\t\tvar _v5 = dict.e;\n\t\t\tvar rClr = _v5.a;\n\t\t\tvar rK = _v5.b;\n\t\t\tvar rV = _v5.c;\n\t\t\tvar rLeft = _v5.d;\n\t\t\tvar rRight = _v5.e;\n\t\t\tif (clr === 1) {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn dict;\n\t}\n};\nvar $elm$core$Dict$moveRedRight = function (dict) {\n\tif (((dict.$ === -1) && (dict.d.$ === -1)) && (dict.e.$ === -1)) {\n\t\tif ((dict.d.d.$ === -1) && (!dict.d.d.a)) {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v1 = dict.d;\n\t\t\tvar lClr = _v1.a;\n\t\t\tvar lK = _v1.b;\n\t\t\tvar lV = _v1.c;\n\t\t\tvar _v2 = _v1.d;\n\t\t\tvar _v3 = _v2.a;\n\t\t\tvar llK = _v2.b;\n\t\t\tvar llV = _v2.c;\n\t\t\tvar llLeft = _v2.d;\n\t\t\tvar llRight = _v2.e;\n\t\t\tvar lRight = _v1.e;\n\t\t\tvar _v4 = dict.e;\n\t\t\tvar rClr = _v4.a;\n\t\t\tvar rK = _v4.b;\n\t\t\tvar rV = _v4.c;\n\t\t\tvar rLeft = _v4.d;\n\t\t\tvar rRight = _v4.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t0,\n\t\t\t\tlK,\n\t\t\t\tlV,\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, llK, llV, llLeft, llRight),\n\t\t\t\tA5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tlRight,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight)));\n\t\t} else {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v5 = dict.d;\n\t\t\tvar lClr = _v5.a;\n\t\t\tvar lK = _v5.b;\n\t\t\tvar lV = _v5.c;\n\t\t\tvar lLeft = _v5.d;\n\t\t\tvar lRight = _v5.e;\n\t\t\tvar _v6 = dict.e;\n\t\t\tvar rClr = _v6.a;\n\t\t\tvar rK = _v6.b;\n\t\t\tvar rV = _v6.c;\n\t\t\tvar rLeft = _v6.d;\n\t\t\tvar rRight = _v6.e;\n\t\t\tif (clr === 1) {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn dict;\n\t}\n};\nvar $elm$core$Dict$removeHelpPrepEQGT = F7(\n\tfunction (targetKey, dict, color, key, value, left, right) {\n\t\tif ((left.$ === -1) && (!left.a)) {\n\t\t\tvar _v1 = left.a;\n\t\t\tvar lK = left.b;\n\t\t\tvar lV = left.c;\n\t\t\tvar lLeft = left.d;\n\t\t\tvar lRight = left.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\tcolor,\n\t\t\t\tlK,\n\t\t\t\tlV,\n\t\t\t\tlLeft,\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, lRight, right));\n\t\t} else {\n\t\t\t_v2$2:\n\t\t\twhile (true) {\n\t\t\t\tif ((right.$ === -1) && (right.a === 1)) {\n\t\t\t\t\tif (right.d.$ === -1) {\n\t\t\t\t\t\tif (right.d.a === 1) {\n\t\t\t\t\t\t\tvar _v3 = right.a;\n\t\t\t\t\t\t\tvar _v4 = right.d;\n\t\t\t\t\t\t\tvar _v5 = _v4.a;\n\t\t\t\t\t\t\treturn $elm$core$Dict$moveRedRight(dict);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbreak _v2$2;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _v6 = right.a;\n\t\t\t\t\t\tvar _v7 = right.d;\n\t\t\t\t\t\treturn $elm$core$Dict$moveRedRight(dict);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tbreak _v2$2;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dict;\n\t\t}\n\t});\nvar $elm$core$Dict$removeMin = function (dict) {\n\tif ((dict.$ === -1) && (dict.d.$ === -1)) {\n\t\tvar color = dict.a;\n\t\tvar key = dict.b;\n\t\tvar value = dict.c;\n\t\tvar left = dict.d;\n\t\tvar lColor = left.a;\n\t\tvar lLeft = left.d;\n\t\tvar right = dict.e;\n\t\tif (lColor === 1) {\n\t\t\tif ((lLeft.$ === -1) && (!lLeft.a)) {\n\t\t\t\tvar _v3 = lLeft.a;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\tcolor,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\t$elm$core$Dict$removeMin(left),\n\t\t\t\t\tright);\n\t\t\t} else {\n\t\t\t\tvar _v4 = $elm$core$Dict$moveRedLeft(dict);\n\t\t\t\tif (_v4.$ === -1) {\n\t\t\t\t\tvar nColor = _v4.a;\n\t\t\t\t\tvar nKey = _v4.b;\n\t\t\t\t\tvar nValue = _v4.c;\n\t\t\t\t\tvar nLeft = _v4.d;\n\t\t\t\t\tvar nRight = _v4.e;\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\t$elm$core$Dict$removeMin(nLeft),\n\t\t\t\t\t\tnRight);\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\tcolor,\n\t\t\t\tkey,\n\t\t\t\tvalue,\n\t\t\t\t$elm$core$Dict$removeMin(left),\n\t\t\t\tright);\n\t\t}\n\t} else {\n\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t}\n};\nvar $elm$core$Dict$removeHelp = F2(\n\tfunction (targetKey, dict) {\n\t\tif (dict.$ === -2) {\n\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t} else {\n\t\t\tvar color = dict.a;\n\t\t\tvar key = dict.b;\n\t\t\tvar value = dict.c;\n\t\t\tvar left = dict.d;\n\t\t\tvar right = dict.e;\n\t\t\tif (_Utils_cmp(targetKey, key) < 0) {\n\t\t\t\tif ((left.$ === -1) && (left.a === 1)) {\n\t\t\t\t\tvar _v4 = left.a;\n\t\t\t\t\tvar lLeft = left.d;\n\t\t\t\t\tif ((lLeft.$ === -1) && (!lLeft.a)) {\n\t\t\t\t\t\tvar _v6 = lLeft.a;\n\t\t\t\t\t\treturn A5(\n\t\t\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t\t\tcolor,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, left),\n\t\t\t\t\t\t\tright);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _v7 = $elm$core$Dict$moveRedLeft(dict);\n\t\t\t\t\t\tif (_v7.$ === -1) {\n\t\t\t\t\t\t\tvar nColor = _v7.a;\n\t\t\t\t\t\t\tvar nKey = _v7.b;\n\t\t\t\t\t\t\tvar nValue = _v7.c;\n\t\t\t\t\t\t\tvar nLeft = _v7.d;\n\t\t\t\t\t\t\tvar nRight = _v7.e;\n\t\t\t\t\t\t\treturn A5(\n\t\t\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\t\t\tnColor,\n\t\t\t\t\t\t\t\tnKey,\n\t\t\t\t\t\t\t\tnValue,\n\t\t\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, nLeft),\n\t\t\t\t\t\t\t\tnRight);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, left),\n\t\t\t\t\t\tright);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Dict$removeHelpEQGT,\n\t\t\t\t\ttargetKey,\n\t\t\t\t\tA7($elm$core$Dict$removeHelpPrepEQGT, targetKey, dict, color, key, value, left, right));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$removeHelpEQGT = F2(\n\tfunction (targetKey, dict) {\n\t\tif (dict.$ === -1) {\n\t\t\tvar color = dict.a;\n\t\t\tvar key = dict.b;\n\t\t\tvar value = dict.c;\n\t\t\tvar left = dict.d;\n\t\t\tvar right = dict.e;\n\t\t\tif (_Utils_eq(targetKey, key)) {\n\t\t\t\tvar _v1 = $elm$core$Dict$getMin(right);\n\t\t\t\tif (_v1.$ === -1) {\n\t\t\t\t\tvar minKey = _v1.b;\n\t\t\t\t\tvar minValue = _v1.c;\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tminKey,\n\t\t\t\t\t\tminValue,\n\t\t\t\t\t\tleft,\n\t\t\t\t\t\t$elm$core$Dict$removeMin(right));\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\tcolor,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tleft,\n\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, right));\n\t\t\t}\n\t\t} else {\n\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t}\n\t});\nvar $elm$core$Dict$remove = F2(\n\tfunction (key, dict) {\n\t\tvar _v0 = A2($elm$core$Dict$removeHelp, key, dict);\n\t\tif ((_v0.$ === -1) && (!_v0.a)) {\n\t\t\tvar _v1 = _v0.a;\n\t\t\tvar k = _v0.b;\n\t\t\tvar v = _v0.c;\n\t\t\tvar l = _v0.d;\n\t\t\tvar r = _v0.e;\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, 1, k, v, l, r);\n\t\t} else {\n\t\t\tvar x = _v0;\n\t\t\treturn x;\n\t\t}\n\t});\nvar $elm$core$Dict$update = F3(\n\tfunction (targetKey, alter, dictionary) {\n\t\tvar _v0 = alter(\n\t\t\tA2($elm$core$Dict$get, targetKey, dictionary));\n\t\tif (!_v0.$) {\n\t\t\tvar value = _v0.a;\n\t\t\treturn A3($elm$core$Dict$insert, targetKey, value, dictionary);\n\t\t} else {\n\t\t\treturn A2($elm$core$Dict$remove, targetKey, dictionary);\n\t\t}\n\t});\nvar $elm$url$Url$Parser$addParam = F2(\n\tfunction (segment, dict) {\n\t\tvar _v0 = A2($elm$core$String$split, '=', segment);\n\t\tif ((_v0.b && _v0.b.b) && (!_v0.b.b.b)) {\n\t\t\tvar rawKey = _v0.a;\n\t\t\tvar _v1 = _v0.b;\n\t\t\tvar rawValue = _v1.a;\n\t\t\tvar _v2 = $elm$url$Url$percentDecode(rawKey);\n\t\t\tif (_v2.$ === 1) {\n\t\t\t\treturn dict;\n\t\t\t} else {\n\t\t\t\tvar key = _v2.a;\n\t\t\t\tvar _v3 = $elm$url$Url$percentDecode(rawValue);\n\t\t\t\tif (_v3.$ === 1) {\n\t\t\t\t\treturn dict;\n\t\t\t\t} else {\n\t\t\t\t\tvar value = _v3.a;\n\t\t\t\t\treturn A3(\n\t\t\t\t\t\t$elm$core$Dict$update,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\t$elm$url$Url$Parser$addToParametersHelp(value),\n\t\t\t\t\t\tdict);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn dict;\n\t\t}\n\t});\nvar $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin;\nvar $elm$url$Url$Parser$prepareQuery = function (maybeQuery) {\n\tif (maybeQuery.$ === 1) {\n\t\treturn $elm$core$Dict$empty;\n\t} else {\n\t\tvar qry = maybeQuery.a;\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\t$elm$url$Url$Parser$addParam,\n\t\t\t$elm$core$Dict$empty,\n\t\t\tA2($elm$core$String$split, '&', qry));\n\t}\n};\nvar $elm$url$Url$Parser$parse = F2(\n\tfunction (_v0, url) {\n\t\tvar parser = _v0;\n\t\treturn $elm$url$Url$Parser$getFirstMatch(\n\t\t\tparser(\n\t\t\t\tA5(\n\t\t\t\t\t$elm$url$Url$Parser$State,\n\t\t\t\t\t_List_Nil,\n\t\t\t\t\t$elm$url$Url$Parser$preparePath(url.dY),\n\t\t\t\t\t$elm$url$Url$Parser$prepareQuery(url.cT),\n\t\t\t\t\turl.dx,\n\t\t\t\t\t$elm$core$Basics$identity)));\n\t});\nvar $author$project$Spa$Generated$Route$Login = {$: 1};\nvar $author$project$Spa$Generated$Route$Profile__Username_String = function (a) {\n\treturn {$: 6, a: a};\n};\nvar $author$project$Spa$Generated$Route$Projects = {$: 3};\nvar $author$project$Spa$Generated$Route$Register = {$: 4};\nvar $author$project$Spa$Generated$Route$Settings = {$: 5};\nvar $author$project$Spa$Generated$Route$Top = {$: 0};\nvar $elm$url$Url$Parser$Parser = $elm$core$Basics$identity;\nvar $elm$url$Url$Parser$mapState = F2(\n\tfunction (func, _v0) {\n\t\tvar visited = _v0.W;\n\t\tvar unvisited = _v0.N;\n\t\tvar params = _v0.fA;\n\t\tvar frag = _v0.S;\n\t\tvar value = _v0.ez;\n\t\treturn A5(\n\t\t\t$elm$url$Url$Parser$State,\n\t\t\tvisited,\n\t\t\tunvisited,\n\t\t\tparams,\n\t\t\tfrag,\n\t\t\tfunc(value));\n\t});\nvar $elm$url$Url$Parser$map = F2(\n\tfunction (subValue, _v0) {\n\t\tvar parseArg = _v0;\n\t\treturn function (_v1) {\n\t\t\tvar visited = _v1.W;\n\t\t\tvar unvisited = _v1.N;\n\t\t\tvar params = _v1.fA;\n\t\t\tvar frag = _v1.S;\n\t\t\tvar value = _v1.ez;\n\t\t\treturn A2(\n\t\t\t\t$elm$core$List$map,\n\t\t\t\t$elm$url$Url$Parser$mapState(value),\n\t\t\t\tparseArg(\n\t\t\t\t\tA5($elm$url$Url$Parser$State, visited, unvisited, params, frag, subValue)));\n\t\t};\n\t});\nvar $elm$core$List$append = F2(\n\tfunction (xs, ys) {\n\t\tif (!ys.b) {\n\t\t\treturn xs;\n\t\t} else {\n\t\t\treturn A3($elm$core$List$foldr, $elm$core$List$cons, ys, xs);\n\t\t}\n\t});\nvar $elm$core$List$concat = function (lists) {\n\treturn A3($elm$core$List$foldr, $elm$core$List$append, _List_Nil, lists);\n};\nvar $elm$core$List$concatMap = F2(\n\tfunction (f, list) {\n\t\treturn $elm$core$List$concat(\n\t\t\tA2($elm$core$List$map, f, list));\n\t});\nvar $elm$url$Url$Parser$oneOf = function (parsers) {\n\treturn function (state) {\n\t\treturn A2(\n\t\t\t$elm$core$List$concatMap,\n\t\t\tfunction (_v0) {\n\t\t\t\tvar parser = _v0;\n\t\t\t\treturn parser(state);\n\t\t\t},\n\t\t\tparsers);\n\t};\n};\nvar $elm$url$Url$Parser$s = function (str) {\n\treturn function (_v0) {\n\t\tvar visited = _v0.W;\n\t\tvar unvisited = _v0.N;\n\t\tvar params = _v0.fA;\n\t\tvar frag = _v0.S;\n\t\tvar value = _v0.ez;\n\t\tif (!unvisited.b) {\n\t\t\treturn _List_Nil;\n\t\t} else {\n\t\t\tvar next = unvisited.a;\n\t\t\tvar rest = unvisited.b;\n\t\t\treturn _Utils_eq(next, str) ? _List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA5(\n\t\t\t\t\t$elm$url$Url$Parser$State,\n\t\t\t\t\tA2($elm$core$List$cons, next, visited),\n\t\t\t\t\trest,\n\t\t\t\t\tparams,\n\t\t\t\t\tfrag,\n\t\t\t\t\tvalue)\n\t\t\t\t]) : _List_Nil;\n\t\t}\n\t};\n};\nvar $elm$url$Url$Parser$slash = F2(\n\tfunction (_v0, _v1) {\n\t\tvar parseBefore = _v0;\n\t\tvar parseAfter = _v1;\n\t\treturn function (state) {\n\t\t\treturn A2(\n\t\t\t\t$elm$core$List$concatMap,\n\t\t\t\tparseAfter,\n\t\t\t\tparseBefore(state));\n\t\t};\n\t});\nvar $elm$url$Url$Parser$custom = F2(\n\tfunction (tipe, stringToSomething) {\n\t\treturn function (_v0) {\n\t\t\tvar visited = _v0.W;\n\t\t\tvar unvisited = _v0.N;\n\t\t\tvar params = _v0.fA;\n\t\t\tvar frag = _v0.S;\n\t\t\tvar value = _v0.ez;\n\t\t\tif (!unvisited.b) {\n\t\t\t\treturn _List_Nil;\n\t\t\t} else {\n\t\t\t\tvar next = unvisited.a;\n\t\t\t\tvar rest = unvisited.b;\n\t\t\t\tvar _v2 = stringToSomething(next);\n\t\t\t\tif (!_v2.$) {\n\t\t\t\t\tvar nextValue = _v2.a;\n\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA5(\n\t\t\t\t\t\t\t$elm$url$Url$Parser$State,\n\t\t\t\t\t\t\tA2($elm$core$List$cons, next, visited),\n\t\t\t\t\t\t\trest,\n\t\t\t\t\t\t\tparams,\n\t\t\t\t\t\t\tfrag,\n\t\t\t\t\t\t\tvalue(nextValue))\n\t\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\treturn _List_Nil;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\nvar $elm$url$Url$Parser$string = A2($elm$url$Url$Parser$custom, 'STRING', $elm$core$Maybe$Just);\nvar $elm$url$Url$Parser$top = function (state) {\n\treturn _List_fromArray(\n\t\t[state]);\n};\nvar $author$project$Spa$Generated$Route$routes = $elm$url$Url$Parser$oneOf(\n\t_List_fromArray(\n\t\t[\n\t\t\tA2($elm$url$Url$Parser$map, $author$project$Spa$Generated$Route$Top, $elm$url$Url$Parser$top),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Login,\n\t\t\t$elm$url$Url$Parser$s('login')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$NotFound,\n\t\t\t$elm$url$Url$Parser$s('not-found')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Projects,\n\t\t\t$elm$url$Url$Parser$s('projects')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Register,\n\t\t\t$elm$url$Url$Parser$s('register')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Settings,\n\t\t\t$elm$url$Url$Parser$s('settings')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Profile__Username_String,\n\t\t\tA2(\n\t\t\t\t$elm$url$Url$Parser$map,\n\t\t\t\tfunction (username) {\n\t\t\t\t\treturn {cg: username};\n\t\t\t\t},\n\t\t\t\tA2(\n\t\t\t\t\t$elm$url$Url$Parser$slash,\n\t\t\t\t\t$elm$url$Url$Parser$s('profile'),\n\t\t\t\t\t$elm$url$Url$Parser$string)))\n\t\t]));\nvar $author$project$Spa$Generated$Route$fromUrl = $elm$url$Url$Parser$parse($author$project$Spa$Generated$Route$routes);\nvar $elm$core$Maybe$withDefault = F2(\n\tfunction (_default, maybe) {\n\t\tif (!maybe.$) {\n\t\t\tvar value = maybe.a;\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn _default;\n\t\t}\n\t});\nvar $author$project$Utils$Route$fromUrl = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Route$fromUrl,\n\t$elm$core$Maybe$withDefault($author$project$Spa$Generated$Route$NotFound));\nvar $author$project$Shared$Model = F3(\n\tfunction (url, key, user) {\n\t\treturn {fc: key, f_: url, O: user};\n\t});\nvar $elm$json$Json$Decode$decodeValue = _Json_run;\nvar $author$project$Api$User$User = F3(\n\tfunction (email, token, username) {\n\t\treturn {av: email, da: token, cg: username};\n\t});\nvar $author$project$Api$Token$Token = $elm$core$Basics$identity;\nvar $elm$json$Json$Decode$string = _Json_decodeString;\nvar $author$project$Api$Token$decoder = A2($elm$json$Json$Decode$map, $elm$core$Basics$identity, $elm$json$Json$Decode$string);\nvar $elm$json$Json$Decode$field = _Json_decodeField;\nvar $elm$json$Json$Decode$map3 = _Json_map3;\nvar $author$project$Api$User$decoder = A4(\n\t$elm$json$Json$Decode$map3,\n\t$author$project$Api$User$User,\n\tA2($elm$json$Json$Decode$field, 'email', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'token', $author$project$Api$Token$decoder),\n\tA2($elm$json$Json$Decode$field, 'username', $elm$json$Json$Decode$string));\nvar $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil);\nvar $elm$core$Result$toMaybe = function (result) {\n\tif (!result.$) {\n\t\tvar v = result.a;\n\t\treturn $elm$core$Maybe$Just(v);\n\t} else {\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n};\nvar $author$project$Shared$init = F3(\n\tfunction (json, url, key) {\n\t\tvar user = $elm$core$Result$toMaybe(\n\t\t\tA2(\n\t\t\t\t$elm$json$Json$Decode$decodeValue,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder),\n\t\t\t\tjson));\n\t\treturn _Utils_Tuple2(\n\t\t\tA3($author$project$Shared$Model, url, key, user),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Spa$Generated$Pages$Login__Model = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Login__Msg = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $author$project$Spa$Generated$Pages$NotFound__Model = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Spa$Generated$Pages$NotFound__Msg = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Profile__Username_String__Model = function (a) {\n\treturn {$: 6, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Profile__Username_String__Msg = function (a) {\n\treturn {$: 6, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Projects__Model = function (a) {\n\treturn {$: 3, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Projects__Msg = function (a) {\n\treturn {$: 3, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Register__Model = function (a) {\n\treturn {$: 4, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Register__Msg = function (a) {\n\treturn {$: 4, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Settings__Model = function (a) {\n\treturn {$: 5, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Settings__Msg = function (a) {\n\treturn {$: 5, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Top__Model = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Top__Msg = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Spa$Page$application = function (page) {\n\treturn page;\n};\nvar $author$project$Pages$Login$Model = F5(\n\tfunction (user, key, url, email, password) {\n\t\treturn {av: email, fc: key, cO: password, f_: url, O: user};\n\t});\nvar $author$project$Api$Data$NotAsked = {$: 0};\nvar $author$project$Api$Data$Success = function (a) {\n\treturn {$: 3, a: a};\n};\nvar $author$project$Pages$Login$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar key = _v0.fc;\n\t\treturn _Utils_Tuple2(\n\t\t\tA5(\n\t\t\t\t$author$project$Pages$Login$Model,\n\t\t\t\tfunction () {\n\t\t\t\t\tvar _v1 = shared.O;\n\t\t\t\t\tif (!_v1.$) {\n\t\t\t\t\t\tvar user = _v1.a;\n\t\t\t\t\t\treturn $author$project$Api$Data$Success(user);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn $author$project$Api$Data$NotAsked;\n\t\t\t\t\t}\n\t\t\t\t}(),\n\t\t\t\tkey,\n\t\t\t\tshared.f_,\n\t\t\t\t'',\n\t\t\t\t''),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Login$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Api$Data$toMaybe = function (data) {\n\tif (data.$ === 3) {\n\t\tvar value = data.a;\n\t\treturn $elm$core$Maybe$Just(value);\n\t} else {\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n};\nvar $author$project$Pages$Login$save = F2(\n\tfunction (model, shared) {\n\t\treturn _Utils_update(\n\t\t\tshared,\n\t\t\t{\n\t\t\t\tO: function () {\n\t\t\t\t\tvar _v0 = $author$project$Api$Data$toMaybe(model.O);\n\t\t\t\t\tif (!_v0.$) {\n\t\t\t\t\t\tvar user = _v0.a;\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(user);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn shared.O;\n\t\t\t\t\t}\n\t\t\t\t}()\n\t\t\t});\n\t});\nvar $elm$core$Platform$Sub$batch = _Platform_batch;\nvar $elm$core$Platform$Sub$none = $elm$core$Platform$Sub$batch(_List_Nil);\nvar $author$project$Pages$Login$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Login$GotUser = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$json$Json$Decode$decodeString = _Json_runOnString;\nvar $elm$json$Json$Decode$keyValuePairs = _Json_decodeKeyValuePairs;\nvar $elm$json$Json$Decode$list = _Json_decodeList;\nvar $author$project$Api$Data$errorDecoder = A2(\n\t$elm$json$Json$Decode$map,\n\t$elm$core$List$concatMap(\n\t\tfunction (_v0) {\n\t\t\tvar key = _v0.a;\n\t\t\tvar values = _v0.b;\n\t\t\treturn A2(\n\t\t\t\t$elm$core$List$map,\n\t\t\t\tfunction (value) {\n\t\t\t\t\treturn key + (' ' + value);\n\t\t\t\t},\n\t\t\t\tvalues);\n\t\t}),\n\tA2(\n\t\t$elm$json$Json$Decode$field,\n\t\t'errors',\n\t\t$elm$json$Json$Decode$keyValuePairs(\n\t\t\t$elm$json$Json$Decode$list($elm$json$Json$Decode$string))));\nvar $elm$http$Http$BadStatus_ = F2(\n\tfunction (a, b) {\n\t\treturn {$: 3, a: a, b: b};\n\t});\nvar $elm$http$Http$BadUrl_ = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$http$Http$GoodStatus_ = F2(\n\tfunction (a, b) {\n\t\treturn {$: 4, a: a, b: b};\n\t});\nvar $elm$http$Http$NetworkError_ = {$: 2};\nvar $elm$http$Http$Receiving = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$http$Http$Sending = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$http$Http$Timeout_ = {$: 1};\nvar $elm$core$Maybe$isJust = function (maybe) {\n\tif (!maybe.$) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$core$Platform$sendToSelf = _Platform_sendToSelf;\nvar $elm$http$Http$expectStringResponse = F2(\n\tfunction (toMsg, toResult) {\n\t\treturn A3(\n\t\t\t_Http_expect,\n\t\t\t'',\n\t\t\t$elm$core$Basics$identity,\n\t\t\tA2($elm$core$Basics$composeR, toResult, toMsg));\n\t});\nvar $author$project$Api$Data$Failure = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Api$Data$fromResult = function (result) {\n\tif (!result.$) {\n\t\tvar value = result.a;\n\t\treturn $author$project$Api$Data$Success(value);\n\t} else {\n\t\tvar reasons = result.a;\n\t\treturn $author$project$Api$Data$Failure(reasons);\n\t}\n};\nvar $author$project$Api$Data$expectJson = F2(\n\tfunction (toMsg, decoder) {\n\t\treturn A2(\n\t\t\t$elm$http$Http$expectStringResponse,\n\t\t\tA2($elm$core$Basics$composeR, $author$project$Api$Data$fromResult, toMsg),\n\t\t\tfunction (response) {\n\t\t\t\tswitch (response.$) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t['Bad URL']));\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t['Request timeout']));\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t['Connection issues']));\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tvar body = response.b;\n\t\t\t\t\t\tvar _v1 = A2($elm$json$Json$Decode$decodeString, $author$project$Api$Data$errorDecoder, body);\n\t\t\t\t\t\tif (!_v1.$) {\n\t\t\t\t\t\t\tvar errors = _v1.a;\n\t\t\t\t\t\t\treturn $elm$core$Result$Err(errors);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t['Bad status code']));\n\t\t\t\t\t\t}\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar body = response.b;\n\t\t\t\t\t\tvar _v2 = A2($elm$json$Json$Decode$decodeString, decoder, body);\n\t\t\t\t\t\tif (!_v2.$) {\n\t\t\t\t\t\t\tvar value = _v2.a;\n\t\t\t\t\t\t\treturn $elm$core$Result$Ok(value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar err = _v2.a;\n\t\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$json$Json$Decode$errorToString(err)\n\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t});\nvar $author$project$Api$User$loginUrl = function (url) {\n\treturn A2($elm$core$String$contains, 'localhost', url) ? 'http://localhost:8000/auth' : '/auth';\n};\nvar $elm$http$Http$multipartBody = function (parts) {\n\treturn A2(\n\t\t_Http_pair,\n\t\t'',\n\t\t_Http_toFormData(parts));\n};\nvar $elm$http$Http$Request = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$http$Http$State = F2(\n\tfunction (reqs, subs) {\n\t\treturn {d6: reqs, em: subs};\n\t});\nvar $elm$http$Http$init = $elm$core$Task$succeed(\n\tA2($elm$http$Http$State, $elm$core$Dict$empty, _List_Nil));\nvar $elm$core$Process$kill = _Scheduler_kill;\nvar $elm$core$Process$spawn = _Scheduler_spawn;\nvar $elm$http$Http$updateReqs = F3(\n\tfunction (router, cmds, reqs) {\n\t\tupdateReqs:\n\t\twhile (true) {\n\t\t\tif (!cmds.b) {\n\t\t\t\treturn $elm$core$Task$succeed(reqs);\n\t\t\t} else {\n\t\t\t\tvar cmd = cmds.a;\n\t\t\t\tvar otherCmds = cmds.b;\n\t\t\t\tif (!cmd.$) {\n\t\t\t\t\tvar tracker = cmd.a;\n\t\t\t\t\tvar _v2 = A2($elm$core$Dict$get, tracker, reqs);\n\t\t\t\t\tif (_v2.$ === 1) {\n\t\t\t\t\t\tvar $temp$router = router,\n\t\t\t\t\t\t\t$temp$cmds = otherCmds,\n\t\t\t\t\t\t\t$temp$reqs = reqs;\n\t\t\t\t\t\trouter = $temp$router;\n\t\t\t\t\t\tcmds = $temp$cmds;\n\t\t\t\t\t\treqs = $temp$reqs;\n\t\t\t\t\t\tcontinue updateReqs;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar pid = _v2.a;\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\t\t\tfunction (_v3) {\n\t\t\t\t\t\t\t\treturn A3(\n\t\t\t\t\t\t\t\t\t$elm$http$Http$updateReqs,\n\t\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t\totherCmds,\n\t\t\t\t\t\t\t\t\tA2($elm$core$Dict$remove, tracker, reqs));\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t$elm$core$Process$kill(pid));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar req = cmd.a;\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\t\tfunction (pid) {\n\t\t\t\t\t\t\tvar _v4 = req.fY;\n\t\t\t\t\t\t\tif (_v4.$ === 1) {\n\t\t\t\t\t\t\t\treturn A3($elm$http$Http$updateReqs, router, otherCmds, reqs);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvar tracker = _v4.a;\n\t\t\t\t\t\t\t\treturn A3(\n\t\t\t\t\t\t\t\t\t$elm$http$Http$updateReqs,\n\t\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t\totherCmds,\n\t\t\t\t\t\t\t\t\tA3($elm$core$Dict$insert, tracker, pid, reqs));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t$elm$core$Process$spawn(\n\t\t\t\t\t\t\tA3(\n\t\t\t\t\t\t\t\t_Http_toTask,\n\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t$elm$core$Platform$sendToApp(router),\n\t\t\t\t\t\t\t\treq)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$http$Http$onEffects = F4(\n\tfunction (router, cmds, subs, state) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (reqs) {\n\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\tA2($elm$http$Http$State, reqs, subs));\n\t\t\t},\n\t\t\tA3($elm$http$Http$updateReqs, router, cmds, state.d6));\n\t});\nvar $elm$core$List$maybeCons = F3(\n\tfunction (f, mx, xs) {\n\t\tvar _v0 = f(mx);\n\t\tif (!_v0.$) {\n\t\t\tvar x = _v0.a;\n\t\t\treturn A2($elm$core$List$cons, x, xs);\n\t\t} else {\n\t\t\treturn xs;\n\t\t}\n\t});\nvar $elm$core$List$filterMap = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\t$elm$core$List$maybeCons(f),\n\t\t\t_List_Nil,\n\t\t\txs);\n\t});\nvar $elm$http$Http$maybeSend = F4(\n\tfunction (router, desiredTracker, progress, _v0) {\n\t\tvar actualTracker = _v0.a;\n\t\tvar toMsg = _v0.b;\n\t\treturn _Utils_eq(desiredTracker, actualTracker) ? $elm$core$Maybe$Just(\n\t\t\tA2(\n\t\t\t\t$elm$core$Platform$sendToApp,\n\t\t\t\trouter,\n\t\t\t\ttoMsg(progress))) : $elm$core$Maybe$Nothing;\n\t});\nvar $elm$http$Http$onSelfMsg = F3(\n\tfunction (router, _v0, state) {\n\t\tvar tracker = _v0.a;\n\t\tvar progress = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (_v1) {\n\t\t\t\treturn $elm$core$Task$succeed(state);\n\t\t\t},\n\t\t\t$elm$core$Task$sequence(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$filterMap,\n\t\t\t\t\tA3($elm$http$Http$maybeSend, router, tracker, progress),\n\t\t\t\t\tstate.em)));\n\t});\nvar $elm$http$Http$Cancel = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$http$Http$cmdMap = F2(\n\tfunction (func, cmd) {\n\t\tif (!cmd.$) {\n\t\t\tvar tracker = cmd.a;\n\t\t\treturn $elm$http$Http$Cancel(tracker);\n\t\t} else {\n\t\t\tvar r = cmd.a;\n\t\t\treturn $elm$http$Http$Request(\n\t\t\t\t{\n\t\t\t\t\teH: r.eH,\n\t\t\t\t\teJ: r.eJ,\n\t\t\t\t\teX: A2(_Http_mapExpect, func, r.eX),\n\t\t\t\t\te3: r.e3,\n\t\t\t\t\tfg: r.fg,\n\t\t\t\t\tfQ: r.fQ,\n\t\t\t\t\tfY: r.fY,\n\t\t\t\t\tf_: r.f_\n\t\t\t\t});\n\t\t}\n\t});\nvar $elm$http$Http$MySub = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $elm$http$Http$subMap = F2(\n\tfunction (func, _v0) {\n\t\tvar tracker = _v0.a;\n\t\tvar toMsg = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$http$Http$MySub,\n\t\t\ttracker,\n\t\t\tA2($elm$core$Basics$composeR, toMsg, func));\n\t});\n_Platform_effectManagers['Http'] = _Platform_createManager($elm$http$Http$init, $elm$http$Http$onEffects, $elm$http$Http$onSelfMsg, $elm$http$Http$cmdMap, $elm$http$Http$subMap);\nvar $elm$http$Http$command = _Platform_leaf('Http');\nvar $elm$http$Http$subscription = _Platform_leaf('Http');\nvar $elm$http$Http$request = function (r) {\n\treturn $elm$http$Http$command(\n\t\t$elm$http$Http$Request(\n\t\t\t{eH: false, eJ: r.eJ, eX: r.eX, e3: r.e3, fg: r.fg, fQ: r.fQ, fY: r.fY, f_: r.f_}));\n};\nvar $elm$http$Http$post = function (r) {\n\treturn $elm$http$Http$request(\n\t\t{eJ: r.eJ, eX: r.eX, e3: _List_Nil, fg: 'POST', fQ: $elm$core$Maybe$Nothing, fY: $elm$core$Maybe$Nothing, f_: r.f_});\n};\nvar $elm$http$Http$stringPart = _Http_pair;\nvar $author$project$Api$User$authentication = function (options) {\n\tvar body = $elm$http$Http$multipartBody(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2($elm$http$Http$stringPart, 'username', options.O.av),\n\t\t\t\tA2($elm$http$Http$stringPart, 'password', options.O.cO)\n\t\t\t]));\n\treturn $elm$http$Http$post(\n\t\t{\n\t\t\teJ: body,\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fu,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder)),\n\t\t\tf_: $author$project$Api$User$loginUrl(options.eL)\n\t\t});\n};\nvar $elm$browser$Browser$Navigation$pushUrl = _Browser_pushUrl;\nvar $elm$core$String$append = _String_append;\nvar $author$project$Spa$Generated$Route$toString = function (route) {\n\tvar segments = function () {\n\t\tswitch (route.$) {\n\t\t\tcase 0:\n\t\t\t\treturn _List_Nil;\n\t\t\tcase 1:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['login']);\n\t\t\tcase 2:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['not-found']);\n\t\t\tcase 3:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['projects']);\n\t\t\tcase 4:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['register']);\n\t\t\tcase 5:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['settings']);\n\t\t\tdefault:\n\t\t\t\tvar username = route.a.cg;\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['profile', username]);\n\t\t}\n\t}();\n\treturn A2(\n\t\t$elm$core$String$append,\n\t\t'/',\n\t\tA2($elm$core$String$join, '/', segments));\n};\nvar $author$project$Utils$Route$navigate = F2(\n\tfunction (key, route) {\n\t\treturn A2(\n\t\t\t$elm$browser$Browser$Navigation$pushUrl,\n\t\t\tkey,\n\t\t\t$author$project$Spa$Generated$Route$toString(route));\n\t});\nvar $elm$json$Json$Encode$string = _Json_wrap;\nvar $author$project$Api$Token$encode = function (_v0) {\n\tvar token = _v0;\n\treturn $elm$json$Json$Encode$string(token);\n};\nvar $elm$json$Json$Encode$object = function (pairs) {\n\treturn _Json_wrap(\n\t\tA3(\n\t\t\t$elm$core$List$foldl,\n\t\t\tF2(\n\t\t\t\tfunction (_v0, obj) {\n\t\t\t\t\tvar k = _v0.a;\n\t\t\t\t\tvar v = _v0.b;\n\t\t\t\t\treturn A3(_Json_addField, k, v, obj);\n\t\t\t\t}),\n\t\t\t_Json_emptyObject(0),\n\t\t\tpairs));\n};\nvar $author$project$Api$User$encode = function (user) {\n\treturn $elm$json$Json$Encode$object(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'username',\n\t\t\t\t$elm$json$Json$Encode$string(user.cg)),\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'email',\n\t\t\t\t$elm$json$Json$Encode$string(user.av)),\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'token',\n\t\t\t\t$author$project$Api$Token$encode(user.da))\n\t\t\t]));\n};\nvar $author$project$Ports$outgoing = _Platform_outgoingPort(\n\t'outgoing',\n\tfunction ($) {\n\t\treturn $elm$json$Json$Encode$object(\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t'data',\n\t\t\t\t\t$elm$core$Basics$identity($.ct)),\n\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t'tag',\n\t\t\t\t\t$elm$json$Json$Encode$string($.c8))\n\t\t\t\t]));\n\t});\nvar $author$project$Ports$saveUser = function (user) {\n\treturn $author$project$Ports$outgoing(\n\t\t{\n\t\t\tct: $author$project$Api$User$encode(user),\n\t\t\tc8: 'saveUser'\n\t\t});\n};\nvar $author$project$Pages$Login$update = F2(\n\tfunction (msg, model) {\n\t\tswitch (msg.$) {\n\t\t\tcase 0:\n\t\t\t\tif (!msg.a) {\n\t\t\t\t\tvar _v1 = msg.a;\n\t\t\t\t\tvar email = msg.b;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t{av: email}),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t} else {\n\t\t\t\t\tvar _v2 = msg.a;\n\t\t\t\t\tvar password = msg.b;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t{cO: password}),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t}\n\t\t\tcase 1:\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\tmodel,\n\t\t\t\t\t$author$project$Api$User$authentication(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\teL: model.f_.e6,\n\t\t\t\t\t\t\tfu: $author$project$Pages$Login$GotUser,\n\t\t\t\t\t\t\tO: {av: model.av, cO: model.cO}\n\t\t\t\t\t\t}));\n\t\t\tdefault:\n\t\t\t\tvar user = msg.a;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{O: user}),\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\tvar _v3 = $author$project$Api$Data$toMaybe(user);\n\t\t\t\t\t\tif (!_v3.$) {\n\t\t\t\t\t\t\tvar user_ = _v3.a;\n\t\t\t\t\t\t\treturn $elm$core$Platform$Cmd$batch(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$author$project$Ports$saveUser(user_),\n\t\t\t\t\t\t\t\t\t\tA2($author$project$Utils$Route$navigate, model.fc, $author$project$Spa$Generated$Route$Projects)\n\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Platform$Cmd$none;\n\t\t\t\t\t\t}\n\t\t\t\t\t}());\n\t\t}\n\t});\nvar $author$project$Pages$Login$AttemptedSignIn = {$: 1};\nvar $author$project$Pages$Login$Email = 0;\nvar $author$project$Pages$Login$Password = 1;\nvar $author$project$Pages$Login$Updated = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $elm$html$Html$a = _VirtualDom_node('a');\nvar $elm$html$Html$button = _VirtualDom_node('button');\nvar $elm$html$Html$Attributes$stringProperty = F2(\n\tfunction (key, string) {\n\t\treturn A2(\n\t\t\t_VirtualDom_property,\n\t\t\tkey,\n\t\t\t$elm$json$Json$Encode$string(string));\n\t});\nvar $elm$html$Html$Attributes$class = $elm$html$Html$Attributes$stringProperty('className');\nvar $elm$html$Html$div = _VirtualDom_node('div');\nvar $elm$html$Html$form = _VirtualDom_node('form');\nvar $elm$html$Html$h1 = _VirtualDom_node('h1');\nvar $elm$html$Html$Attributes$href = function (url) {\n\treturn A2(\n\t\t$elm$html$Html$Attributes$stringProperty,\n\t\t'href',\n\t\t_VirtualDom_noJavaScriptUri(url));\n};\nvar $elm$html$Html$Events$alwaysPreventDefault = function (msg) {\n\treturn _Utils_Tuple2(msg, true);\n};\nvar $elm$virtual_dom$VirtualDom$MayPreventDefault = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$virtual_dom$VirtualDom$on = _VirtualDom_on;\nvar $elm$html$Html$Events$preventDefaultOn = F2(\n\tfunction (event, decoder) {\n\t\treturn A2(\n\t\t\t$elm$virtual_dom$VirtualDom$on,\n\t\t\tevent,\n\t\t\t$elm$virtual_dom$VirtualDom$MayPreventDefault(decoder));\n\t});\nvar $elm$html$Html$Events$onSubmit = function (msg) {\n\treturn A2(\n\t\t$elm$html$Html$Events$preventDefaultOn,\n\t\t'submit',\n\t\tA2(\n\t\t\t$elm$json$Json$Decode$map,\n\t\t\t$elm$html$Html$Events$alwaysPreventDefault,\n\t\t\t$elm$json$Json$Decode$succeed(msg)));\n};\nvar $elm$html$Html$p = _VirtualDom_node('p');\nvar $elm$virtual_dom$VirtualDom$text = _VirtualDom_text;\nvar $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text;\nvar $elm$core$List$isEmpty = function (xs) {\n\tif (!xs.b) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$html$Html$li = _VirtualDom_node('li');\nvar $elm$html$Html$ul = _VirtualDom_node('ul');\nvar $author$project$Components$ErrorList$view = function (reasons) {\n\treturn $elm$core$List$isEmpty(reasons) ? $elm$html$Html$text('') : A2(\n\t\t$elm$html$Html$ul,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('error-messages')\n\t\t\t]),\n\t\tA2(\n\t\t\t$elm$core$List$map,\n\t\t\tfunction (message) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$html$Html$li,\n\t\t\t\t\t_List_Nil,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text(message)\n\t\t\t\t\t\t]));\n\t\t\t},\n\t\t\treasons));\n};\nvar $elm$html$Html$fieldset = _VirtualDom_node('fieldset');\nvar $elm$html$Html$input = _VirtualDom_node('input');\nvar $elm$html$Html$Events$alwaysStop = function (x) {\n\treturn _Utils_Tuple2(x, true);\n};\nvar $elm$virtual_dom$VirtualDom$MayStopPropagation = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$html$Html$Events$stopPropagationOn = F2(\n\tfunction (event, decoder) {\n\t\treturn A2(\n\t\t\t$elm$virtual_dom$VirtualDom$on,\n\t\t\tevent,\n\t\t\t$elm$virtual_dom$VirtualDom$MayStopPropagation(decoder));\n\t});\nvar $elm$json$Json$Decode$at = F2(\n\tfunction (fields, decoder) {\n\t\treturn A3($elm$core$List$foldr, $elm$json$Json$Decode$field, decoder, fields);\n\t});\nvar $elm$html$Html$Events$targetValue = A2(\n\t$elm$json$Json$Decode$at,\n\t_List_fromArray(\n\t\t['target', 'value']),\n\t$elm$json$Json$Decode$string);\nvar $elm$html$Html$Events$onInput = function (tagger) {\n\treturn A2(\n\t\t$elm$html$Html$Events$stopPropagationOn,\n\t\t'input',\n\t\tA2(\n\t\t\t$elm$json$Json$Decode$map,\n\t\t\t$elm$html$Html$Events$alwaysStop,\n\t\t\tA2($elm$json$Json$Decode$map, tagger, $elm$html$Html$Events$targetValue)));\n};\nvar $elm$html$Html$Attributes$placeholder = $elm$html$Html$Attributes$stringProperty('placeholder');\nvar $elm$html$Html$Attributes$type_ = $elm$html$Html$Attributes$stringProperty('type');\nvar $elm$html$Html$Attributes$value = $elm$html$Html$Attributes$stringProperty('value');\nvar $author$project$Components$UserForm$viewField = function (options) {\n\treturn A2(\n\t\t$elm$html$Html$fieldset,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('form-group')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$input,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-control form-control-lg'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder(options.fd),\n\t\t\t\t\t\t$elm$html$Html$Attributes$type_(options.ex),\n\t\t\t\t\t\t$elm$html$Html$Attributes$value(options.ez),\n\t\t\t\t\t\t$elm$html$Html$Events$onInput(options.dV)\n\t\t\t\t\t]),\n\t\t\t\t_List_Nil)\n\t\t\t]));\n};\nvar $author$project$Components$UserForm$view = function (options) {\n\treturn A2(\n\t\t$elm$html$Html$div,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('auth-page')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('row')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('col-md-6 offset-md-3 col-xs-12')\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$h1,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-xs-center')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(options.fd)\n\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$p,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-xs-center')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Spa$Generated$Route$toString(options.df.fH))\n\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(options.df.fd)\n\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t\t\tvar _v0 = options.O;\n\t\t\t\t\t\t\t\t\t\tif (_v0.$ === 2) {\n\t\t\t\t\t\t\t\t\t\t\tvar reasons = _v0.a;\n\t\t\t\t\t\t\t\t\t\t\treturn $author$project$Components$ErrorList$view(reasons);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\treturn $elm$html$Html$text('');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}(),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$form,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onSubmit(options.fs)\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t$elm$core$List$concat(\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$core$List$map, $author$project$Components$UserForm$viewField, options.e0),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-lg btn-primary pull-xs-right')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(options.fd)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t\t\t])))\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]));\n};\nvar $author$project$Pages$Login$view = function (model) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[\n\t\t\t\t$author$project$Components$UserForm$view(\n\t\t\t\t{\n\t\t\t\t\tdf: {fd: 'Need an account?', fH: $author$project$Spa$Generated$Route$Register},\n\t\t\t\t\te0: _List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfd: 'Email',\n\t\t\t\t\t\t\tdV: $author$project$Pages$Login$Updated(0),\n\t\t\t\t\t\t\tex: 'text',\n\t\t\t\t\t\t\tez: model.av\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfd: 'Password',\n\t\t\t\t\t\t\tdV: $author$project$Pages$Login$Updated(1),\n\t\t\t\t\t\t\tex: 'password',\n\t\t\t\t\t\t\tez: model.cO\n\t\t\t\t\t\t}\n\t\t\t\t\t\t]),\n\t\t\t\t\tfd: 'Sign in',\n\t\t\t\t\tfs: $author$project$Pages$Login$AttemptedSignIn,\n\t\t\t\t\tO: model.O\n\t\t\t\t})\n\t\t\t]),\n\t\tfR: 'Sign in'\n\t};\n};\nvar $author$project$Pages$Login$page = $author$project$Spa$Page$application(\n\t{fa: $author$project$Pages$Login$init, ff: $author$project$Pages$Login$load, fI: $author$project$Pages$Login$save, fN: $author$project$Pages$Login$subscriptions, fZ: $author$project$Pages$Login$update, f0: $author$project$Pages$Login$view});\nvar $elm$core$Basics$always = F2(\n\tfunction (a, _v0) {\n\t\treturn a;\n\t});\nvar $author$project$Spa$Page$ignoreEffect = function (model) {\n\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n};\nvar $author$project$Spa$Page$static = function (page) {\n\treturn {\n\t\tfa: F2(\n\t\t\tfunction (_v0, url) {\n\t\t\t\treturn _Utils_Tuple2(url, $elm$core$Platform$Cmd$none);\n\t\t\t}),\n\t\tff: $elm$core$Basics$always(\n\t\t\tA2($elm$core$Basics$composeR, $elm$core$Basics$identity, $author$project$Spa$Page$ignoreEffect)),\n\t\tfI: $elm$core$Basics$always($elm$core$Basics$identity),\n\t\tfN: function (_v1) {\n\t\t\treturn $elm$core$Platform$Sub$none;\n\t\t},\n\t\tfZ: F2(\n\t\t\tfunction (_v2, model) {\n\t\t\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t\t\t}),\n\t\tf0: page.f0\n\t};\n};\nvar $elm$html$Html$h2 = _VirtualDom_node('h2');\nvar $elm$html$Html$h5 = _VirtualDom_node('h5');\nvar $author$project$Components$NotFound$view = A2(\n\t$elm$html$Html$div,\n\t_List_fromArray(\n\t\t[\n\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t]),\n\t_List_fromArray(\n\t\t[\n\t\t\tA2(\n\t\t\t$elm$html$Html$h2,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$text('Page not found.')\n\t\t\t\t])),\n\t\t\tA2(\n\t\t\t$elm$html$Html$h5,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$text('But here\\'s the '),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('/')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text('homepage')\n\t\t\t\t\t\t])),\n\t\t\t\t\t$elm$html$Html$text('!')\n\t\t\t\t]))\n\t\t]));\nvar $author$project$Pages$NotFound$view = function (_v0) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[$author$project$Components$NotFound$view]),\n\t\tfR: '404'\n\t};\n};\nvar $author$project$Pages$NotFound$page = $author$project$Spa$Page$static(\n\t{f0: $author$project$Pages$NotFound$view});\nvar $author$project$Pages$Profile$Username_String$GotProfile = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Api$Data$Loading = {$: 1};\nvar $author$project$Pages$Profile$Username_String$MyArticles = 0;\nvar $author$project$Api$Profile$Profile = F2(\n\tfunction (username, following) {\n\t\treturn {e1: following, cg: username};\n\t});\nvar $elm$json$Json$Decode$bool = _Json_decodeBool;\nvar $author$project$Api$Profile$decoder = A3(\n\t$elm$json$Json$Decode$map2,\n\t$author$project$Api$Profile$Profile,\n\tA2($elm$json$Json$Decode$field, 'username', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'following', $elm$json$Json$Decode$bool));\nvar $elm$http$Http$emptyBody = _Http_emptyBody;\nvar $elm$http$Http$Header = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $elm$http$Http$header = $elm$http$Http$Header;\nvar $author$project$Api$Token$request = F4(\n\tfunction (method, body, maybeToken, options) {\n\t\treturn $elm$http$Http$request(\n\t\t\t{\n\t\t\t\teJ: body,\n\t\t\t\teX: options.eX,\n\t\t\t\te3: function () {\n\t\t\t\t\tif (!maybeToken.$) {\n\t\t\t\t\t\tvar token = maybeToken.a;\n\t\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2($elm$http$Http$header, 'Authorization', 'Bearer ' + token)\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn _List_Nil;\n\t\t\t\t\t}\n\t\t\t\t}(),\n\t\t\t\tfg: method,\n\t\t\t\tfQ: $elm$core$Maybe$Just(1000 * 60),\n\t\t\t\tfY: $elm$core$Maybe$Nothing,\n\t\t\t\tf_: options.f_\n\t\t\t});\n\t});\nvar $author$project$Api$Token$get = A2($author$project$Api$Token$request, 'GET', $elm$http$Http$emptyBody);\nvar $author$project$Api$Profile$get = function (options) {\n\treturn A2(\n\t\t$author$project$Api$Token$get,\n\t\toptions.da,\n\t\t{\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fu,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'profile', $author$project$Api$Profile$decoder)),\n\t\t\tf_: 'https://conduit.productionready.io/api/profiles/' + options.cg\n\t\t});\n};\nvar $elm$core$Maybe$map = F2(\n\tfunction (f, maybe) {\n\t\tif (!maybe.$) {\n\t\t\tvar value = maybe.a;\n\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\tf(value));\n\t\t} else {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t}\n\t});\nvar $author$project$Pages$Profile$Username_String$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar params = _v0.fA;\n\t\tvar token = A2(\n\t\t\t$elm$core$Maybe$map,\n\t\t\tfunction ($) {\n\t\t\t\treturn $.da;\n\t\t\t},\n\t\t\tshared.O);\n\t\treturn _Utils_Tuple2(\n\t\t\t{dN: $author$project$Api$Data$Loading, C: 1, cS: $author$project$Api$Data$Loading, cX: 0, O: shared.O, cg: params.cg},\n\t\t\t$elm$core$Platform$Cmd$batch(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$author$project$Api$Profile$get(\n\t\t\t\t\t\t{fu: $author$project$Pages$Profile$Username_String$GotProfile, da: token, cg: params.cg})\n\t\t\t\t\t])));\n\t});\nvar $author$project$Pages$Profile$Username_String$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Profile$Username_String$save = F2(\n\tfunction (_v0, shared) {\n\t\treturn shared;\n\t});\nvar $author$project$Pages$Profile$Username_String$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Profile$Username_String$update = F2(\n\tfunction (msg, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Profile$Username_String$Clicked = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Pages$Profile$Username_String$FavoritedArticles = 1;\nvar $elm$core$List$filter = F2(\n\tfunction (isGood, list) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\tF2(\n\t\t\t\tfunction (x, xs) {\n\t\t\t\t\treturn isGood(x) ? A2($elm$core$List$cons, x, xs) : xs;\n\t\t\t\t}),\n\t\t\t_List_Nil,\n\t\t\tlist);\n\t});\nvar $elm$core$Tuple$second = function (_v0) {\n\tvar y = _v0.b;\n\treturn y;\n};\nvar $elm$html$Html$Attributes$classList = function (classes) {\n\treturn $elm$html$Html$Attributes$class(\n\t\tA2(\n\t\t\t$elm$core$String$join,\n\t\t\t' ',\n\t\t\tA2(\n\t\t\t\t$elm$core$List$map,\n\t\t\t\t$elm$core$Tuple$first,\n\t\t\t\tA2($elm$core$List$filter, $elm$core$Tuple$second, classes))));\n};\nvar $elm$virtual_dom$VirtualDom$Normal = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$html$Html$Events$on = F2(\n\tfunction (event, decoder) {\n\t\treturn A2(\n\t\t\t$elm$virtual_dom$VirtualDom$on,\n\t\t\tevent,\n\t\t\t$elm$virtual_dom$VirtualDom$Normal(decoder));\n\t});\nvar $elm$html$Html$Events$onClick = function (msg) {\n\treturn A2(\n\t\t$elm$html$Html$Events$on,\n\t\t'click',\n\t\t$elm$json$Json$Decode$succeed(msg));\n};\nvar $author$project$Pages$Profile$Username_String$viewProfile = F2(\n\tfunction (profile, model) {\n\t\tvar viewTab = function (tab) {\n\t\t\treturn A2(\n\t\t\t\t$elm$html$Html$li,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-item')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-link'),\n\t\t\t\t\t\t\t\t$elm$html$Html$Events$onClick(\n\t\t\t\t\t\t\t\t$author$project$Pages$Profile$Username_String$Clicked(tab)),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$classList(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t\t'active',\n\t\t\t\t\t\t\t\t\t\t_Utils_eq(tab, model.cX))\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text(\n\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t\tif (!tab) {\n\t\t\t\t\t\t\t\t\t\treturn 'My Articles';\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\treturn 'Favorited Articles';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}())\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]));\n\t\t};\n\t\tvar viewTabRow = A2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('articles-toggle')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$ul,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav nav-pills outline-active')\n\t\t\t\t\t\t]),\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t\tviewTab,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[0, 1])))\n\t\t\t\t]));\n\t\tvar isViewingOwnProfile = _Utils_eq(\n\t\t\tA2(\n\t\t\t\t$elm$core$Maybe$map,\n\t\t\t\tfunction ($) {\n\t\t\t\t\treturn $.cg;\n\t\t\t\t},\n\t\t\t\tmodel.O),\n\t\t\t$elm$core$Maybe$Just(profile.cg));\n\t\treturn A2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('profile-page')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('row')\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t]))\n\t\t\t\t]));\n\t});\nvar $author$project$Pages$Profile$Username_String$view = function (model) {\n\treturn {\n\t\teJ: function () {\n\t\t\tvar _v0 = model.cS;\n\t\t\tswitch (_v0.$) {\n\t\t\t\tcase 3:\n\t\t\t\t\tvar profile = _v0.a;\n\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA2($author$project$Pages$Profile$Username_String$viewProfile, profile, model)\n\t\t\t\t\t\t]);\n\t\t\t\tcase 2:\n\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t[$author$project$Components$NotFound$view]);\n\t\t\t\tdefault:\n\t\t\t\t\treturn _List_Nil;\n\t\t\t}\n\t\t}(),\n\t\tfR: 'Profile'\n\t};\n};\nvar $author$project$Pages$Profile$Username_String$page = $author$project$Spa$Page$application(\n\t{fa: $author$project$Pages$Profile$Username_String$init, ff: $author$project$Pages$Profile$Username_String$load, fI: $author$project$Pages$Profile$Username_String$save, fN: $author$project$Pages$Profile$Username_String$subscriptions, fZ: $author$project$Pages$Profile$Username_String$update, f0: $author$project$Pages$Profile$Username_String$view});\nvar $author$project$Pages$Projects$GotProjects = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Api$Project$Project = F5(\n\tfunction (name, description, state, errormsg, gitrepository) {\n\t\treturn {eS: description, eV: errormsg, e2: gitrepository, fi: name, fK: state};\n\t});\nvar $author$project$Api$Project$GitRepository = F2(\n\tfunction (url, version) {\n\t\treturn {f_: url, f$: version};\n\t});\nvar $author$project$Api$Project$gitRepositoryDecoder = A3(\n\t$elm$json$Json$Decode$map2,\n\t$author$project$Api$Project$GitRepository,\n\tA2($elm$json$Json$Decode$field, 'url', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'version', $elm$json$Json$Decode$string));\nvar $elm$json$Json$Decode$map5 = _Json_map5;\nvar $author$project$Api$Project$projectDecoder = A6(\n\t$elm$json$Json$Decode$map5,\n\t$author$project$Api$Project$Project,\n\tA2($elm$json$Json$Decode$field, 'name', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'description', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'state', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'errormsg', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'gitrepository', $author$project$Api$Project$gitRepositoryDecoder));\nvar $author$project$Api$Project$list = function (options) {\n\treturn A2(\n\t\t$author$project$Api$Token$get,\n\t\toptions.da,\n\t\t{\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fu,\n\t\t\t\t$elm$json$Json$Decode$list($author$project$Api$Project$projectDecoder)),\n\t\t\tf_: options.ey + '/api/v1/projects'\n\t\t});\n};\nvar $author$project$Pages$Projects$makeUrl = function (host) {\n\treturn A2($elm$core$String$contains, 'localhost', host) ? 'http://localhost:8000' : '';\n};\nvar $author$project$Pages$Projects$fetchProjects = F2(\n\tfunction (model, host) {\n\t\treturn $author$project$Api$Project$list(\n\t\t\t{\n\t\t\t\tfu: $author$project$Pages$Projects$GotProjects,\n\t\t\t\tda: A2(\n\t\t\t\t\t$elm$core$Maybe$map,\n\t\t\t\t\tfunction ($) {\n\t\t\t\t\t\treturn $.da;\n\t\t\t\t\t},\n\t\t\t\t\tmodel.O),\n\t\t\t\tey: $author$project$Pages$Projects$makeUrl(host)\n\t\t\t});\n\t});\nvar $author$project$Pages$Projects$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar model = {dN: $author$project$Api$Data$Loading, O: shared.O};\n\t\treturn _Utils_Tuple2(\n\t\t\tmodel,\n\t\t\t$elm$core$Platform$Cmd$batch(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2($author$project$Pages$Projects$fetchProjects, model, shared.f_.e6)\n\t\t\t\t\t])));\n\t});\nvar $author$project$Pages$Projects$load = F2(\n\tfunction (shared, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Projects$save = F2(\n\tfunction (model, shared) {\n\t\treturn shared;\n\t});\nvar $author$project$Pages$Projects$subscriptions = function (model) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Projects$update = F2(\n\tfunction (msg, model) {\n\t\tif (!msg.$) {\n\t\t\tvar listing = msg.a;\n\t\t\treturn _Utils_Tuple2(\n\t\t\t\t_Utils_update(\n\t\t\t\t\tmodel,\n\t\t\t\t\t{dN: listing}),\n\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t} else {\n\t\t\tvar project = msg.a;\n\t\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t\t}\n\t});\nvar $elm$html$Html$span = _VirtualDom_node('span');\nvar $elm$html$Html$Attributes$target = $elm$html$Html$Attributes$stringProperty('target');\nvar $author$project$Components$ProjectList$viewErrorDiv = function (listing) {\n\treturn ($elm$core$String$length(listing.eV) > 0) ? A2(\n\t\t$elm$html$Html$div,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('alert alert-warning')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$text(listing.eV)\n\t\t\t])) : $elm$html$Html$text('');\n};\nvar $author$project$Components$ProjectList$viewProject = function (listing) {\n\treturn A2(\n\t\t$elm$html$Html$div,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('highlight col-md-10')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$h5,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.fi)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$button,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-outline-secondary btn-xs pull-right'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$type_('button')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text('Start')\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$p,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.eS)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$p,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$target('_blank'),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('/public/v1/projects/1')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text('public')\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$p,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.e2.f_)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$p,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.e2.f$)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$span,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('badge badge-pill badge-secondary')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.fK)\n\t\t\t\t\t])),\n\t\t\t\t$author$project$Components$ProjectList$viewErrorDiv(listing)\n\t\t\t]));\n};\nvar $author$project$Components$ProjectList$view = function (options) {\n\tvar _v0 = options.fC;\n\tswitch (_v0.$) {\n\t\tcase 0:\n\t\t\treturn A2($elm$html$Html$div, _List_Nil, _List_Nil);\n\t\tcase 2:\n\t\t\treturn A2($elm$html$Html$div, _List_Nil, _List_Nil);\n\t\tcase 1:\n\t\t\treturn A2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('project-preview')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text('Loading...')\n\t\t\t\t\t]));\n\t\tdefault:\n\t\t\tvar listing = _v0.a;\n\t\t\treturn A2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('listings')\n\t\t\t\t\t]),\n\t\t\t\tA2($elm$core$List$map, $author$project$Components$ProjectList$viewProject, listing));\n\t}\n};\nvar $author$project$Pages$Projects$view = function (model) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('container')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$h1,\n\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text('Projects')\n\t\t\t\t\t\t\t])),\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('col-md-9')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$author$project$Components$ProjectList$view(\n\t\t\t\t\t\t\t\t{fC: model.dN, O: model.O})\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]),\n\t\tfR: 'Projects'\n\t};\n};\nvar $author$project$Pages$Projects$page = $author$project$Spa$Page$application(\n\t{fa: $author$project$Pages$Projects$init, ff: $author$project$Pages$Projects$load, fI: $author$project$Pages$Projects$save, fN: $author$project$Pages$Projects$subscriptions, fZ: $author$project$Pages$Projects$update, f0: $author$project$Pages$Projects$view});\nvar $author$project$Pages$Register$Model = F5(\n\tfunction (user, key, username, email, password) {\n\t\treturn {av: email, fc: key, cO: password, O: user, cg: username};\n\t});\nvar $author$project$Pages$Register$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar key = _v0.fc;\n\t\treturn _Utils_Tuple2(\n\t\t\tA5(\n\t\t\t\t$author$project$Pages$Register$Model,\n\t\t\t\tfunction () {\n\t\t\t\t\tvar _v1 = shared.O;\n\t\t\t\t\tif (!_v1.$) {\n\t\t\t\t\t\tvar user = _v1.a;\n\t\t\t\t\t\treturn $author$project$Api$Data$Success(user);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn $author$project$Api$Data$NotAsked;\n\t\t\t\t\t}\n\t\t\t\t}(),\n\t\t\t\tkey,\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t''),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Register$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Register$save = F2(\n\tfunction (model, shared) {\n\t\treturn _Utils_update(\n\t\t\tshared,\n\t\t\t{\n\t\t\t\tO: function () {\n\t\t\t\t\tvar _v0 = $author$project$Api$Data$toMaybe(model.O);\n\t\t\t\t\tif (!_v0.$) {\n\t\t\t\t\t\tvar user = _v0.a;\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(user);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn shared.O;\n\t\t\t\t\t}\n\t\t\t\t}()\n\t\t\t});\n\t});\nvar $author$project$Pages$Register$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Register$GotUser = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$http$Http$jsonBody = function (value) {\n\treturn A2(\n\t\t_Http_pair,\n\t\t'application/json',\n\t\tA2($elm$json$Json$Encode$encode, 0, value));\n};\nvar $author$project$Api$User$registration = function (options) {\n\tvar body = $elm$json$Json$Encode$object(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'user',\n\t\t\t\t$elm$json$Json$Encode$object(\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t'username',\n\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.cg)),\n\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t'email',\n\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.av)),\n\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t'password',\n\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.cO))\n\t\t\t\t\t\t])))\n\t\t\t]));\n\treturn $elm$http$Http$post(\n\t\t{\n\t\t\teJ: $elm$http$Http$jsonBody(body),\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fu,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder)),\n\t\t\tf_: 'https://conduit.productionready.io/api/users'\n\t\t});\n};\nvar $author$project$Pages$Register$update = F2(\n\tfunction (msg, model) {\n\t\tswitch (msg.$) {\n\t\t\tcase 0:\n\t\t\t\tswitch (msg.a) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tvar _v1 = msg.a;\n\t\t\t\t\t\tvar username = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{cg: username}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tvar _v2 = msg.a;\n\t\t\t\t\t\tvar email = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{av: email}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar _v3 = msg.a;\n\t\t\t\t\t\tvar password = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{cO: password}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t}\n\t\t\tcase 1:\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\tmodel,\n\t\t\t\t\t$author$project$Api$User$registration(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfu: $author$project$Pages$Register$GotUser,\n\t\t\t\t\t\t\tO: {av: model.av, cO: model.cO, cg: model.cg}\n\t\t\t\t\t\t}));\n\t\t\tdefault:\n\t\t\t\tvar user = msg.a;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{O: user}),\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\tvar _v4 = $author$project$Api$Data$toMaybe(user);\n\t\t\t\t\t\tif (!_v4.$) {\n\t\t\t\t\t\t\tvar user_ = _v4.a;\n\t\t\t\t\t\t\treturn $elm$core$Platform$Cmd$batch(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$author$project$Ports$saveUser(user_),\n\t\t\t\t\t\t\t\t\t\tA2($author$project$Utils$Route$navigate, model.fc, $author$project$Spa$Generated$Route$Top)\n\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Platform$Cmd$none;\n\t\t\t\t\t\t}\n\t\t\t\t\t}());\n\t\t}\n\t});\nvar $author$project$Pages$Register$AttemptedSignUp = {$: 1};\nvar $author$project$Pages$Register$Email = 1;\nvar $author$project$Pages$Register$Password = 2;\nvar $author$project$Pages$Register$Updated = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $author$project$Pages$Register$Username = 0;\nvar $author$project$Pages$Register$view = function (model) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[\n\t\t\t\t$author$project$Components$UserForm$view(\n\t\t\t\t{\n\t\t\t\t\tdf: {fd: 'Have an account?', fH: $author$project$Spa$Generated$Route$Login},\n\t\t\t\t\te0: _List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfd: 'Your Name',\n\t\t\t\t\t\t\tdV: $author$project$Pages$Register$Updated(0),\n\t\t\t\t\t\t\tex: 'text',\n\t\t\t\t\t\t\tez: model.cg\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfd: 'Email',\n\t\t\t\t\t\t\tdV: $author$project$Pages$Register$Updated(1),\n\t\t\t\t\t\t\tex: 'email',\n\t\t\t\t\t\t\tez: model.av\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfd: 'Password',\n\t\t\t\t\t\t\tdV: $author$project$Pages$Register$Updated(2),\n\t\t\t\t\t\t\tex: 'password',\n\t\t\t\t\t\t\tez: model.cO\n\t\t\t\t\t\t}\n\t\t\t\t\t\t]),\n\t\t\t\t\tfd: 'Sign up',\n\t\t\t\t\tfs: $author$project$Pages$Register$AttemptedSignUp,\n\t\t\t\t\tO: model.O\n\t\t\t\t})\n\t\t\t]),\n\t\tfR: 'Sign up'\n\t};\n};\nvar $author$project$Pages$Register$page = $author$project$Spa$Page$application(\n\t{fa: $author$project$Pages$Register$init, ff: $author$project$Pages$Register$load, fI: $author$project$Pages$Register$save, fN: $author$project$Pages$Register$subscriptions, fZ: $author$project$Pages$Register$update, f0: $author$project$Pages$Register$view});\nvar $author$project$Pages$Settings$init = F2(\n\tfunction (shared, _v0) {\n\t\treturn _Utils_Tuple2(\n\t\t\tfunction () {\n\t\t\t\tvar _v1 = shared.O;\n\t\t\t\tif (!_v1.$) {\n\t\t\t\t\tvar user = _v1.a;\n\t\t\t\t\treturn {av: user.av, ab: _List_Nil, ah: $elm$core$Maybe$Nothing, cO: $elm$core$Maybe$Nothing, O: shared.O, cg: user.cg};\n\t\t\t\t} else {\n\t\t\t\t\treturn {av: '', ab: _List_Nil, ah: $elm$core$Maybe$Nothing, cO: $elm$core$Maybe$Nothing, O: shared.O, cg: ''};\n\t\t\t\t}\n\t\t\t}(),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Settings$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Utils$Auth$protected = F2(\n\tfunction (view, model) {\n\t\tvar _v0 = model.O;\n\t\tif (!_v0.$) {\n\t\t\tvar user = _v0.a;\n\t\t\treturn A2(view, user, model);\n\t\t} else {\n\t\t\treturn {\n\t\t\t\teJ: _List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$h2,\n\t\t\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Not signed in.')\n\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$h5,\n\t\t\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Please '),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('/login')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('sign in')\n\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(' to view this page.')\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]),\n\t\t\t\tfR: '401'\n\t\t\t};\n\t\t}\n\t});\nvar $author$project$Pages$Settings$save = F2(\n\tfunction (model, shared) {\n\t\treturn _Utils_update(\n\t\t\tshared,\n\t\t\t{O: model.O});\n\t});\nvar $author$project$Pages$Settings$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Settings$GotUser = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Api$Token$put = F2(\n\tfunction (token, options) {\n\t\treturn A4($author$project$Api$Token$request, 'PUT', options.eJ, token, options);\n\t});\nvar $author$project$Api$User$update = function (options) {\n\tvar body = $elm$json$Json$Encode$object(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'user',\n\t\t\t\t$elm$json$Json$Encode$object(\n\t\t\t\t\t$elm$core$List$concat(\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t'username',\n\t\t\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.cg)),\n\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t'email',\n\t\t\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.av))\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\tvar _v0 = options.O.cO;\n\t\t\t\t\t\t\t\tif (!_v0.$) {\n\t\t\t\t\t\t\t\t\tvar password = _v0.a;\n\t\t\t\t\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t\t\t'password',\n\t\t\t\t\t\t\t\t\t\t\t$elm$json$Json$Encode$string(password))\n\t\t\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn _List_Nil;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}()\n\t\t\t\t\t\t\t]))))\n\t\t\t]));\n\treturn A2(\n\t\t$author$project$Api$Token$put,\n\t\t$elm$core$Maybe$Just(options.da),\n\t\t{\n\t\t\teJ: $elm$http$Http$jsonBody(body),\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fu,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder)),\n\t\t\tf_: 'https://conduit.productionready.io/api/user'\n\t\t});\n};\nvar $author$project$Pages$Settings$update = F2(\n\tfunction (msg, model) {\n\t\tswitch (msg.$) {\n\t\t\tcase 0:\n\t\t\t\tswitch (msg.a) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tvar _v1 = msg.a;\n\t\t\t\t\t\tvar value = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{cg: value}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tvar _v2 = msg.a;\n\t\t\t\t\t\tvar value = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{av: value}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar _v3 = msg.a;\n\t\t\t\t\t\tvar value = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcO: $elm$core$Maybe$Just(value)\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t}\n\t\t\tcase 1:\n\t\t\t\tvar user = msg.a;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{ab: _List_Nil, ah: $elm$core$Maybe$Nothing}),\n\t\t\t\t\t$author$project$Api$User$update(\n\t\t\t\t\t\t{fu: $author$project$Pages$Settings$GotUser, da: user.da, O: model}));\n\t\t\tdefault:\n\t\t\t\tswitch (msg.a.$) {\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tvar user = msg.a.a;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tah: $elm$core$Maybe$Just('User updated!'),\n\t\t\t\t\t\t\t\t\tO: $elm$core$Maybe$Just(user)\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t$author$project$Ports$saveUser(user));\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tvar reasons = msg.a.a;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{ab: reasons}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t\t\t\t}\n\t\t}\n\t});\nvar $author$project$Pages$Settings$Email = 1;\nvar $author$project$Pages$Settings$Password = 2;\nvar $author$project$Pages$Settings$SubmittedForm = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $author$project$Pages$Settings$Updated = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $author$project$Pages$Settings$Username = 0;\nvar $elm$html$Html$br = _VirtualDom_node('br');\nvar $author$project$Utils$Maybe$view = F2(\n\tfunction (maybe, toView) {\n\t\tif (!maybe.$) {\n\t\t\tvar value = maybe.a;\n\t\t\treturn toView(value);\n\t\t} else {\n\t\t\treturn $elm$html$Html$text('');\n\t\t}\n\t});\nvar $author$project$Pages$Settings$view = F2(\n\tfunction (user, model) {\n\t\treturn {\n\t\t\teJ: _List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('settings-page')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('row')\n\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('col-md-6 offset-md-3 col-xs-12')\n\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$h1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-xs-center')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Your Settings')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$br, _List_Nil, _List_Nil),\n\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Components$ErrorList$view(model.ab),\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Utils$Maybe$view,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel.ah,\n\t\t\t\t\t\t\t\t\t\t\t\t\tfunction (message) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$p,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-success')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(message)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$form,\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onSubmit(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Pages$Settings$SubmittedForm(user))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$fieldset,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$fieldset,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-group')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-control form-control-lg'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder('Your Username'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$type_('text'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$value(model.cg),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Pages$Settings$Updated(0))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$fieldset,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-group')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-control form-control-lg'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder('Email'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$type_('text'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$value(model.av),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Pages$Settings$Updated(1))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$fieldset,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-group')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-control form-control-lg'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder('Password'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$type_('password'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$value(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$core$Maybe$withDefault, '', model.cO)),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Pages$Settings$Updated(2))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-lg btn-primary pull-xs-right')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Update Settings')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t]))\n\t\t\t\t]),\n\t\t\tfR: 'Settings'\n\t\t};\n\t});\nvar $author$project$Pages$Settings$page = $author$project$Spa$Page$application(\n\t{\n\t\tfa: $author$project$Pages$Settings$init,\n\t\tff: $author$project$Pages$Settings$load,\n\t\tfI: $author$project$Pages$Settings$save,\n\t\tfN: $author$project$Pages$Settings$subscriptions,\n\t\tfZ: $author$project$Pages$Settings$update,\n\t\tf0: $author$project$Utils$Auth$protected($author$project$Pages$Settings$view)\n\t});\nvar $author$project$Pages$Top$FeedFor = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Pages$Top$Global = {$: 1};\nvar $author$project$Pages$Top$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar activeTab = A2(\n\t\t\t$elm$core$Maybe$withDefault,\n\t\t\t$author$project$Pages$Top$Global,\n\t\t\tA2($elm$core$Maybe$map, $author$project$Pages$Top$FeedFor, shared.O));\n\t\tvar model = {dc: activeTab, dN: $author$project$Api$Data$Loading, eo: $author$project$Api$Data$Loading, O: shared.O};\n\t\treturn _Utils_Tuple2(\n\t\t\tmodel,\n\t\t\t$elm$core$Platform$Cmd$batch(_List_Nil));\n\t});\nvar $author$project$Pages$Top$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Top$save = F2(\n\tfunction (_v0, shared) {\n\t\treturn shared;\n\t});\nvar $author$project$Pages$Top$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Top$update = F2(\n\tfunction (msg, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Top$view = function (model) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('home-page')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('banner')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container')\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t])),\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('row')\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('col-md-9')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]),\n\t\tfR: ''\n\t};\n};\nvar $author$project$Pages$Top$page = $author$project$Spa$Page$application(\n\t{fa: $author$project$Pages$Top$init, ff: $author$project$Pages$Top$load, fI: $author$project$Pages$Top$save, fN: $author$project$Pages$Top$subscriptions, fZ: $author$project$Pages$Top$update, f0: $author$project$Pages$Top$view});\nvar $elm$core$List$drop = F2(\n\tfunction (n, list) {\n\t\tdrop:\n\t\twhile (true) {\n\t\t\tif (n <= 0) {\n\t\t\t\treturn list;\n\t\t\t} else {\n\t\t\t\tif (!list.b) {\n\t\t\t\t\treturn list;\n\t\t\t\t} else {\n\t\t\t\t\tvar x = list.a;\n\t\t\t\t\tvar xs = list.b;\n\t\t\t\t\tvar $temp$n = n - 1,\n\t\t\t\t\t\t$temp$list = xs;\n\t\t\t\t\tn = $temp$n;\n\t\t\t\t\tlist = $temp$list;\n\t\t\t\t\tcontinue drop;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$fromList = function (assocs) {\n\treturn A3(\n\t\t$elm$core$List$foldl,\n\t\tF2(\n\t\t\tfunction (_v0, dict) {\n\t\t\t\tvar key = _v0.a;\n\t\t\t\tvar value = _v0.b;\n\t\t\t\treturn A3($elm$core$Dict$insert, key, value, dict);\n\t\t\t}),\n\t\t$elm$core$Dict$empty,\n\t\tassocs);\n};\nvar $elm$core$List$head = function (list) {\n\tif (list.b) {\n\t\tvar x = list.a;\n\t\tvar xs = list.b;\n\t\treturn $elm$core$Maybe$Just(x);\n\t} else {\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n};\nvar $elm$core$Tuple$mapBoth = F3(\n\tfunction (funcA, funcB, _v0) {\n\t\tvar x = _v0.a;\n\t\tvar y = _v0.b;\n\t\treturn _Utils_Tuple2(\n\t\t\tfuncA(x),\n\t\t\tfuncB(y));\n\t});\nvar $author$project$Spa$Url$toQueryDict = function (queryString) {\n\tvar second = A2(\n\t\t$elm$core$Basics$composeR,\n\t\t$elm$core$List$drop(1),\n\t\t$elm$core$List$head);\n\tvar toTuple = function (list) {\n\t\treturn A2(\n\t\t\t$elm$core$Maybe$map,\n\t\t\tfunction (first) {\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\tfirst,\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$core$Maybe$withDefault,\n\t\t\t\t\t\t'',\n\t\t\t\t\t\tsecond(list)));\n\t\t\t},\n\t\t\t$elm$core$List$head(list));\n\t};\n\tvar decode = A2(\n\t\t$elm$core$Basics$composeR,\n\t\t$elm$url$Url$percentDecode,\n\t\t$elm$core$Maybe$withDefault(''));\n\treturn $elm$core$Dict$fromList(\n\t\tA2(\n\t\t\t$elm$core$List$map,\n\t\t\tA2($elm$core$Tuple$mapBoth, decode, decode),\n\t\t\tA2(\n\t\t\t\t$elm$core$List$filterMap,\n\t\t\t\ttoTuple,\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t$elm$core$String$split('='),\n\t\t\t\t\tA2($elm$core$String$split, '&', queryString)))));\n};\nvar $author$project$Spa$Url$create = F3(\n\tfunction (params, key, url) {\n\t\treturn {\n\t\t\tfc: key,\n\t\t\tfA: params,\n\t\t\tcT: A2(\n\t\t\t\t$elm$core$Maybe$withDefault,\n\t\t\t\t$elm$core$Dict$empty,\n\t\t\t\tA2($elm$core$Maybe$map, $author$project$Spa$Url$toQueryDict, url.cT)),\n\t\t\td4: url\n\t\t};\n\t});\nvar $elm$core$Platform$Cmd$map = _Platform_map;\nvar $elm$core$Platform$Sub$map = _Platform_map;\nvar $elm$virtual_dom$VirtualDom$map = _VirtualDom_map;\nvar $elm$html$Html$map = $elm$virtual_dom$VirtualDom$map;\nvar $author$project$Spa$Document$map = F2(\n\tfunction (fn, doc) {\n\t\treturn {\n\t\t\teJ: A2(\n\t\t\t\t$elm$core$List$map,\n\t\t\t\t$elm$html$Html$map(fn),\n\t\t\t\tdoc.eJ),\n\t\t\tfR: doc.fR\n\t\t};\n\t});\nvar $author$project$Spa$Generated$Pages$upgrade = F3(\n\tfunction (toModel, toMsg, page) {\n\t\tvar update_ = F2(\n\t\t\tfunction (msg, model) {\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$core$Tuple$mapBoth,\n\t\t\t\t\ttoModel,\n\t\t\t\t\t$elm$core$Platform$Cmd$map(toMsg),\n\t\t\t\t\tA2(page.fZ, msg, model));\n\t\t\t});\n\t\tvar load_ = F2(\n\t\t\tfunction (model, shared) {\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$core$Tuple$mapBoth,\n\t\t\t\t\ttoModel,\n\t\t\t\t\t$elm$core$Platform$Cmd$map(toMsg),\n\t\t\t\t\tA2(page.ff, shared, model));\n\t\t\t});\n\t\tvar init_ = F2(\n\t\t\tfunction (params, shared) {\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$core$Tuple$mapBoth,\n\t\t\t\t\ttoModel,\n\t\t\t\t\t$elm$core$Platform$Cmd$map(toMsg),\n\t\t\t\t\tA2(\n\t\t\t\t\t\tpage.fa,\n\t\t\t\t\t\tshared,\n\t\t\t\t\t\tA3($author$project$Spa$Url$create, params, shared.fc, shared.f_)));\n\t\t\t});\n\t\tvar bundle_ = function (model) {\n\t\t\treturn {\n\t\t\t\tff: load_(model),\n\t\t\t\tfI: page.fI(model),\n\t\t\t\tfN: A2(\n\t\t\t\t\t$elm$core$Platform$Sub$map,\n\t\t\t\t\ttoMsg,\n\t\t\t\t\tpage.fN(model)),\n\t\t\t\tf0: A2(\n\t\t\t\t\t$author$project$Spa$Document$map,\n\t\t\t\t\ttoMsg,\n\t\t\t\t\tpage.f0(model))\n\t\t\t};\n\t\t};\n\t\treturn {D: bundle_, fa: init_, fZ: update_};\n\t});\nvar $author$project$Spa$Generated$Pages$pages = {\n\tbu: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Login__Model, $author$project$Spa$Generated$Pages$Login__Msg, $author$project$Pages$Login$page),\n\tby: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$NotFound__Model, $author$project$Spa$Generated$Pages$NotFound__Msg, $author$project$Pages$NotFound$page),\n\tbR: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Profile__Username_String__Model, $author$project$Spa$Generated$Pages$Profile__Username_String__Msg, $author$project$Pages$Profile$Username_String$page),\n\tbS: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Projects__Model, $author$project$Spa$Generated$Pages$Projects__Msg, $author$project$Pages$Projects$page),\n\tb2: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Register__Model, $author$project$Spa$Generated$Pages$Register__Msg, $author$project$Pages$Register$page),\n\tb9: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Settings__Model, $author$project$Spa$Generated$Pages$Settings__Msg, $author$project$Pages$Settings$page),\n\tcd: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Top__Model, $author$project$Spa$Generated$Pages$Top__Msg, $author$project$Pages$Top$page)\n};\nvar $author$project$Spa$Generated$Pages$init = function (route) {\n\tswitch (route.$) {\n\t\tcase 0:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.cd.fa(0);\n\t\tcase 1:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bu.fa(0);\n\t\tcase 2:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.by.fa(0);\n\t\tcase 3:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bS.fa(0);\n\t\tcase 4:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.b2.fa(0);\n\t\tcase 5:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.b9.fa(0);\n\t\tdefault:\n\t\t\tvar params = route.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bR.fa(params);\n\t}\n};\nvar $author$project$Main$init = F3(\n\tfunction (flags, url, key) {\n\t\tvar _v0 = A3($author$project$Shared$init, flags, url, key);\n\t\tvar shared = _v0.a;\n\t\tvar sharedCmd = _v0.b;\n\t\tvar _v1 = A2(\n\t\t\t$author$project$Spa$Generated$Pages$init,\n\t\t\t$author$project$Utils$Route$fromUrl(url),\n\t\t\tshared);\n\t\tvar page = _v1.a;\n\t\tvar pageCmd = _v1.b;\n\t\treturn _Utils_Tuple2(\n\t\t\tA2($author$project$Main$Model, shared, page),\n\t\t\t$elm$core$Platform$Cmd$batch(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Shared, sharedCmd),\n\t\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd)\n\t\t\t\t\t])));\n\t});\nvar $author$project$Shared$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Spa$Generated$Pages$bundle = function (bigModel) {\n\tswitch (bigModel.$) {\n\t\tcase 0:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.cd.D(model);\n\t\tcase 1:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bu.D(model);\n\t\tcase 2:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.by.D(model);\n\t\tcase 3:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bS.D(model);\n\t\tcase 4:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.b2.D(model);\n\t\tcase 5:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.b9.D(model);\n\t\tdefault:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bR.D(model);\n\t}\n};\nvar $author$project$Spa$Generated$Pages$subscriptions = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Pages$bundle,\n\tfunction ($) {\n\t\treturn $.fN;\n\t});\nvar $author$project$Main$subscriptions = function (model) {\n\treturn $elm$core$Platform$Sub$batch(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$core$Platform$Sub$map,\n\t\t\t\t$author$project$Main$Shared,\n\t\t\t\t$author$project$Shared$subscriptions(model.x)),\n\t\t\t\tA2(\n\t\t\t\t$elm$core$Platform$Sub$map,\n\t\t\t\t$author$project$Main$Pages,\n\t\t\t\t$author$project$Spa$Generated$Pages$subscriptions(model.C))\n\t\t\t]));\n};\nvar $author$project$Spa$Document$toBrowserDocument = function (doc) {\n\treturn {eJ: doc.eJ, fR: doc.fR};\n};\nvar $elm$browser$Browser$Navigation$load = _Browser_load;\nvar $author$project$Spa$Generated$Pages$load = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Pages$bundle,\n\tfunction ($) {\n\t\treturn $.ff;\n\t});\nvar $author$project$Spa$Generated$Pages$save = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Pages$bundle,\n\tfunction ($) {\n\t\treturn $.fI;\n\t});\nvar $elm$url$Url$addPort = F2(\n\tfunction (maybePort, starter) {\n\t\tif (maybePort.$ === 1) {\n\t\t\treturn starter;\n\t\t} else {\n\t\t\tvar port_ = maybePort.a;\n\t\t\treturn starter + (':' + $elm$core$String$fromInt(port_));\n\t\t}\n\t});\nvar $elm$url$Url$addPrefixed = F3(\n\tfunction (prefix, maybeSegment, starter) {\n\t\tif (maybeSegment.$ === 1) {\n\t\t\treturn starter;\n\t\t} else {\n\t\t\tvar segment = maybeSegment.a;\n\t\t\treturn _Utils_ap(\n\t\t\t\tstarter,\n\t\t\t\t_Utils_ap(prefix, segment));\n\t\t}\n\t});\nvar $elm$url$Url$toString = function (url) {\n\tvar http = function () {\n\t\tvar _v0 = url.d3;\n\t\tif (!_v0) {\n\t\t\treturn 'http://';\n\t\t} else {\n\t\t\treturn 'https://';\n\t\t}\n\t}();\n\treturn A3(\n\t\t$elm$url$Url$addPrefixed,\n\t\t'#',\n\t\turl.dx,\n\t\tA3(\n\t\t\t$elm$url$Url$addPrefixed,\n\t\t\t'?',\n\t\t\turl.cT,\n\t\t\t_Utils_ap(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$url$Url$addPort,\n\t\t\t\t\turl.d_,\n\t\t\t\t\t_Utils_ap(http, url.e6)),\n\t\t\t\turl.dY)));\n};\nvar $elm$json$Json$Encode$null = _Json_encodeNull;\nvar $author$project$Ports$clearUser = $author$project$Ports$outgoing(\n\t{ct: $elm$json$Json$Encode$null, c8: 'clearUser'});\nvar $author$project$Shared$update = F2(\n\tfunction (msg, model) {\n\t\treturn _Utils_Tuple2(\n\t\t\t_Utils_update(\n\t\t\t\tmodel,\n\t\t\t\t{O: $elm$core$Maybe$Nothing}),\n\t\t\t$author$project$Ports$clearUser);\n\t});\nvar $author$project$Spa$Generated$Pages$update = F2(\n\tfunction (bigMsg, bigModel) {\n\t\tvar _v0 = _Utils_Tuple2(bigMsg, bigModel);\n\t\t_v0$7:\n\t\twhile (true) {\n\t\t\tswitch (_v0.a.$) {\n\t\t\t\tcase 0:\n\t\t\t\t\tif (!_v0.b.$) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.cd.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 1:\n\t\t\t\t\tif (_v0.b.$ === 1) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.bu.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 2:\n\t\t\t\t\tif (_v0.b.$ === 2) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.by.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 3:\n\t\t\t\t\tif (_v0.b.$ === 3) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.bS.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 4:\n\t\t\t\t\tif (_v0.b.$ === 4) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.b2.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 5:\n\t\t\t\t\tif (_v0.b.$ === 5) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.b9.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tif (_v0.b.$ === 6) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.bR.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn _Utils_Tuple2(bigModel, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Main$update = F2(\n\tfunction (msg, model) {\n\t\tswitch (msg.$) {\n\t\t\tcase 0:\n\t\t\t\tif (!msg.a.$) {\n\t\t\t\t\tvar url = msg.a.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$browser$Browser$Navigation$pushUrl,\n\t\t\t\t\t\t\tmodel.x.fc,\n\t\t\t\t\t\t\t$elm$url$Url$toString(url)));\n\t\t\t\t} else {\n\t\t\t\t\tvar href = msg.a.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t$elm$browser$Browser$Navigation$load(href));\n\t\t\t\t}\n\t\t\tcase 1:\n\t\t\t\tvar url = msg.a;\n\t\t\t\tvar original = model.x;\n\t\t\t\tvar shared = _Utils_update(\n\t\t\t\t\toriginal,\n\t\t\t\t\t{f_: url});\n\t\t\t\tvar _v1 = _Utils_eq(url.dY, model.x.f_.dY) ? A2($author$project$Spa$Generated$Pages$load, model.C, shared) : A2(\n\t\t\t\t\t$author$project$Spa$Generated$Pages$init,\n\t\t\t\t\t$author$project$Utils$Route$fromUrl(url),\n\t\t\t\t\tshared);\n\t\t\t\tvar page = _v1.a;\n\t\t\t\tvar pageCmd = _v1.b;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tC: page,\n\t\t\t\t\t\t\tx: A2($author$project$Spa$Generated$Pages$save, page, shared)\n\t\t\t\t\t\t}),\n\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd));\n\t\t\tcase 2:\n\t\t\t\tvar sharedMsg = msg.a;\n\t\t\t\tvar _v2 = A2($author$project$Shared$update, sharedMsg, model.x);\n\t\t\t\tvar shared = _v2.a;\n\t\t\t\tvar sharedCmd = _v2.b;\n\t\t\t\tvar _v3 = A2($author$project$Spa$Generated$Pages$load, model.C, shared);\n\t\t\t\tvar page = _v3.a;\n\t\t\t\tvar pageCmd = _v3.b;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{C: page, x: shared}),\n\t\t\t\t\t$elm$core$Platform$Cmd$batch(\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Shared, sharedCmd),\n\t\t\t\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd)\n\t\t\t\t\t\t\t])));\n\t\t\tdefault:\n\t\t\t\tvar pageMsg = msg.a;\n\t\t\t\tvar _v4 = A2($author$project$Spa$Generated$Pages$update, pageMsg, model.C);\n\t\t\t\tvar page = _v4.a;\n\t\t\t\tvar pageCmd = _v4.b;\n\t\t\t\tvar shared = A2($author$project$Spa$Generated$Pages$save, page, model.x);\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{C: page, x: shared}),\n\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd));\n\t\t}\n\t});\nvar $elm$json$Json$Decode$value = _Json_decodeValue;\nvar $author$project$Shared$ClickedSignOut = 0;\nvar $elm$virtual_dom$VirtualDom$node = function (tag) {\n\treturn _VirtualDom_node(\n\t\t_VirtualDom_noScript(tag));\n};\nvar $elm$html$Html$node = $elm$virtual_dom$VirtualDom$node;\nvar $elm$html$Html$Attributes$rel = _VirtualDom_attribute('rel');\nvar $author$project$Shared$slogan = 'Highly flexible Application Runtime Platform';\nvar $rundis$elm_bootstrap$Bootstrap$CDN$stylesheet = A3(\n\t$elm$html$Html$node,\n\t'link',\n\t_List_fromArray(\n\t\t[\n\t\t\t$elm$html$Html$Attributes$rel('stylesheet'),\n\t\t\t$elm$html$Html$Attributes$href('https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css')\n\t\t]),\n\t_List_Nil);\nvar $elm$html$Html$footer = _VirtualDom_node('footer');\nvar $author$project$Components$Footer$view = A2(\n\t$elm$html$Html$footer,\n\t_List_fromArray(\n\t\t[\n\t\t\t$elm$html$Html$Attributes$class('footer')\n\t\t]),\n\t_List_fromArray(\n\t\t[\n\t\t\tA2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('container text-center')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$span,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-muted')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text('© 2020 Copyright sahli.net')\n\t\t\t\t\t\t]))\n\t\t\t\t]))\n\t\t]));\nvar $elm$virtual_dom$VirtualDom$property = F2(\n\tfunction (key, value) {\n\t\treturn A2(\n\t\t\t_VirtualDom_property,\n\t\t\t_VirtualDom_noInnerHtmlOrFormAction(key),\n\t\t\t_VirtualDom_noJavaScriptOrHtmlUri(value));\n\t});\nvar $elm$html$Html$Attributes$property = $elm$virtual_dom$VirtualDom$property;\nvar $author$project$Components$Navbar$stringProperty = F2(\n\tfunction (name, string) {\n\t\treturn A2(\n\t\t\t$elm$html$Html$Attributes$property,\n\t\t\tname,\n\t\t\t$elm$json$Json$Encode$string(string));\n\t});\nvar $author$project$Components$Navbar$ariaControls = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'aria-controls', value);\n};\nvar $author$project$Components$Navbar$ariaExpanded = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'aria-expanded', value);\n};\nvar $author$project$Components$Navbar$ariaLabel = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'aria-label', value);\n};\nvar $author$project$Components$Navbar$dataTarget = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'data-target', value);\n};\nvar $author$project$Components$Navbar$dataToggle = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'data-toggle', value);\n};\nvar $elm$html$Html$i = _VirtualDom_node('i');\nvar $elm$html$Html$Attributes$id = $elm$html$Html$Attributes$stringProperty('id');\nvar $elm$html$Html$nav = _VirtualDom_node('nav');\nvar $elm$virtual_dom$VirtualDom$style = _VirtualDom_style;\nvar $elm$html$Html$Attributes$style = $elm$virtual_dom$VirtualDom$style;\nvar $author$project$Components$Navbar$viewLink = F2(\n\tfunction (currentRoute, _v0) {\n\t\tvar label = _v0.a;\n\t\tvar route = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$html$Html$li,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('nav-item')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-link'),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$classList(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t'active',\n\t\t\t\t\t\t\t\t\t_Utils_eq(currentRoute, route))\n\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t\t$author$project$Spa$Generated$Route$toString(route))\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text(label)\n\t\t\t\t\t\t]))\n\t\t\t\t]));\n\t});\nvar $author$project$Components$Navbar$view = function (options) {\n\treturn A2(\n\t\t$elm$html$Html$nav,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('navbar navbar-expand-lg navbar-light')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$a,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('navbar-brand'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t$author$project$Spa$Generated$Route$toString($author$project$Spa$Generated$Route$Top)),\n\t\t\t\t\t\tA2($elm$html$Html$Attributes$style, 'color', '#FF5733')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text('Tumbo')\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$button,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('navbar-toggler'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$type_('button'),\n\t\t\t\t\t\t$author$project$Components$Navbar$dataToggle('collapse'),\n\t\t\t\t\t\t$author$project$Components$Navbar$dataTarget('#navbarTogglerDemo02'),\n\t\t\t\t\t\t$author$project$Components$Navbar$ariaControls('navbarTogglerDemo02'),\n\t\t\t\t\t\t$author$project$Components$Navbar$ariaExpanded('false'),\n\t\t\t\t\t\t$author$project$Components$Navbar$ariaLabel('Toggle navigation')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$span,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('navbar-toggler-icon')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('collapse navbar-collapse'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$id('navbarTogglerDemo02')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$ul,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav navbar-nav ml-auto')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\tvar _v0 = options.O;\n\t\t\t\t\t\t\tif (!_v0.$) {\n\t\t\t\t\t\t\t\treturn $elm$core$List$concat(\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t\t\t\t\t\t\t$author$project$Components$Navbar$viewLink(options.dn),\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Home', $author$project$Spa$Generated$Route$Top),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Projects', $author$project$Spa$Generated$Route$Projects),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Settings', $author$project$Spa$Generated$Route$Settings)\n\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$li,\n\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-item')\n\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-link'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onClick(options.fv)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Sign out')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t\t\t\t\t$author$project$Components$Navbar$viewLink(options.dn),\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Home', $author$project$Spa$Generated$Route$Top),\n\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Sign in', $author$project$Spa$Generated$Route$Login),\n\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Sign up', $author$project$Spa$Generated$Route$Register)\n\t\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}()),\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$target('blank'),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('https://github.com/sahlinet/go-tumbo3')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$i,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('fa fa-github'),\n\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$Attributes$style, 'color', 'black')\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]));\n};\nvar $author$project$Shared$view = F2(\n\tfunction (_v0, model) {\n\t\tvar page = _v0.C;\n\t\tvar toMsg = _v0.fV;\n\t\treturn {\n\t\t\teJ: _List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA3(\n\t\t\t\t\t$elm$html$Html$node,\n\t\t\t\t\t'link',\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$rel('stylesheet'),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_Nil),\n\t\t\t\t\t$rundis$elm_bootstrap$Bootstrap$CDN$stylesheet,\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('layout')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$author$project$Components$Navbar$view(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdn: $author$project$Utils$Route$fromUrl(model.f_),\n\t\t\t\t\t\t\t\tfv: toMsg(0),\n\t\t\t\t\t\t\t\tO: model.O\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('jumbotron')\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$text($author$project$Shared$slogan)\n\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('page')\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\tpage.eJ),\n\t\t\t\t\t\t\t$author$project$Components$Footer$view\n\t\t\t\t\t\t]))\n\t\t\t\t]),\n\t\t\tfR: $elm$core$String$isEmpty(page.fR) ? 'Tumbo' : (page.fR + ' | Tumbo')\n\t\t};\n\t});\nvar $author$project$Spa$Generated$Pages$view = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Pages$bundle,\n\tfunction ($) {\n\t\treturn $.f0;\n\t});\nvar $author$project$Main$view = function (model) {\n\treturn A2(\n\t\t$author$project$Shared$view,\n\t\t{\n\t\t\tC: A2(\n\t\t\t\t$author$project$Spa$Document$map,\n\t\t\t\t$author$project$Main$Pages,\n\t\t\t\t$author$project$Spa$Generated$Pages$view(model.C)),\n\t\t\tfV: $author$project$Main$Shared\n\t\t},\n\t\tmodel.x);\n};\nvar $author$project$Main$main = $elm$browser$Browser$application(\n\t{\n\t\tfa: $author$project$Main$init,\n\t\tfw: $author$project$Main$UrlChanged,\n\t\tfx: $author$project$Main$LinkClicked,\n\t\tfN: $author$project$Main$subscriptions,\n\t\tfZ: $author$project$Main$update,\n\t\tf0: A2($elm$core$Basics$composeR, $author$project$Main$view, $author$project$Spa$Document$toBrowserDocument)\n\t});\n_Platform_export({'Main':{'init':$author$project$Main$main($elm$json$Json$Decode$value)(0)}});}(this));"), + Content: string("(function(scope){\n'use strict';\n\nfunction F(arity, fun, wrapper) {\n wrapper.a = arity;\n wrapper.f = fun;\n return wrapper;\n}\n\nfunction F2(fun) {\n return F(2, fun, function(a) { return function(b) { return fun(a,b); }; })\n}\nfunction F3(fun) {\n return F(3, fun, function(a) {\n return function(b) { return function(c) { return fun(a, b, c); }; };\n });\n}\nfunction F4(fun) {\n return F(4, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return fun(a, b, c, d); }; }; };\n });\n}\nfunction F5(fun) {\n return F(5, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return fun(a, b, c, d, e); }; }; }; };\n });\n}\nfunction F6(fun) {\n return F(6, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return fun(a, b, c, d, e, f); }; }; }; }; };\n });\n}\nfunction F7(fun) {\n return F(7, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return fun(a, b, c, d, e, f, g); }; }; }; }; }; };\n });\n}\nfunction F8(fun) {\n return F(8, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return function(h) {\n return fun(a, b, c, d, e, f, g, h); }; }; }; }; }; }; };\n });\n}\nfunction F9(fun) {\n return F(9, fun, function(a) { return function(b) { return function(c) {\n return function(d) { return function(e) { return function(f) {\n return function(g) { return function(h) { return function(i) {\n return fun(a, b, c, d, e, f, g, h, i); }; }; }; }; }; }; }; };\n });\n}\n\nfunction A2(fun, a, b) {\n return fun.a === 2 ? fun.f(a, b) : fun(a)(b);\n}\nfunction A3(fun, a, b, c) {\n return fun.a === 3 ? fun.f(a, b, c) : fun(a)(b)(c);\n}\nfunction A4(fun, a, b, c, d) {\n return fun.a === 4 ? fun.f(a, b, c, d) : fun(a)(b)(c)(d);\n}\nfunction A5(fun, a, b, c, d, e) {\n return fun.a === 5 ? fun.f(a, b, c, d, e) : fun(a)(b)(c)(d)(e);\n}\nfunction A6(fun, a, b, c, d, e, f) {\n return fun.a === 6 ? fun.f(a, b, c, d, e, f) : fun(a)(b)(c)(d)(e)(f);\n}\nfunction A7(fun, a, b, c, d, e, f, g) {\n return fun.a === 7 ? fun.f(a, b, c, d, e, f, g) : fun(a)(b)(c)(d)(e)(f)(g);\n}\nfunction A8(fun, a, b, c, d, e, f, g, h) {\n return fun.a === 8 ? fun.f(a, b, c, d, e, f, g, h) : fun(a)(b)(c)(d)(e)(f)(g)(h);\n}\nfunction A9(fun, a, b, c, d, e, f, g, h, i) {\n return fun.a === 9 ? fun.f(a, b, c, d, e, f, g, h, i) : fun(a)(b)(c)(d)(e)(f)(g)(h)(i);\n}\n\n\n\n\n// EQUALITY\n\nfunction _Utils_eq(x, y)\n{\n\tfor (\n\t\tvar pair, stack = [], isEqual = _Utils_eqHelp(x, y, 0, stack);\n\t\tisEqual && (pair = stack.pop());\n\t\tisEqual = _Utils_eqHelp(pair.a, pair.b, 0, stack)\n\t\t)\n\t{}\n\n\treturn isEqual;\n}\n\nfunction _Utils_eqHelp(x, y, depth, stack)\n{\n\tif (x === y)\n\t{\n\t\treturn true;\n\t}\n\n\tif (typeof x !== 'object' || x === null || y === null)\n\t{\n\t\ttypeof x === 'function' && _Debug_crash(5);\n\t\treturn false;\n\t}\n\n\tif (depth > 100)\n\t{\n\t\tstack.push(_Utils_Tuple2(x,y));\n\t\treturn true;\n\t}\n\n\t/**_UNUSED/\n\tif (x.$ === 'Set_elm_builtin')\n\t{\n\t\tx = $elm$core$Set$toList(x);\n\t\ty = $elm$core$Set$toList(y);\n\t}\n\tif (x.$ === 'RBNode_elm_builtin' || x.$ === 'RBEmpty_elm_builtin')\n\t{\n\t\tx = $elm$core$Dict$toList(x);\n\t\ty = $elm$core$Dict$toList(y);\n\t}\n\t//*/\n\n\t/**/\n\tif (x.$ < 0)\n\t{\n\t\tx = $elm$core$Dict$toList(x);\n\t\ty = $elm$core$Dict$toList(y);\n\t}\n\t//*/\n\n\tfor (var key in x)\n\t{\n\t\tif (!_Utils_eqHelp(x[key], y[key], depth + 1, stack))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nvar _Utils_equal = F2(_Utils_eq);\nvar _Utils_notEqual = F2(function(a, b) { return !_Utils_eq(a,b); });\n\n\n\n// COMPARISONS\n\n// Code in Generate/JavaScript.hs, Basics.js, and List.js depends on\n// the particular integer values assigned to LT, EQ, and GT.\n\nfunction _Utils_cmp(x, y, ord)\n{\n\tif (typeof x !== 'object')\n\t{\n\t\treturn x === y ? /*EQ*/ 0 : x < y ? /*LT*/ -1 : /*GT*/ 1;\n\t}\n\n\t/**_UNUSED/\n\tif (x instanceof String)\n\t{\n\t\tvar a = x.valueOf();\n\t\tvar b = y.valueOf();\n\t\treturn a === b ? 0 : a < b ? -1 : 1;\n\t}\n\t//*/\n\n\t/**/\n\tif (typeof x.$ === 'undefined')\n\t//*/\n\t/**_UNUSED/\n\tif (x.$[0] === '#')\n\t//*/\n\t{\n\t\treturn (ord = _Utils_cmp(x.a, y.a))\n\t\t\t? ord\n\t\t\t: (ord = _Utils_cmp(x.b, y.b))\n\t\t\t\t? ord\n\t\t\t\t: _Utils_cmp(x.c, y.c);\n\t}\n\n\t// traverse conses until end of a list or a mismatch\n\tfor (; x.b && y.b && !(ord = _Utils_cmp(x.a, y.a)); x = x.b, y = y.b) {} // WHILE_CONSES\n\treturn ord || (x.b ? /*GT*/ 1 : y.b ? /*LT*/ -1 : /*EQ*/ 0);\n}\n\nvar _Utils_lt = F2(function(a, b) { return _Utils_cmp(a, b) < 0; });\nvar _Utils_le = F2(function(a, b) { return _Utils_cmp(a, b) < 1; });\nvar _Utils_gt = F2(function(a, b) { return _Utils_cmp(a, b) > 0; });\nvar _Utils_ge = F2(function(a, b) { return _Utils_cmp(a, b) >= 0; });\n\nvar _Utils_compare = F2(function(x, y)\n{\n\tvar n = _Utils_cmp(x, y);\n\treturn n < 0 ? $elm$core$Basics$LT : n ? $elm$core$Basics$GT : $elm$core$Basics$EQ;\n});\n\n\n// COMMON VALUES\n\nvar _Utils_Tuple0 = 0;\nvar _Utils_Tuple0_UNUSED = { $: '#0' };\n\nfunction _Utils_Tuple2(a, b) { return { a: a, b: b }; }\nfunction _Utils_Tuple2_UNUSED(a, b) { return { $: '#2', a: a, b: b }; }\n\nfunction _Utils_Tuple3(a, b, c) { return { a: a, b: b, c: c }; }\nfunction _Utils_Tuple3_UNUSED(a, b, c) { return { $: '#3', a: a, b: b, c: c }; }\n\nfunction _Utils_chr(c) { return c; }\nfunction _Utils_chr_UNUSED(c) { return new String(c); }\n\n\n// RECORDS\n\nfunction _Utils_update(oldRecord, updatedFields)\n{\n\tvar newRecord = {};\n\n\tfor (var key in oldRecord)\n\t{\n\t\tnewRecord[key] = oldRecord[key];\n\t}\n\n\tfor (var key in updatedFields)\n\t{\n\t\tnewRecord[key] = updatedFields[key];\n\t}\n\n\treturn newRecord;\n}\n\n\n// APPEND\n\nvar _Utils_append = F2(_Utils_ap);\n\nfunction _Utils_ap(xs, ys)\n{\n\t// append Strings\n\tif (typeof xs === 'string')\n\t{\n\t\treturn xs + ys;\n\t}\n\n\t// append Lists\n\tif (!xs.b)\n\t{\n\t\treturn ys;\n\t}\n\tvar root = _List_Cons(xs.a, ys);\n\txs = xs.b\n\tfor (var curr = root; xs.b; xs = xs.b) // WHILE_CONS\n\t{\n\t\tcurr = curr.b = _List_Cons(xs.a, ys);\n\t}\n\treturn root;\n}\n\n\n\nvar _List_Nil = { $: 0 };\nvar _List_Nil_UNUSED = { $: '[]' };\n\nfunction _List_Cons(hd, tl) { return { $: 1, a: hd, b: tl }; }\nfunction _List_Cons_UNUSED(hd, tl) { return { $: '::', a: hd, b: tl }; }\n\n\nvar _List_cons = F2(_List_Cons);\n\nfunction _List_fromArray(arr)\n{\n\tvar out = _List_Nil;\n\tfor (var i = arr.length; i--; )\n\t{\n\t\tout = _List_Cons(arr[i], out);\n\t}\n\treturn out;\n}\n\nfunction _List_toArray(xs)\n{\n\tfor (var out = []; xs.b; xs = xs.b) // WHILE_CONS\n\t{\n\t\tout.push(xs.a);\n\t}\n\treturn out;\n}\n\nvar _List_map2 = F3(function(f, xs, ys)\n{\n\tfor (var arr = []; xs.b && ys.b; xs = xs.b, ys = ys.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A2(f, xs.a, ys.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map3 = F4(function(f, xs, ys, zs)\n{\n\tfor (var arr = []; xs.b && ys.b && zs.b; xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A3(f, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map4 = F5(function(f, ws, xs, ys, zs)\n{\n\tfor (var arr = []; ws.b && xs.b && ys.b && zs.b; ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A4(f, ws.a, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_map5 = F6(function(f, vs, ws, xs, ys, zs)\n{\n\tfor (var arr = []; vs.b && ws.b && xs.b && ys.b && zs.b; vs = vs.b, ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES\n\t{\n\t\tarr.push(A5(f, vs.a, ws.a, xs.a, ys.a, zs.a));\n\t}\n\treturn _List_fromArray(arr);\n});\n\nvar _List_sortBy = F2(function(f, xs)\n{\n\treturn _List_fromArray(_List_toArray(xs).sort(function(a, b) {\n\t\treturn _Utils_cmp(f(a), f(b));\n\t}));\n});\n\nvar _List_sortWith = F2(function(f, xs)\n{\n\treturn _List_fromArray(_List_toArray(xs).sort(function(a, b) {\n\t\tvar ord = A2(f, a, b);\n\t\treturn ord === $elm$core$Basics$EQ ? 0 : ord === $elm$core$Basics$LT ? -1 : 1;\n\t}));\n});\n\n\n\nvar _JsArray_empty = [];\n\nfunction _JsArray_singleton(value)\n{\n return [value];\n}\n\nfunction _JsArray_length(array)\n{\n return array.length;\n}\n\nvar _JsArray_initialize = F3(function(size, offset, func)\n{\n var result = new Array(size);\n\n for (var i = 0; i < size; i++)\n {\n result[i] = func(offset + i);\n }\n\n return result;\n});\n\nvar _JsArray_initializeFromList = F2(function (max, ls)\n{\n var result = new Array(max);\n\n for (var i = 0; i < max && ls.b; i++)\n {\n result[i] = ls.a;\n ls = ls.b;\n }\n\n result.length = i;\n return _Utils_Tuple2(result, ls);\n});\n\nvar _JsArray_unsafeGet = F2(function(index, array)\n{\n return array[index];\n});\n\nvar _JsArray_unsafeSet = F3(function(index, value, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = array[i];\n }\n\n result[index] = value;\n return result;\n});\n\nvar _JsArray_push = F2(function(value, array)\n{\n var length = array.length;\n var result = new Array(length + 1);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = array[i];\n }\n\n result[length] = value;\n return result;\n});\n\nvar _JsArray_foldl = F3(function(func, acc, array)\n{\n var length = array.length;\n\n for (var i = 0; i < length; i++)\n {\n acc = A2(func, array[i], acc);\n }\n\n return acc;\n});\n\nvar _JsArray_foldr = F3(function(func, acc, array)\n{\n for (var i = array.length - 1; i >= 0; i--)\n {\n acc = A2(func, array[i], acc);\n }\n\n return acc;\n});\n\nvar _JsArray_map = F2(function(func, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = func(array[i]);\n }\n\n return result;\n});\n\nvar _JsArray_indexedMap = F3(function(func, offset, array)\n{\n var length = array.length;\n var result = new Array(length);\n\n for (var i = 0; i < length; i++)\n {\n result[i] = A2(func, offset + i, array[i]);\n }\n\n return result;\n});\n\nvar _JsArray_slice = F3(function(from, to, array)\n{\n return array.slice(from, to);\n});\n\nvar _JsArray_appendN = F3(function(n, dest, source)\n{\n var destLen = dest.length;\n var itemsToCopy = n - destLen;\n\n if (itemsToCopy > source.length)\n {\n itemsToCopy = source.length;\n }\n\n var size = destLen + itemsToCopy;\n var result = new Array(size);\n\n for (var i = 0; i < destLen; i++)\n {\n result[i] = dest[i];\n }\n\n for (var i = 0; i < itemsToCopy; i++)\n {\n result[i + destLen] = source[i];\n }\n\n return result;\n});\n\n\n\n// LOG\n\nvar _Debug_log = F2(function(tag, value)\n{\n\treturn value;\n});\n\nvar _Debug_log_UNUSED = F2(function(tag, value)\n{\n\tconsole.log(tag + ': ' + _Debug_toString(value));\n\treturn value;\n});\n\n\n// TODOS\n\nfunction _Debug_todo(moduleName, region)\n{\n\treturn function(message) {\n\t\t_Debug_crash(8, moduleName, region, message);\n\t};\n}\n\nfunction _Debug_todoCase(moduleName, region, value)\n{\n\treturn function(message) {\n\t\t_Debug_crash(9, moduleName, region, value, message);\n\t};\n}\n\n\n// TO STRING\n\nfunction _Debug_toString(value)\n{\n\treturn '';\n}\n\nfunction _Debug_toString_UNUSED(value)\n{\n\treturn _Debug_toAnsiString(false, value);\n}\n\nfunction _Debug_toAnsiString(ansi, value)\n{\n\tif (typeof value === 'function')\n\t{\n\t\treturn _Debug_internalColor(ansi, '');\n\t}\n\n\tif (typeof value === 'boolean')\n\t{\n\t\treturn _Debug_ctorColor(ansi, value ? 'True' : 'False');\n\t}\n\n\tif (typeof value === 'number')\n\t{\n\t\treturn _Debug_numberColor(ansi, value + '');\n\t}\n\n\tif (value instanceof String)\n\t{\n\t\treturn _Debug_charColor(ansi, \"'\" + _Debug_addSlashes(value, true) + \"'\");\n\t}\n\n\tif (typeof value === 'string')\n\t{\n\t\treturn _Debug_stringColor(ansi, '\"' + _Debug_addSlashes(value, false) + '\"');\n\t}\n\n\tif (typeof value === 'object' && '$' in value)\n\t{\n\t\tvar tag = value.$;\n\n\t\tif (typeof tag === 'number')\n\t\t{\n\t\t\treturn _Debug_internalColor(ansi, '');\n\t\t}\n\n\t\tif (tag[0] === '#')\n\t\t{\n\t\t\tvar output = [];\n\t\t\tfor (var k in value)\n\t\t\t{\n\t\t\t\tif (k === '$') continue;\n\t\t\t\toutput.push(_Debug_toAnsiString(ansi, value[k]));\n\t\t\t}\n\t\t\treturn '(' + output.join(',') + ')';\n\t\t}\n\n\t\tif (tag === 'Set_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Set')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Set$toList(value));\n\t\t}\n\n\t\tif (tag === 'RBNode_elm_builtin' || tag === 'RBEmpty_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Dict')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Dict$toList(value));\n\t\t}\n\n\t\tif (tag === 'Array_elm_builtin')\n\t\t{\n\t\t\treturn _Debug_ctorColor(ansi, 'Array')\n\t\t\t\t+ _Debug_fadeColor(ansi, '.fromList') + ' '\n\t\t\t\t+ _Debug_toAnsiString(ansi, $elm$core$Array$toList(value));\n\t\t}\n\n\t\tif (tag === '::' || tag === '[]')\n\t\t{\n\t\t\tvar output = '[';\n\n\t\t\tvalue.b && (output += _Debug_toAnsiString(ansi, value.a), value = value.b)\n\n\t\t\tfor (; value.b; value = value.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\toutput += ',' + _Debug_toAnsiString(ansi, value.a);\n\t\t\t}\n\t\t\treturn output + ']';\n\t\t}\n\n\t\tvar output = '';\n\t\tfor (var i in value)\n\t\t{\n\t\t\tif (i === '$') continue;\n\t\t\tvar str = _Debug_toAnsiString(ansi, value[i]);\n\t\t\tvar c0 = str[0];\n\t\t\tvar parenless = c0 === '{' || c0 === '(' || c0 === '[' || c0 === '<' || c0 === '\"' || str.indexOf(' ') < 0;\n\t\t\toutput += ' ' + (parenless ? str : '(' + str + ')');\n\t\t}\n\t\treturn _Debug_ctorColor(ansi, tag) + output;\n\t}\n\n\tif (typeof DataView === 'function' && value instanceof DataView)\n\t{\n\t\treturn _Debug_stringColor(ansi, '<' + value.byteLength + ' bytes>');\n\t}\n\n\tif (typeof File !== 'undefined' && value instanceof File)\n\t{\n\t\treturn _Debug_internalColor(ansi, '<' + value.name + '>');\n\t}\n\n\tif (typeof value === 'object')\n\t{\n\t\tvar output = [];\n\t\tfor (var key in value)\n\t\t{\n\t\t\tvar field = key[0] === '_' ? key.slice(1) : key;\n\t\t\toutput.push(_Debug_fadeColor(ansi, field) + ' = ' + _Debug_toAnsiString(ansi, value[key]));\n\t\t}\n\t\tif (output.length === 0)\n\t\t{\n\t\t\treturn '{}';\n\t\t}\n\t\treturn '{ ' + output.join(', ') + ' }';\n\t}\n\n\treturn _Debug_internalColor(ansi, '');\n}\n\nfunction _Debug_addSlashes(str, isChar)\n{\n\tvar s = str\n\t\t.replace(/\\\\/g, '\\\\\\\\')\n\t\t.replace(/\\n/g, '\\\\n')\n\t\t.replace(/\\t/g, '\\\\t')\n\t\t.replace(/\\r/g, '\\\\r')\n\t\t.replace(/\\v/g, '\\\\v')\n\t\t.replace(/\\0/g, '\\\\0');\n\n\tif (isChar)\n\t{\n\t\treturn s.replace(/\\'/g, '\\\\\\'');\n\t}\n\telse\n\t{\n\t\treturn s.replace(/\\\"/g, '\\\\\"');\n\t}\n}\n\nfunction _Debug_ctorColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[96m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_numberColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[95m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_stringColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[93m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_charColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[92m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_fadeColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[37m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_internalColor(ansi, string)\n{\n\treturn ansi ? '\\x1b[36m' + string + '\\x1b[0m' : string;\n}\n\nfunction _Debug_toHexDigit(n)\n{\n\treturn String.fromCharCode(n < 10 ? 48 + n : 55 + n);\n}\n\n\n// CRASH\n\n\nfunction _Debug_crash(identifier)\n{\n\tthrow new Error('https://github.com/elm/core/blob/1.0.0/hints/' + identifier + '.md');\n}\n\n\nfunction _Debug_crash_UNUSED(identifier, fact1, fact2, fact3, fact4)\n{\n\tswitch(identifier)\n\t{\n\t\tcase 0:\n\t\t\tthrow new Error('What node should I take over? In JavaScript I need something like:\\n\\n Elm.Main.init({\\n node: document.getElementById(\"elm-node\")\\n })\\n\\nYou need to do this with any Browser.sandbox or Browser.element program.');\n\n\t\tcase 1:\n\t\t\tthrow new Error('Browser.application programs cannot handle URLs like this:\\n\\n ' + document.location.href + '\\n\\nWhat is the root? The root of your file system? Try looking at this program with `elm reactor` or some other server.');\n\n\t\tcase 2:\n\t\t\tvar jsonErrorString = fact1;\n\t\t\tthrow new Error('Problem with the flags given to your Elm program on initialization.\\n\\n' + jsonErrorString);\n\n\t\tcase 3:\n\t\t\tvar portName = fact1;\n\t\t\tthrow new Error('There can only be one port named `' + portName + '`, but your program has multiple.');\n\n\t\tcase 4:\n\t\t\tvar portName = fact1;\n\t\t\tvar problem = fact2;\n\t\t\tthrow new Error('Trying to send an unexpected type of value through port `' + portName + '`:\\n' + problem);\n\n\t\tcase 5:\n\t\t\tthrow new Error('Trying to use `(==)` on functions.\\nThere is no way to know if functions are \"the same\" in the Elm sense.\\nRead more about this at https://package.elm-lang.org/packages/elm/core/latest/Basics#== which describes why it is this way and what the better version will look like.');\n\n\t\tcase 6:\n\t\t\tvar moduleName = fact1;\n\t\t\tthrow new Error('Your page is loading multiple Elm scripts with a module named ' + moduleName + '. Maybe a duplicate script is getting loaded accidentally? If not, rename one of them so I know which is which!');\n\n\t\tcase 8:\n\t\t\tvar moduleName = fact1;\n\t\t\tvar region = fact2;\n\t\t\tvar message = fact3;\n\t\t\tthrow new Error('TODO in module `' + moduleName + '` ' + _Debug_regionToString(region) + '\\n\\n' + message);\n\n\t\tcase 9:\n\t\t\tvar moduleName = fact1;\n\t\t\tvar region = fact2;\n\t\t\tvar value = fact3;\n\t\t\tvar message = fact4;\n\t\t\tthrow new Error(\n\t\t\t\t'TODO in module `' + moduleName + '` from the `case` expression '\n\t\t\t\t+ _Debug_regionToString(region) + '\\n\\nIt received the following value:\\n\\n '\n\t\t\t\t+ _Debug_toString(value).replace('\\n', '\\n ')\n\t\t\t\t+ '\\n\\nBut the branch that handles it says:\\n\\n ' + message.replace('\\n', '\\n ')\n\t\t\t);\n\n\t\tcase 10:\n\t\t\tthrow new Error('Bug in https://github.com/elm/virtual-dom/issues');\n\n\t\tcase 11:\n\t\t\tthrow new Error('Cannot perform mod 0. Division by zero error.');\n\t}\n}\n\nfunction _Debug_regionToString(region)\n{\n\tif (region.c2.aC === region.ds.aC)\n\t{\n\t\treturn 'on line ' + region.c2.aC;\n\t}\n\treturn 'on lines ' + region.c2.aC + ' through ' + region.ds.aC;\n}\n\n\n\n// MATH\n\nvar _Basics_add = F2(function(a, b) { return a + b; });\nvar _Basics_sub = F2(function(a, b) { return a - b; });\nvar _Basics_mul = F2(function(a, b) { return a * b; });\nvar _Basics_fdiv = F2(function(a, b) { return a / b; });\nvar _Basics_idiv = F2(function(a, b) { return (a / b) | 0; });\nvar _Basics_pow = F2(Math.pow);\n\nvar _Basics_remainderBy = F2(function(b, a) { return a % b; });\n\n// https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/divmodnote-letter.pdf\nvar _Basics_modBy = F2(function(modulus, x)\n{\n\tvar answer = x % modulus;\n\treturn modulus === 0\n\t\t? _Debug_crash(11)\n\t\t:\n\t((answer > 0 && modulus < 0) || (answer < 0 && modulus > 0))\n\t\t? answer + modulus\n\t\t: answer;\n});\n\n\n// TRIGONOMETRY\n\nvar _Basics_pi = Math.PI;\nvar _Basics_e = Math.E;\nvar _Basics_cos = Math.cos;\nvar _Basics_sin = Math.sin;\nvar _Basics_tan = Math.tan;\nvar _Basics_acos = Math.acos;\nvar _Basics_asin = Math.asin;\nvar _Basics_atan = Math.atan;\nvar _Basics_atan2 = F2(Math.atan2);\n\n\n// MORE MATH\n\nfunction _Basics_toFloat(x) { return x; }\nfunction _Basics_truncate(n) { return n | 0; }\nfunction _Basics_isInfinite(n) { return n === Infinity || n === -Infinity; }\n\nvar _Basics_ceiling = Math.ceil;\nvar _Basics_floor = Math.floor;\nvar _Basics_round = Math.round;\nvar _Basics_sqrt = Math.sqrt;\nvar _Basics_log = Math.log;\nvar _Basics_isNaN = isNaN;\n\n\n// BOOLEANS\n\nfunction _Basics_not(bool) { return !bool; }\nvar _Basics_and = F2(function(a, b) { return a && b; });\nvar _Basics_or = F2(function(a, b) { return a || b; });\nvar _Basics_xor = F2(function(a, b) { return a !== b; });\n\n\n\nvar _String_cons = F2(function(chr, str)\n{\n\treturn chr + str;\n});\n\nfunction _String_uncons(string)\n{\n\tvar word = string.charCodeAt(0);\n\treturn !isNaN(word)\n\t\t? $elm$core$Maybe$Just(\n\t\t\t0xD800 <= word && word <= 0xDBFF\n\t\t\t\t? _Utils_Tuple2(_Utils_chr(string[0] + string[1]), string.slice(2))\n\t\t\t\t: _Utils_Tuple2(_Utils_chr(string[0]), string.slice(1))\n\t\t)\n\t\t: $elm$core$Maybe$Nothing;\n}\n\nvar _String_append = F2(function(a, b)\n{\n\treturn a + b;\n});\n\nfunction _String_length(str)\n{\n\treturn str.length;\n}\n\nvar _String_map = F2(function(func, string)\n{\n\tvar len = string.length;\n\tvar array = new Array(len);\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tarray[i] = func(_Utils_chr(string[i] + string[i+1]));\n\t\t\ti += 2;\n\t\t\tcontinue;\n\t\t}\n\t\tarray[i] = func(_Utils_chr(string[i]));\n\t\ti++;\n\t}\n\treturn array.join('');\n});\n\nvar _String_filter = F2(function(isGood, str)\n{\n\tvar arr = [];\n\tvar len = str.length;\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar char = str[i];\n\t\tvar word = str.charCodeAt(i);\n\t\ti++;\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tchar += str[i];\n\t\t\ti++;\n\t\t}\n\n\t\tif (isGood(_Utils_chr(char)))\n\t\t{\n\t\t\tarr.push(char);\n\t\t}\n\t}\n\treturn arr.join('');\n});\n\nfunction _String_reverse(str)\n{\n\tvar len = str.length;\n\tvar arr = new Array(len);\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar word = str.charCodeAt(i);\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tarr[len - i] = str[i + 1];\n\t\t\ti++;\n\t\t\tarr[len - i] = str[i - 1];\n\t\t\ti++;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tarr[len - i] = str[i];\n\t\t\ti++;\n\t\t}\n\t}\n\treturn arr.join('');\n}\n\nvar _String_foldl = F3(function(func, state, string)\n{\n\tvar len = string.length;\n\tvar i = 0;\n\twhile (i < len)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\ti++;\n\t\tif (0xD800 <= word && word <= 0xDBFF)\n\t\t{\n\t\t\tchar += string[i];\n\t\t\ti++;\n\t\t}\n\t\tstate = A2(func, _Utils_chr(char), state);\n\t}\n\treturn state;\n});\n\nvar _String_foldr = F3(function(func, state, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tstate = A2(func, _Utils_chr(char), state);\n\t}\n\treturn state;\n});\n\nvar _String_split = F2(function(sep, str)\n{\n\treturn str.split(sep);\n});\n\nvar _String_join = F2(function(sep, strs)\n{\n\treturn strs.join(sep);\n});\n\nvar _String_slice = F3(function(start, end, str) {\n\treturn str.slice(start, end);\n});\n\nfunction _String_trim(str)\n{\n\treturn str.trim();\n}\n\nfunction _String_trimLeft(str)\n{\n\treturn str.replace(/^\\s+/, '');\n}\n\nfunction _String_trimRight(str)\n{\n\treturn str.replace(/\\s+$/, '');\n}\n\nfunction _String_words(str)\n{\n\treturn _List_fromArray(str.trim().split(/\\s+/g));\n}\n\nfunction _String_lines(str)\n{\n\treturn _List_fromArray(str.split(/\\r\\n|\\r|\\n/g));\n}\n\nfunction _String_toUpper(str)\n{\n\treturn str.toUpperCase();\n}\n\nfunction _String_toLower(str)\n{\n\treturn str.toLowerCase();\n}\n\nvar _String_any = F2(function(isGood, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tif (isGood(_Utils_chr(char)))\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n});\n\nvar _String_all = F2(function(isGood, string)\n{\n\tvar i = string.length;\n\twhile (i--)\n\t{\n\t\tvar char = string[i];\n\t\tvar word = string.charCodeAt(i);\n\t\tif (0xDC00 <= word && word <= 0xDFFF)\n\t\t{\n\t\t\ti--;\n\t\t\tchar = string[i] + char;\n\t\t}\n\t\tif (!isGood(_Utils_chr(char)))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n});\n\nvar _String_contains = F2(function(sub, str)\n{\n\treturn str.indexOf(sub) > -1;\n});\n\nvar _String_startsWith = F2(function(sub, str)\n{\n\treturn str.indexOf(sub) === 0;\n});\n\nvar _String_endsWith = F2(function(sub, str)\n{\n\treturn str.length >= sub.length &&\n\t\tstr.lastIndexOf(sub) === str.length - sub.length;\n});\n\nvar _String_indexes = F2(function(sub, str)\n{\n\tvar subLen = sub.length;\n\n\tif (subLen < 1)\n\t{\n\t\treturn _List_Nil;\n\t}\n\n\tvar i = 0;\n\tvar is = [];\n\n\twhile ((i = str.indexOf(sub, i)) > -1)\n\t{\n\t\tis.push(i);\n\t\ti = i + subLen;\n\t}\n\n\treturn _List_fromArray(is);\n});\n\n\n// TO STRING\n\nfunction _String_fromNumber(number)\n{\n\treturn number + '';\n}\n\n\n// INT CONVERSIONS\n\nfunction _String_toInt(str)\n{\n\tvar total = 0;\n\tvar code0 = str.charCodeAt(0);\n\tvar start = code0 == 0x2B /* + */ || code0 == 0x2D /* - */ ? 1 : 0;\n\n\tfor (var i = start; i < str.length; ++i)\n\t{\n\t\tvar code = str.charCodeAt(i);\n\t\tif (code < 0x30 || 0x39 < code)\n\t\t{\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t}\n\t\ttotal = 10 * total + code - 0x30;\n\t}\n\n\treturn i == start\n\t\t? $elm$core$Maybe$Nothing\n\t\t: $elm$core$Maybe$Just(code0 == 0x2D ? -total : total);\n}\n\n\n// FLOAT CONVERSIONS\n\nfunction _String_toFloat(s)\n{\n\t// check if it is a hex, octal, or binary number\n\tif (s.length === 0 || /[\\sxbo]/.test(s))\n\t{\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n\tvar n = +s;\n\t// faster isNaN check\n\treturn n === n ? $elm$core$Maybe$Just(n) : $elm$core$Maybe$Nothing;\n}\n\nfunction _String_fromList(chars)\n{\n\treturn _List_toArray(chars).join('');\n}\n\n\n\n\nfunction _Char_toCode(char)\n{\n\tvar code = char.charCodeAt(0);\n\tif (0xD800 <= code && code <= 0xDBFF)\n\t{\n\t\treturn (code - 0xD800) * 0x400 + char.charCodeAt(1) - 0xDC00 + 0x10000\n\t}\n\treturn code;\n}\n\nfunction _Char_fromCode(code)\n{\n\treturn _Utils_chr(\n\t\t(code < 0 || 0x10FFFF < code)\n\t\t\t? '\\uFFFD'\n\t\t\t:\n\t\t(code <= 0xFFFF)\n\t\t\t? String.fromCharCode(code)\n\t\t\t:\n\t\t(code -= 0x10000,\n\t\t\tString.fromCharCode(Math.floor(code / 0x400) + 0xD800, code % 0x400 + 0xDC00)\n\t\t)\n\t);\n}\n\nfunction _Char_toUpper(char)\n{\n\treturn _Utils_chr(char.toUpperCase());\n}\n\nfunction _Char_toLower(char)\n{\n\treturn _Utils_chr(char.toLowerCase());\n}\n\nfunction _Char_toLocaleUpper(char)\n{\n\treturn _Utils_chr(char.toLocaleUpperCase());\n}\n\nfunction _Char_toLocaleLower(char)\n{\n\treturn _Utils_chr(char.toLocaleLowerCase());\n}\n\n\n\n/**_UNUSED/\nfunction _Json_errorToString(error)\n{\n\treturn $elm$json$Json$Decode$errorToString(error);\n}\n//*/\n\n\n// CORE DECODERS\n\nfunction _Json_succeed(msg)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: msg\n\t};\n}\n\nfunction _Json_fail(msg)\n{\n\treturn {\n\t\t$: 1,\n\t\ta: msg\n\t};\n}\n\nfunction _Json_decodePrim(decoder)\n{\n\treturn { $: 2, b: decoder };\n}\n\nvar _Json_decodeInt = _Json_decodePrim(function(value) {\n\treturn (typeof value !== 'number')\n\t\t? _Json_expecting('an INT', value)\n\t\t:\n\t(-2147483647 < value && value < 2147483647 && (value | 0) === value)\n\t\t? $elm$core$Result$Ok(value)\n\t\t:\n\t(isFinite(value) && !(value % 1))\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('an INT', value);\n});\n\nvar _Json_decodeBool = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'boolean')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('a BOOL', value);\n});\n\nvar _Json_decodeFloat = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'number')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: _Json_expecting('a FLOAT', value);\n});\n\nvar _Json_decodeValue = _Json_decodePrim(function(value) {\n\treturn $elm$core$Result$Ok(_Json_wrap(value));\n});\n\nvar _Json_decodeString = _Json_decodePrim(function(value) {\n\treturn (typeof value === 'string')\n\t\t? $elm$core$Result$Ok(value)\n\t\t: (value instanceof String)\n\t\t\t? $elm$core$Result$Ok(value + '')\n\t\t\t: _Json_expecting('a STRING', value);\n});\n\nfunction _Json_decodeList(decoder) { return { $: 3, b: decoder }; }\nfunction _Json_decodeArray(decoder) { return { $: 4, b: decoder }; }\n\nfunction _Json_decodeNull(value) { return { $: 5, c: value }; }\n\nvar _Json_decodeField = F2(function(field, decoder)\n{\n\treturn {\n\t\t$: 6,\n\t\td: field,\n\t\tb: decoder\n\t};\n});\n\nvar _Json_decodeIndex = F2(function(index, decoder)\n{\n\treturn {\n\t\t$: 7,\n\t\te: index,\n\t\tb: decoder\n\t};\n});\n\nfunction _Json_decodeKeyValuePairs(decoder)\n{\n\treturn {\n\t\t$: 8,\n\t\tb: decoder\n\t};\n}\n\nfunction _Json_mapMany(f, decoders)\n{\n\treturn {\n\t\t$: 9,\n\t\tf: f,\n\t\tg: decoders\n\t};\n}\n\nvar _Json_andThen = F2(function(callback, decoder)\n{\n\treturn {\n\t\t$: 10,\n\t\tb: decoder,\n\t\th: callback\n\t};\n});\n\nfunction _Json_oneOf(decoders)\n{\n\treturn {\n\t\t$: 11,\n\t\tg: decoders\n\t};\n}\n\n\n// DECODING OBJECTS\n\nvar _Json_map1 = F2(function(f, d1)\n{\n\treturn _Json_mapMany(f, [d1]);\n});\n\nvar _Json_map2 = F3(function(f, d1, d2)\n{\n\treturn _Json_mapMany(f, [d1, d2]);\n});\n\nvar _Json_map3 = F4(function(f, d1, d2, d3)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3]);\n});\n\nvar _Json_map4 = F5(function(f, d1, d2, d3, d4)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4]);\n});\n\nvar _Json_map5 = F6(function(f, d1, d2, d3, d4, d5)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5]);\n});\n\nvar _Json_map6 = F7(function(f, d1, d2, d3, d4, d5, d6)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6]);\n});\n\nvar _Json_map7 = F8(function(f, d1, d2, d3, d4, d5, d6, d7)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7]);\n});\n\nvar _Json_map8 = F9(function(f, d1, d2, d3, d4, d5, d6, d7, d8)\n{\n\treturn _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7, d8]);\n});\n\n\n// DECODE\n\nvar _Json_runOnString = F2(function(decoder, string)\n{\n\ttry\n\t{\n\t\tvar value = JSON.parse(string);\n\t\treturn _Json_runHelp(decoder, value);\n\t}\n\tcatch (e)\n\t{\n\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'This is not valid JSON! ' + e.message, _Json_wrap(string)));\n\t}\n});\n\nvar _Json_run = F2(function(decoder, value)\n{\n\treturn _Json_runHelp(decoder, _Json_unwrap(value));\n});\n\nfunction _Json_runHelp(decoder, value)\n{\n\tswitch (decoder.$)\n\t{\n\t\tcase 2:\n\t\t\treturn decoder.b(value);\n\n\t\tcase 5:\n\t\t\treturn (value === null)\n\t\t\t\t? $elm$core$Result$Ok(decoder.c)\n\t\t\t\t: _Json_expecting('null', value);\n\n\t\tcase 3:\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('a LIST', value);\n\t\t\t}\n\t\t\treturn _Json_runArrayDecoder(decoder.b, value, _List_fromArray);\n\n\t\tcase 4:\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an ARRAY', value);\n\t\t\t}\n\t\t\treturn _Json_runArrayDecoder(decoder.b, value, _Json_toElmArray);\n\n\t\tcase 6:\n\t\t\tvar field = decoder.d;\n\t\t\tif (typeof value !== 'object' || value === null || !(field in value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an OBJECT with a field named `' + field + '`', value);\n\t\t\t}\n\t\t\tvar result = _Json_runHelp(decoder.b, value[field]);\n\t\t\treturn ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, field, result.a));\n\n\t\tcase 7:\n\t\t\tvar index = decoder.e;\n\t\t\tif (!_Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an ARRAY', value);\n\t\t\t}\n\t\t\tif (index >= value.length)\n\t\t\t{\n\t\t\t\treturn _Json_expecting('a LONGER array. Need index ' + index + ' but only see ' + value.length + ' entries', value);\n\t\t\t}\n\t\t\tvar result = _Json_runHelp(decoder.b, value[index]);\n\t\t\treturn ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, index, result.a));\n\n\t\tcase 8:\n\t\t\tif (typeof value !== 'object' || value === null || _Json_isArray(value))\n\t\t\t{\n\t\t\t\treturn _Json_expecting('an OBJECT', value);\n\t\t\t}\n\n\t\t\tvar keyValuePairs = _List_Nil;\n\t\t\t// TODO test perf of Object.keys and switch when support is good enough\n\t\t\tfor (var key in value)\n\t\t\t{\n\t\t\t\tif (value.hasOwnProperty(key))\n\t\t\t\t{\n\t\t\t\t\tvar result = _Json_runHelp(decoder.b, value[key]);\n\t\t\t\t\tif (!$elm$core$Result$isOk(result))\n\t\t\t\t\t{\n\t\t\t\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, key, result.a));\n\t\t\t\t\t}\n\t\t\t\t\tkeyValuePairs = _List_Cons(_Utils_Tuple2(key, result.a), keyValuePairs);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn $elm$core$Result$Ok($elm$core$List$reverse(keyValuePairs));\n\n\t\tcase 9:\n\t\t\tvar answer = decoder.f;\n\t\t\tvar decoders = decoder.g;\n\t\t\tfor (var i = 0; i < decoders.length; i++)\n\t\t\t{\n\t\t\t\tvar result = _Json_runHelp(decoders[i], value);\n\t\t\t\tif (!$elm$core$Result$isOk(result))\n\t\t\t\t{\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tanswer = answer(result.a);\n\t\t\t}\n\t\t\treturn $elm$core$Result$Ok(answer);\n\n\t\tcase 10:\n\t\t\tvar result = _Json_runHelp(decoder.b, value);\n\t\t\treturn (!$elm$core$Result$isOk(result))\n\t\t\t\t? result\n\t\t\t\t: _Json_runHelp(decoder.h(result.a), value);\n\n\t\tcase 11:\n\t\t\tvar errors = _List_Nil;\n\t\t\tfor (var temp = decoder.g; temp.b; temp = temp.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\tvar result = _Json_runHelp(temp.a, value);\n\t\t\t\tif ($elm$core$Result$isOk(result))\n\t\t\t\t{\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\terrors = _List_Cons(result.a, errors);\n\t\t\t}\n\t\t\treturn $elm$core$Result$Err($elm$json$Json$Decode$OneOf($elm$core$List$reverse(errors)));\n\n\t\tcase 1:\n\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, decoder.a, _Json_wrap(value)));\n\n\t\tcase 0:\n\t\t\treturn $elm$core$Result$Ok(decoder.a);\n\t}\n}\n\nfunction _Json_runArrayDecoder(decoder, value, toElmValue)\n{\n\tvar len = value.length;\n\tvar array = new Array(len);\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tvar result = _Json_runHelp(decoder, value[i]);\n\t\tif (!$elm$core$Result$isOk(result))\n\t\t{\n\t\t\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, i, result.a));\n\t\t}\n\t\tarray[i] = result.a;\n\t}\n\treturn $elm$core$Result$Ok(toElmValue(array));\n}\n\nfunction _Json_isArray(value)\n{\n\treturn Array.isArray(value) || (typeof FileList !== 'undefined' && value instanceof FileList);\n}\n\nfunction _Json_toElmArray(array)\n{\n\treturn A2($elm$core$Array$initialize, array.length, function(i) { return array[i]; });\n}\n\nfunction _Json_expecting(type, value)\n{\n\treturn $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'Expecting ' + type, _Json_wrap(value)));\n}\n\n\n// EQUALITY\n\nfunction _Json_equality(x, y)\n{\n\tif (x === y)\n\t{\n\t\treturn true;\n\t}\n\n\tif (x.$ !== y.$)\n\t{\n\t\treturn false;\n\t}\n\n\tswitch (x.$)\n\t{\n\t\tcase 0:\n\t\tcase 1:\n\t\t\treturn x.a === y.a;\n\n\t\tcase 2:\n\t\t\treturn x.b === y.b;\n\n\t\tcase 5:\n\t\t\treturn x.c === y.c;\n\n\t\tcase 3:\n\t\tcase 4:\n\t\tcase 8:\n\t\t\treturn _Json_equality(x.b, y.b);\n\n\t\tcase 6:\n\t\t\treturn x.d === y.d && _Json_equality(x.b, y.b);\n\n\t\tcase 7:\n\t\t\treturn x.e === y.e && _Json_equality(x.b, y.b);\n\n\t\tcase 9:\n\t\t\treturn x.f === y.f && _Json_listEquality(x.g, y.g);\n\n\t\tcase 10:\n\t\t\treturn x.h === y.h && _Json_equality(x.b, y.b);\n\n\t\tcase 11:\n\t\t\treturn _Json_listEquality(x.g, y.g);\n\t}\n}\n\nfunction _Json_listEquality(aDecoders, bDecoders)\n{\n\tvar len = aDecoders.length;\n\tif (len !== bDecoders.length)\n\t{\n\t\treturn false;\n\t}\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tif (!_Json_equality(aDecoders[i], bDecoders[i]))\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// ENCODE\n\nvar _Json_encode = F2(function(indentLevel, value)\n{\n\treturn JSON.stringify(_Json_unwrap(value), null, indentLevel) + '';\n});\n\nfunction _Json_wrap_UNUSED(value) { return { $: 0, a: value }; }\nfunction _Json_unwrap_UNUSED(value) { return value.a; }\n\nfunction _Json_wrap(value) { return value; }\nfunction _Json_unwrap(value) { return value; }\n\nfunction _Json_emptyArray() { return []; }\nfunction _Json_emptyObject() { return {}; }\n\nvar _Json_addField = F3(function(key, value, object)\n{\n\tobject[key] = _Json_unwrap(value);\n\treturn object;\n});\n\nfunction _Json_addEntry(func)\n{\n\treturn F2(function(entry, array)\n\t{\n\t\tarray.push(_Json_unwrap(func(entry)));\n\t\treturn array;\n\t});\n}\n\nvar _Json_encodeNull = _Json_wrap(null);\n\n\n\n// TASKS\n\nfunction _Scheduler_succeed(value)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: value\n\t};\n}\n\nfunction _Scheduler_fail(error)\n{\n\treturn {\n\t\t$: 1,\n\t\ta: error\n\t};\n}\n\nfunction _Scheduler_binding(callback)\n{\n\treturn {\n\t\t$: 2,\n\t\tb: callback,\n\t\tc: null\n\t};\n}\n\nvar _Scheduler_andThen = F2(function(callback, task)\n{\n\treturn {\n\t\t$: 3,\n\t\tb: callback,\n\t\td: task\n\t};\n});\n\nvar _Scheduler_onError = F2(function(callback, task)\n{\n\treturn {\n\t\t$: 4,\n\t\tb: callback,\n\t\td: task\n\t};\n});\n\nfunction _Scheduler_receive(callback)\n{\n\treturn {\n\t\t$: 5,\n\t\tb: callback\n\t};\n}\n\n\n// PROCESSES\n\nvar _Scheduler_guid = 0;\n\nfunction _Scheduler_rawSpawn(task)\n{\n\tvar proc = {\n\t\t$: 0,\n\t\te: _Scheduler_guid++,\n\t\tf: task,\n\t\tg: null,\n\t\th: []\n\t};\n\n\t_Scheduler_enqueue(proc);\n\n\treturn proc;\n}\n\nfunction _Scheduler_spawn(task)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tcallback(_Scheduler_succeed(_Scheduler_rawSpawn(task)));\n\t});\n}\n\nfunction _Scheduler_rawSend(proc, msg)\n{\n\tproc.h.push(msg);\n\t_Scheduler_enqueue(proc);\n}\n\nvar _Scheduler_send = F2(function(proc, msg)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\t_Scheduler_rawSend(proc, msg);\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n});\n\nfunction _Scheduler_kill(proc)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tvar task = proc.f;\n\t\tif (task.$ === 2 && task.c)\n\t\t{\n\t\t\ttask.c();\n\t\t}\n\n\t\tproc.f = null;\n\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n}\n\n\n/* STEP PROCESSES\n\ntype alias Process =\n { $ : tag\n , id : unique_id\n , root : Task\n , stack : null | { $: SUCCEED | FAIL, a: callback, b: stack }\n , mailbox : [msg]\n }\n\n*/\n\n\nvar _Scheduler_working = false;\nvar _Scheduler_queue = [];\n\n\nfunction _Scheduler_enqueue(proc)\n{\n\t_Scheduler_queue.push(proc);\n\tif (_Scheduler_working)\n\t{\n\t\treturn;\n\t}\n\t_Scheduler_working = true;\n\twhile (proc = _Scheduler_queue.shift())\n\t{\n\t\t_Scheduler_step(proc);\n\t}\n\t_Scheduler_working = false;\n}\n\n\nfunction _Scheduler_step(proc)\n{\n\twhile (proc.f)\n\t{\n\t\tvar rootTag = proc.f.$;\n\t\tif (rootTag === 0 || rootTag === 1)\n\t\t{\n\t\t\twhile (proc.g && proc.g.$ !== rootTag)\n\t\t\t{\n\t\t\t\tproc.g = proc.g.i;\n\t\t\t}\n\t\t\tif (!proc.g)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tproc.f = proc.g.b(proc.f.a);\n\t\t\tproc.g = proc.g.i;\n\t\t}\n\t\telse if (rootTag === 2)\n\t\t{\n\t\t\tproc.f.c = proc.f.b(function(newRoot) {\n\t\t\t\tproc.f = newRoot;\n\t\t\t\t_Scheduler_enqueue(proc);\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\telse if (rootTag === 5)\n\t\t{\n\t\t\tif (proc.h.length === 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tproc.f = proc.f.b(proc.h.shift());\n\t\t}\n\t\telse // if (rootTag === 3 || rootTag === 4)\n\t\t{\n\t\t\tproc.g = {\n\t\t\t\t$: rootTag === 3 ? 0 : 1,\n\t\t\t\tb: proc.f.b,\n\t\t\t\ti: proc.g\n\t\t\t};\n\t\t\tproc.f = proc.f.d;\n\t\t}\n\t}\n}\n\n\n\nfunction _Process_sleep(time)\n{\n\treturn _Scheduler_binding(function(callback) {\n\t\tvar id = setTimeout(function() {\n\t\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t\t}, time);\n\n\t\treturn function() { clearTimeout(id); };\n\t});\n}\n\n\n\n\n// PROGRAMS\n\n\nvar _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.fb,\n\t\timpl.fZ,\n\t\timpl.fN,\n\t\tfunction() { return function() {} }\n\t);\n});\n\n\n\n// INITIALIZE A PROGRAM\n\n\nfunction _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)\n{\n\tvar result = A2(_Json_run, flagDecoder, _Json_wrap(args ? args['flags'] : undefined));\n\t$elm$core$Result$isOk(result) || _Debug_crash(2 /**_UNUSED/, _Json_errorToString(result.a) /**/);\n\tvar managers = {};\n\tvar initPair = init(result.a);\n\tvar model = initPair.a;\n\tvar stepper = stepperBuilder(sendToApp, model);\n\tvar ports = _Platform_setupEffects(managers, sendToApp);\n\n\tfunction sendToApp(msg, viewMetadata)\n\t{\n\t\tvar pair = A2(update, msg, model);\n\t\tstepper(model = pair.a, viewMetadata);\n\t\t_Platform_enqueueEffects(managers, pair.b, subscriptions(model));\n\t}\n\n\t_Platform_enqueueEffects(managers, initPair.b, subscriptions(model));\n\n\treturn ports ? { ports: ports } : {};\n}\n\n\n\n// TRACK PRELOADS\n//\n// This is used by code in elm/browser and elm/http\n// to register any HTTP requests that are triggered by init.\n//\n\n\nvar _Platform_preload;\n\n\nfunction _Platform_registerPreload(url)\n{\n\t_Platform_preload.add(url);\n}\n\n\n\n// EFFECT MANAGERS\n\n\nvar _Platform_effectManagers = {};\n\n\nfunction _Platform_setupEffects(managers, sendToApp)\n{\n\tvar ports;\n\n\t// setup all necessary effect managers\n\tfor (var key in _Platform_effectManagers)\n\t{\n\t\tvar manager = _Platform_effectManagers[key];\n\n\t\tif (manager.a)\n\t\t{\n\t\t\tports = ports || {};\n\t\t\tports[key] = manager.a(key, sendToApp);\n\t\t}\n\n\t\tmanagers[key] = _Platform_instantiateManager(manager, sendToApp);\n\t}\n\n\treturn ports;\n}\n\n\nfunction _Platform_createManager(init, onEffects, onSelfMsg, cmdMap, subMap)\n{\n\treturn {\n\t\tb: init,\n\t\tc: onEffects,\n\t\td: onSelfMsg,\n\t\te: cmdMap,\n\t\tf: subMap\n\t};\n}\n\n\nfunction _Platform_instantiateManager(info, sendToApp)\n{\n\tvar router = {\n\t\tg: sendToApp,\n\t\th: undefined\n\t};\n\n\tvar onEffects = info.c;\n\tvar onSelfMsg = info.d;\n\tvar cmdMap = info.e;\n\tvar subMap = info.f;\n\n\tfunction loop(state)\n\t{\n\t\treturn A2(_Scheduler_andThen, loop, _Scheduler_receive(function(msg)\n\t\t{\n\t\t\tvar value = msg.a;\n\n\t\t\tif (msg.$ === 0)\n\t\t\t{\n\t\t\t\treturn A3(onSelfMsg, router, value, state);\n\t\t\t}\n\n\t\t\treturn cmdMap && subMap\n\t\t\t\t? A4(onEffects, router, value.i, value.j, state)\n\t\t\t\t: A3(onEffects, router, cmdMap ? value.i : value.j, state);\n\t\t}));\n\t}\n\n\treturn router.h = _Scheduler_rawSpawn(A2(_Scheduler_andThen, loop, info.b));\n}\n\n\n\n// ROUTING\n\n\nvar _Platform_sendToApp = F2(function(router, msg)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\trouter.g(msg);\n\t\tcallback(_Scheduler_succeed(_Utils_Tuple0));\n\t});\n});\n\n\nvar _Platform_sendToSelf = F2(function(router, msg)\n{\n\treturn A2(_Scheduler_send, router.h, {\n\t\t$: 0,\n\t\ta: msg\n\t});\n});\n\n\n\n// BAGS\n\n\nfunction _Platform_leaf(home)\n{\n\treturn function(value)\n\t{\n\t\treturn {\n\t\t\t$: 1,\n\t\t\tk: home,\n\t\t\tl: value\n\t\t};\n\t};\n}\n\n\nfunction _Platform_batch(list)\n{\n\treturn {\n\t\t$: 2,\n\t\tm: list\n\t};\n}\n\n\nvar _Platform_map = F2(function(tagger, bag)\n{\n\treturn {\n\t\t$: 3,\n\t\tn: tagger,\n\t\to: bag\n\t}\n});\n\n\n\n// PIPE BAGS INTO EFFECT MANAGERS\n//\n// Effects must be queued!\n//\n// Say your init contains a synchronous command, like Time.now or Time.here\n//\n// - This will produce a batch of effects (FX_1)\n// - The synchronous task triggers the subsequent `update` call\n// - This will produce a batch of effects (FX_2)\n//\n// If we just start dispatching FX_2, subscriptions from FX_2 can be processed\n// before subscriptions from FX_1. No good! Earlier versions of this code had\n// this problem, leading to these reports:\n//\n// https://github.com/elm/core/issues/980\n// https://github.com/elm/core/pull/981\n// https://github.com/elm/compiler/issues/1776\n//\n// The queue is necessary to avoid ordering issues for synchronous commands.\n\n\n// Why use true/false here? Why not just check the length of the queue?\n// The goal is to detect \"are we currently dispatching effects?\" If we\n// are, we need to bail and let the ongoing while loop handle things.\n//\n// Now say the queue has 1 element. When we dequeue the final element,\n// the queue will be empty, but we are still actively dispatching effects.\n// So you could get queue jumping in a really tricky category of cases.\n//\nvar _Platform_effectsQueue = [];\nvar _Platform_effectsActive = false;\n\n\nfunction _Platform_enqueueEffects(managers, cmdBag, subBag)\n{\n\t_Platform_effectsQueue.push({ p: managers, q: cmdBag, r: subBag });\n\n\tif (_Platform_effectsActive) return;\n\n\t_Platform_effectsActive = true;\n\tfor (var fx; fx = _Platform_effectsQueue.shift(); )\n\t{\n\t\t_Platform_dispatchEffects(fx.p, fx.q, fx.r);\n\t}\n\t_Platform_effectsActive = false;\n}\n\n\nfunction _Platform_dispatchEffects(managers, cmdBag, subBag)\n{\n\tvar effectsDict = {};\n\t_Platform_gatherEffects(true, cmdBag, effectsDict, null);\n\t_Platform_gatherEffects(false, subBag, effectsDict, null);\n\n\tfor (var home in managers)\n\t{\n\t\t_Scheduler_rawSend(managers[home], {\n\t\t\t$: 'fx',\n\t\t\ta: effectsDict[home] || { i: _List_Nil, j: _List_Nil }\n\t\t});\n\t}\n}\n\n\nfunction _Platform_gatherEffects(isCmd, bag, effectsDict, taggers)\n{\n\tswitch (bag.$)\n\t{\n\t\tcase 1:\n\t\t\tvar home = bag.k;\n\t\t\tvar effect = _Platform_toEffect(isCmd, home, taggers, bag.l);\n\t\t\teffectsDict[home] = _Platform_insert(isCmd, effect, effectsDict[home]);\n\t\t\treturn;\n\n\t\tcase 2:\n\t\t\tfor (var list = bag.m; list.b; list = list.b) // WHILE_CONS\n\t\t\t{\n\t\t\t\t_Platform_gatherEffects(isCmd, list.a, effectsDict, taggers);\n\t\t\t}\n\t\t\treturn;\n\n\t\tcase 3:\n\t\t\t_Platform_gatherEffects(isCmd, bag.o, effectsDict, {\n\t\t\t\ts: bag.n,\n\t\t\t\tt: taggers\n\t\t\t});\n\t\t\treturn;\n\t}\n}\n\n\nfunction _Platform_toEffect(isCmd, home, taggers, value)\n{\n\tfunction applyTaggers(x)\n\t{\n\t\tfor (var temp = taggers; temp; temp = temp.t)\n\t\t{\n\t\t\tx = temp.s(x);\n\t\t}\n\t\treturn x;\n\t}\n\n\tvar map = isCmd\n\t\t? _Platform_effectManagers[home].e\n\t\t: _Platform_effectManagers[home].f;\n\n\treturn A2(map, applyTaggers, value)\n}\n\n\nfunction _Platform_insert(isCmd, newEffect, effects)\n{\n\teffects = effects || { i: _List_Nil, j: _List_Nil };\n\n\tisCmd\n\t\t? (effects.i = _List_Cons(newEffect, effects.i))\n\t\t: (effects.j = _List_Cons(newEffect, effects.j));\n\n\treturn effects;\n}\n\n\n\n// PORTS\n\n\nfunction _Platform_checkPortName(name)\n{\n\tif (_Platform_effectManagers[name])\n\t{\n\t\t_Debug_crash(3, name)\n\t}\n}\n\n\n\n// OUTGOING PORTS\n\n\nfunction _Platform_outgoingPort(name, converter)\n{\n\t_Platform_checkPortName(name);\n\t_Platform_effectManagers[name] = {\n\t\te: _Platform_outgoingPortMap,\n\t\tu: converter,\n\t\ta: _Platform_setupOutgoingPort\n\t};\n\treturn _Platform_leaf(name);\n}\n\n\nvar _Platform_outgoingPortMap = F2(function(tagger, value) { return value; });\n\n\nfunction _Platform_setupOutgoingPort(name)\n{\n\tvar subs = [];\n\tvar converter = _Platform_effectManagers[name].u;\n\n\t// CREATE MANAGER\n\n\tvar init = _Process_sleep(0);\n\n\t_Platform_effectManagers[name].b = init;\n\t_Platform_effectManagers[name].c = F3(function(router, cmdList, state)\n\t{\n\t\tfor ( ; cmdList.b; cmdList = cmdList.b) // WHILE_CONS\n\t\t{\n\t\t\t// grab a separate reference to subs in case unsubscribe is called\n\t\t\tvar currentSubs = subs;\n\t\t\tvar value = _Json_unwrap(converter(cmdList.a));\n\t\t\tfor (var i = 0; i < currentSubs.length; i++)\n\t\t\t{\n\t\t\t\tcurrentSubs[i](value);\n\t\t\t}\n\t\t}\n\t\treturn init;\n\t});\n\n\t// PUBLIC API\n\n\tfunction subscribe(callback)\n\t{\n\t\tsubs.push(callback);\n\t}\n\n\tfunction unsubscribe(callback)\n\t{\n\t\t// copy subs into a new array in case unsubscribe is called within a\n\t\t// subscribed callback\n\t\tsubs = subs.slice();\n\t\tvar index = subs.indexOf(callback);\n\t\tif (index >= 0)\n\t\t{\n\t\t\tsubs.splice(index, 1);\n\t\t}\n\t}\n\n\treturn {\n\t\tsubscribe: subscribe,\n\t\tunsubscribe: unsubscribe\n\t};\n}\n\n\n\n// INCOMING PORTS\n\n\nfunction _Platform_incomingPort(name, converter)\n{\n\t_Platform_checkPortName(name);\n\t_Platform_effectManagers[name] = {\n\t\tf: _Platform_incomingPortMap,\n\t\tu: converter,\n\t\ta: _Platform_setupIncomingPort\n\t};\n\treturn _Platform_leaf(name);\n}\n\n\nvar _Platform_incomingPortMap = F2(function(tagger, finalTagger)\n{\n\treturn function(value)\n\t{\n\t\treturn tagger(finalTagger(value));\n\t};\n});\n\n\nfunction _Platform_setupIncomingPort(name, sendToApp)\n{\n\tvar subs = _List_Nil;\n\tvar converter = _Platform_effectManagers[name].u;\n\n\t// CREATE MANAGER\n\n\tvar init = _Scheduler_succeed(null);\n\n\t_Platform_effectManagers[name].b = init;\n\t_Platform_effectManagers[name].c = F3(function(router, subList, state)\n\t{\n\t\tsubs = subList;\n\t\treturn init;\n\t});\n\n\t// PUBLIC API\n\n\tfunction send(incomingValue)\n\t{\n\t\tvar result = A2(_Json_run, converter, _Json_wrap(incomingValue));\n\n\t\t$elm$core$Result$isOk(result) || _Debug_crash(4, name, result.a);\n\n\t\tvar value = result.a;\n\t\tfor (var temp = subs; temp.b; temp = temp.b) // WHILE_CONS\n\t\t{\n\t\t\tsendToApp(temp.a(value));\n\t\t}\n\t}\n\n\treturn { send: send };\n}\n\n\n\n// EXPORT ELM MODULES\n//\n// Have DEBUG and PROD versions so that we can (1) give nicer errors in\n// debug mode and (2) not pay for the bits needed for that in prod mode.\n//\n\n\nfunction _Platform_export(exports)\n{\n\tscope['Elm']\n\t\t? _Platform_mergeExportsProd(scope['Elm'], exports)\n\t\t: scope['Elm'] = exports;\n}\n\n\nfunction _Platform_mergeExportsProd(obj, exports)\n{\n\tfor (var name in exports)\n\t{\n\t\t(name in obj)\n\t\t\t? (name == 'init')\n\t\t\t\t? _Debug_crash(6)\n\t\t\t\t: _Platform_mergeExportsProd(obj[name], exports[name])\n\t\t\t: (obj[name] = exports[name]);\n\t}\n}\n\n\nfunction _Platform_export_UNUSED(exports)\n{\n\tscope['Elm']\n\t\t? _Platform_mergeExportsDebug('Elm', scope['Elm'], exports)\n\t\t: scope['Elm'] = exports;\n}\n\n\nfunction _Platform_mergeExportsDebug(moduleName, obj, exports)\n{\n\tfor (var name in exports)\n\t{\n\t\t(name in obj)\n\t\t\t? (name == 'init')\n\t\t\t\t? _Debug_crash(6, moduleName)\n\t\t\t\t: _Platform_mergeExportsDebug(moduleName + '.' + name, obj[name], exports[name])\n\t\t\t: (obj[name] = exports[name]);\n\t}\n}\n\n\n\n\n// HELPERS\n\n\nvar _VirtualDom_divertHrefToApp;\n\nvar _VirtualDom_doc = typeof document !== 'undefined' ? document : {};\n\n\nfunction _VirtualDom_appendChild(parent, child)\n{\n\tparent.appendChild(child);\n}\n\nvar _VirtualDom_init = F4(function(virtualNode, flagDecoder, debugMetadata, args)\n{\n\t// NOTE: this function needs _Platform_export available to work\n\n\t/**/\n\tvar node = args['node'];\n\t//*/\n\t/**_UNUSED/\n\tvar node = args && args['node'] ? args['node'] : _Debug_crash(0);\n\t//*/\n\n\tnode.parentNode.replaceChild(\n\t\t_VirtualDom_render(virtualNode, function() {}),\n\t\tnode\n\t);\n\n\treturn {};\n});\n\n\n\n// TEXT\n\n\nfunction _VirtualDom_text(string)\n{\n\treturn {\n\t\t$: 0,\n\t\ta: string\n\t};\n}\n\n\n\n// NODE\n\n\nvar _VirtualDom_nodeNS = F2(function(namespace, tag)\n{\n\treturn F2(function(factList, kidList)\n\t{\n\t\tfor (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS\n\t\t{\n\t\t\tvar kid = kidList.a;\n\t\t\tdescendantsCount += (kid.b || 0);\n\t\t\tkids.push(kid);\n\t\t}\n\t\tdescendantsCount += kids.length;\n\n\t\treturn {\n\t\t\t$: 1,\n\t\t\tc: tag,\n\t\t\td: _VirtualDom_organizeFacts(factList),\n\t\t\te: kids,\n\t\t\tf: namespace,\n\t\t\tb: descendantsCount\n\t\t};\n\t});\n});\n\n\nvar _VirtualDom_node = _VirtualDom_nodeNS(undefined);\n\n\n\n// KEYED NODE\n\n\nvar _VirtualDom_keyedNodeNS = F2(function(namespace, tag)\n{\n\treturn F2(function(factList, kidList)\n\t{\n\t\tfor (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS\n\t\t{\n\t\t\tvar kid = kidList.a;\n\t\t\tdescendantsCount += (kid.b.b || 0);\n\t\t\tkids.push(kid);\n\t\t}\n\t\tdescendantsCount += kids.length;\n\n\t\treturn {\n\t\t\t$: 2,\n\t\t\tc: tag,\n\t\t\td: _VirtualDom_organizeFacts(factList),\n\t\t\te: kids,\n\t\t\tf: namespace,\n\t\t\tb: descendantsCount\n\t\t};\n\t});\n});\n\n\nvar _VirtualDom_keyedNode = _VirtualDom_keyedNodeNS(undefined);\n\n\n\n// CUSTOM\n\n\nfunction _VirtualDom_custom(factList, model, render, diff)\n{\n\treturn {\n\t\t$: 3,\n\t\td: _VirtualDom_organizeFacts(factList),\n\t\tg: model,\n\t\th: render,\n\t\ti: diff\n\t};\n}\n\n\n\n// MAP\n\n\nvar _VirtualDom_map = F2(function(tagger, node)\n{\n\treturn {\n\t\t$: 4,\n\t\tj: tagger,\n\t\tk: node,\n\t\tb: 1 + (node.b || 0)\n\t};\n});\n\n\n\n// LAZY\n\n\nfunction _VirtualDom_thunk(refs, thunk)\n{\n\treturn {\n\t\t$: 5,\n\t\tl: refs,\n\t\tm: thunk,\n\t\tk: undefined\n\t};\n}\n\nvar _VirtualDom_lazy = F2(function(func, a)\n{\n\treturn _VirtualDom_thunk([func, a], function() {\n\t\treturn func(a);\n\t});\n});\n\nvar _VirtualDom_lazy2 = F3(function(func, a, b)\n{\n\treturn _VirtualDom_thunk([func, a, b], function() {\n\t\treturn A2(func, a, b);\n\t});\n});\n\nvar _VirtualDom_lazy3 = F4(function(func, a, b, c)\n{\n\treturn _VirtualDom_thunk([func, a, b, c], function() {\n\t\treturn A3(func, a, b, c);\n\t});\n});\n\nvar _VirtualDom_lazy4 = F5(function(func, a, b, c, d)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d], function() {\n\t\treturn A4(func, a, b, c, d);\n\t});\n});\n\nvar _VirtualDom_lazy5 = F6(function(func, a, b, c, d, e)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e], function() {\n\t\treturn A5(func, a, b, c, d, e);\n\t});\n});\n\nvar _VirtualDom_lazy6 = F7(function(func, a, b, c, d, e, f)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f], function() {\n\t\treturn A6(func, a, b, c, d, e, f);\n\t});\n});\n\nvar _VirtualDom_lazy7 = F8(function(func, a, b, c, d, e, f, g)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f, g], function() {\n\t\treturn A7(func, a, b, c, d, e, f, g);\n\t});\n});\n\nvar _VirtualDom_lazy8 = F9(function(func, a, b, c, d, e, f, g, h)\n{\n\treturn _VirtualDom_thunk([func, a, b, c, d, e, f, g, h], function() {\n\t\treturn A8(func, a, b, c, d, e, f, g, h);\n\t});\n});\n\n\n\n// FACTS\n\n\nvar _VirtualDom_on = F2(function(key, handler)\n{\n\treturn {\n\t\t$: 'a0',\n\t\tn: key,\n\t\to: handler\n\t};\n});\nvar _VirtualDom_style = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a1',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_property = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a2',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_attribute = F2(function(key, value)\n{\n\treturn {\n\t\t$: 'a3',\n\t\tn: key,\n\t\to: value\n\t};\n});\nvar _VirtualDom_attributeNS = F3(function(namespace, key, value)\n{\n\treturn {\n\t\t$: 'a4',\n\t\tn: key,\n\t\to: { f: namespace, o: value }\n\t};\n});\n\n\n\n// XSS ATTACK VECTOR CHECKS\n\n\nfunction _VirtualDom_noScript(tag)\n{\n\treturn tag == 'script' ? 'p' : tag;\n}\n\nfunction _VirtualDom_noOnOrFormAction(key)\n{\n\treturn /^(on|formAction$)/i.test(key) ? 'data-' + key : key;\n}\n\nfunction _VirtualDom_noInnerHtmlOrFormAction(key)\n{\n\treturn key == 'innerHTML' || key == 'formAction' ? 'data-' + key : key;\n}\n\nfunction _VirtualDom_noJavaScriptUri(value)\n{\n\treturn /^javascript:/i.test(value.replace(/\\s/g,'')) ? '' : value;\n}\n\nfunction _VirtualDom_noJavaScriptUri_UNUSED(value)\n{\n\treturn /^javascript:/i.test(value.replace(/\\s/g,''))\n\t\t? 'javascript:alert(\"This is an XSS vector. Please use ports or web components instead.\")'\n\t\t: value;\n}\n\nfunction _VirtualDom_noJavaScriptOrHtmlUri(value)\n{\n\treturn /^\\s*(javascript:|data:text\\/html)/i.test(value) ? '' : value;\n}\n\nfunction _VirtualDom_noJavaScriptOrHtmlUri_UNUSED(value)\n{\n\treturn /^\\s*(javascript:|data:text\\/html)/i.test(value)\n\t\t? 'javascript:alert(\"This is an XSS vector. Please use ports or web components instead.\")'\n\t\t: value;\n}\n\n\n\n// MAP FACTS\n\n\nvar _VirtualDom_mapAttribute = F2(function(func, attr)\n{\n\treturn (attr.$ === 'a0')\n\t\t? A2(_VirtualDom_on, attr.n, _VirtualDom_mapHandler(func, attr.o))\n\t\t: attr;\n});\n\nfunction _VirtualDom_mapHandler(func, handler)\n{\n\tvar tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler);\n\n\t// 0 = Normal\n\t// 1 = MayStopPropagation\n\t// 2 = MayPreventDefault\n\t// 3 = Custom\n\n\treturn {\n\t\t$: handler.$,\n\t\ta:\n\t\t\t!tag\n\t\t\t\t? A2($elm$json$Json$Decode$map, func, handler.a)\n\t\t\t\t:\n\t\t\tA3($elm$json$Json$Decode$map2,\n\t\t\t\ttag < 3\n\t\t\t\t\t? _VirtualDom_mapEventTuple\n\t\t\t\t\t: _VirtualDom_mapEventRecord,\n\t\t\t\t$elm$json$Json$Decode$succeed(func),\n\t\t\t\thandler.a\n\t\t\t)\n\t};\n}\n\nvar _VirtualDom_mapEventTuple = F2(function(func, tuple)\n{\n\treturn _Utils_Tuple2(func(tuple.a), tuple.b);\n});\n\nvar _VirtualDom_mapEventRecord = F2(function(func, record)\n{\n\treturn {\n\t\tah: func(record.ah),\n\t\tc4: record.c4,\n\t\tcQ: record.cQ\n\t}\n});\n\n\n\n// ORGANIZE FACTS\n\n\nfunction _VirtualDom_organizeFacts(factList)\n{\n\tfor (var facts = {}; factList.b; factList = factList.b) // WHILE_CONS\n\t{\n\t\tvar entry = factList.a;\n\n\t\tvar tag = entry.$;\n\t\tvar key = entry.n;\n\t\tvar value = entry.o;\n\n\t\tif (tag === 'a2')\n\t\t{\n\t\t\t(key === 'className')\n\t\t\t\t? _VirtualDom_addClass(facts, key, _Json_unwrap(value))\n\t\t\t\t: facts[key] = _Json_unwrap(value);\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar subFacts = facts[tag] || (facts[tag] = {});\n\t\t(tag === 'a3' && key === 'class')\n\t\t\t? _VirtualDom_addClass(subFacts, key, value)\n\t\t\t: subFacts[key] = value;\n\t}\n\n\treturn facts;\n}\n\nfunction _VirtualDom_addClass(object, key, newClass)\n{\n\tvar classes = object[key];\n\tobject[key] = classes ? classes + ' ' + newClass : newClass;\n}\n\n\n\n// RENDER\n\n\nfunction _VirtualDom_render(vNode, eventNode)\n{\n\tvar tag = vNode.$;\n\n\tif (tag === 5)\n\t{\n\t\treturn _VirtualDom_render(vNode.k || (vNode.k = vNode.m()), eventNode);\n\t}\n\n\tif (tag === 0)\n\t{\n\t\treturn _VirtualDom_doc.createTextNode(vNode.a);\n\t}\n\n\tif (tag === 4)\n\t{\n\t\tvar subNode = vNode.k;\n\t\tvar tagger = vNode.j;\n\n\t\twhile (subNode.$ === 4)\n\t\t{\n\t\t\ttypeof tagger !== 'object'\n\t\t\t\t? tagger = [tagger, subNode.j]\n\t\t\t\t: tagger.push(subNode.j);\n\n\t\t\tsubNode = subNode.k;\n\t\t}\n\n\t\tvar subEventRoot = { j: tagger, p: eventNode };\n\t\tvar domNode = _VirtualDom_render(subNode, subEventRoot);\n\t\tdomNode.elm_event_node_ref = subEventRoot;\n\t\treturn domNode;\n\t}\n\n\tif (tag === 3)\n\t{\n\t\tvar domNode = vNode.h(vNode.g);\n\t\t_VirtualDom_applyFacts(domNode, eventNode, vNode.d);\n\t\treturn domNode;\n\t}\n\n\t// at this point `tag` must be 1 or 2\n\n\tvar domNode = vNode.f\n\t\t? _VirtualDom_doc.createElementNS(vNode.f, vNode.c)\n\t\t: _VirtualDom_doc.createElement(vNode.c);\n\n\tif (_VirtualDom_divertHrefToApp && vNode.c == 'a')\n\t{\n\t\tdomNode.addEventListener('click', _VirtualDom_divertHrefToApp(domNode));\n\t}\n\n\t_VirtualDom_applyFacts(domNode, eventNode, vNode.d);\n\n\tfor (var kids = vNode.e, i = 0; i < kids.length; i++)\n\t{\n\t\t_VirtualDom_appendChild(domNode, _VirtualDom_render(tag === 1 ? kids[i] : kids[i].b, eventNode));\n\t}\n\n\treturn domNode;\n}\n\n\n\n// APPLY FACTS\n\n\nfunction _VirtualDom_applyFacts(domNode, eventNode, facts)\n{\n\tfor (var key in facts)\n\t{\n\t\tvar value = facts[key];\n\n\t\tkey === 'a1'\n\t\t\t? _VirtualDom_applyStyles(domNode, value)\n\t\t\t:\n\t\tkey === 'a0'\n\t\t\t? _VirtualDom_applyEvents(domNode, eventNode, value)\n\t\t\t:\n\t\tkey === 'a3'\n\t\t\t? _VirtualDom_applyAttrs(domNode, value)\n\t\t\t:\n\t\tkey === 'a4'\n\t\t\t? _VirtualDom_applyAttrsNS(domNode, value)\n\t\t\t:\n\t\t((key !== 'value' && key !== 'checked') || domNode[key] !== value) && (domNode[key] = value);\n\t}\n}\n\n\n\n// APPLY STYLES\n\n\nfunction _VirtualDom_applyStyles(domNode, styles)\n{\n\tvar domNodeStyle = domNode.style;\n\n\tfor (var key in styles)\n\t{\n\t\tdomNodeStyle[key] = styles[key];\n\t}\n}\n\n\n\n// APPLY ATTRS\n\n\nfunction _VirtualDom_applyAttrs(domNode, attrs)\n{\n\tfor (var key in attrs)\n\t{\n\t\tvar value = attrs[key];\n\t\ttypeof value !== 'undefined'\n\t\t\t? domNode.setAttribute(key, value)\n\t\t\t: domNode.removeAttribute(key);\n\t}\n}\n\n\n\n// APPLY NAMESPACED ATTRS\n\n\nfunction _VirtualDom_applyAttrsNS(domNode, nsAttrs)\n{\n\tfor (var key in nsAttrs)\n\t{\n\t\tvar pair = nsAttrs[key];\n\t\tvar namespace = pair.f;\n\t\tvar value = pair.o;\n\n\t\ttypeof value !== 'undefined'\n\t\t\t? domNode.setAttributeNS(namespace, key, value)\n\t\t\t: domNode.removeAttributeNS(namespace, key);\n\t}\n}\n\n\n\n// APPLY EVENTS\n\n\nfunction _VirtualDom_applyEvents(domNode, eventNode, events)\n{\n\tvar allCallbacks = domNode.elmFs || (domNode.elmFs = {});\n\n\tfor (var key in events)\n\t{\n\t\tvar newHandler = events[key];\n\t\tvar oldCallback = allCallbacks[key];\n\n\t\tif (!newHandler)\n\t\t{\n\t\t\tdomNode.removeEventListener(key, oldCallback);\n\t\t\tallCallbacks[key] = undefined;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (oldCallback)\n\t\t{\n\t\t\tvar oldHandler = oldCallback.q;\n\t\t\tif (oldHandler.$ === newHandler.$)\n\t\t\t{\n\t\t\t\toldCallback.q = newHandler;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdomNode.removeEventListener(key, oldCallback);\n\t\t}\n\n\t\toldCallback = _VirtualDom_makeCallback(eventNode, newHandler);\n\t\tdomNode.addEventListener(key, oldCallback,\n\t\t\t_VirtualDom_passiveSupported\n\t\t\t&& { passive: $elm$virtual_dom$VirtualDom$toHandlerInt(newHandler) < 2 }\n\t\t);\n\t\tallCallbacks[key] = oldCallback;\n\t}\n}\n\n\n\n// PASSIVE EVENTS\n\n\nvar _VirtualDom_passiveSupported;\n\ntry\n{\n\twindow.addEventListener('t', null, Object.defineProperty({}, 'passive', {\n\t\tget: function() { _VirtualDom_passiveSupported = true; }\n\t}));\n}\ncatch(e) {}\n\n\n\n// EVENT HANDLERS\n\n\nfunction _VirtualDom_makeCallback(eventNode, initialHandler)\n{\n\tfunction callback(event)\n\t{\n\t\tvar handler = callback.q;\n\t\tvar result = _Json_runHelp(handler.a, event);\n\n\t\tif (!$elm$core$Result$isOk(result))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tvar tag = $elm$virtual_dom$VirtualDom$toHandlerInt(handler);\n\n\t\t// 0 = Normal\n\t\t// 1 = MayStopPropagation\n\t\t// 2 = MayPreventDefault\n\t\t// 3 = Custom\n\n\t\tvar value = result.a;\n\t\tvar message = !tag ? value : tag < 3 ? value.a : value.ah;\n\t\tvar stopPropagation = tag == 1 ? value.b : tag == 3 && value.c4;\n\t\tvar currentEventNode = (\n\t\t\tstopPropagation && event.stopPropagation(),\n\t\t\t(tag == 2 ? value.b : tag == 3 && value.cQ) && event.preventDefault(),\n\t\t\teventNode\n\t\t);\n\t\tvar tagger;\n\t\tvar i;\n\t\twhile (tagger = currentEventNode.j)\n\t\t{\n\t\t\tif (typeof tagger == 'function')\n\t\t\t{\n\t\t\t\tmessage = tagger(message);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tfor (var i = tagger.length; i--; )\n\t\t\t\t{\n\t\t\t\t\tmessage = tagger[i](message);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcurrentEventNode = currentEventNode.p;\n\t\t}\n\t\tcurrentEventNode(message, stopPropagation); // stopPropagation implies isSync\n\t}\n\n\tcallback.q = initialHandler;\n\n\treturn callback;\n}\n\nfunction _VirtualDom_equalEvents(x, y)\n{\n\treturn x.$ == y.$ && _Json_equality(x.a, y.a);\n}\n\n\n\n// DIFF\n\n\n// TODO: Should we do patches like in iOS?\n//\n// type Patch\n// = At Int Patch\n// | Batch (List Patch)\n// | Change ...\n//\n// How could it not be better?\n//\nfunction _VirtualDom_diff(x, y)\n{\n\tvar patches = [];\n\t_VirtualDom_diffHelp(x, y, patches, 0);\n\treturn patches;\n}\n\n\nfunction _VirtualDom_pushPatch(patches, type, index, data)\n{\n\tvar patch = {\n\t\t$: type,\n\t\tr: index,\n\t\ts: data,\n\t\tt: undefined,\n\t\tu: undefined\n\t};\n\tpatches.push(patch);\n\treturn patch;\n}\n\n\nfunction _VirtualDom_diffHelp(x, y, patches, index)\n{\n\tif (x === y)\n\t{\n\t\treturn;\n\t}\n\n\tvar xType = x.$;\n\tvar yType = y.$;\n\n\t// Bail if you run into different types of nodes. Implies that the\n\t// structure has changed significantly and it's not worth a diff.\n\tif (xType !== yType)\n\t{\n\t\tif (xType === 1 && yType === 2)\n\t\t{\n\t\t\ty = _VirtualDom_dekey(y);\n\t\t\tyType = 1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Now we know that both nodes are the same $.\n\tswitch (yType)\n\t{\n\t\tcase 5:\n\t\t\tvar xRefs = x.l;\n\t\t\tvar yRefs = y.l;\n\t\t\tvar i = xRefs.length;\n\t\t\tvar same = i === yRefs.length;\n\t\t\twhile (same && i--)\n\t\t\t{\n\t\t\t\tsame = xRefs[i] === yRefs[i];\n\t\t\t}\n\t\t\tif (same)\n\t\t\t{\n\t\t\t\ty.k = x.k;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ty.k = y.m();\n\t\t\tvar subPatches = [];\n\t\t\t_VirtualDom_diffHelp(x.k, y.k, subPatches, 0);\n\t\t\tsubPatches.length > 0 && _VirtualDom_pushPatch(patches, 1, index, subPatches);\n\t\t\treturn;\n\n\t\tcase 4:\n\t\t\t// gather nested taggers\n\t\t\tvar xTaggers = x.j;\n\t\t\tvar yTaggers = y.j;\n\t\t\tvar nesting = false;\n\n\t\t\tvar xSubNode = x.k;\n\t\t\twhile (xSubNode.$ === 4)\n\t\t\t{\n\t\t\t\tnesting = true;\n\n\t\t\t\ttypeof xTaggers !== 'object'\n\t\t\t\t\t? xTaggers = [xTaggers, xSubNode.j]\n\t\t\t\t\t: xTaggers.push(xSubNode.j);\n\n\t\t\t\txSubNode = xSubNode.k;\n\t\t\t}\n\n\t\t\tvar ySubNode = y.k;\n\t\t\twhile (ySubNode.$ === 4)\n\t\t\t{\n\t\t\t\tnesting = true;\n\n\t\t\t\ttypeof yTaggers !== 'object'\n\t\t\t\t\t? yTaggers = [yTaggers, ySubNode.j]\n\t\t\t\t\t: yTaggers.push(ySubNode.j);\n\n\t\t\t\tySubNode = ySubNode.k;\n\t\t\t}\n\n\t\t\t// Just bail if different numbers of taggers. This implies the\n\t\t\t// structure of the virtual DOM has changed.\n\t\t\tif (nesting && xTaggers.length !== yTaggers.length)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// check if taggers are \"the same\"\n\t\t\tif (nesting ? !_VirtualDom_pairwiseRefEqual(xTaggers, yTaggers) : xTaggers !== yTaggers)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 2, index, yTaggers);\n\t\t\t}\n\n\t\t\t// diff everything below the taggers\n\t\t\t_VirtualDom_diffHelp(xSubNode, ySubNode, patches, index + 1);\n\t\t\treturn;\n\n\t\tcase 0:\n\t\t\tif (x.a !== y.a)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 3, index, y.a);\n\t\t\t}\n\t\t\treturn;\n\n\t\tcase 1:\n\t\t\t_VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKids);\n\t\t\treturn;\n\n\t\tcase 2:\n\t\t\t_VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKeyedKids);\n\t\t\treturn;\n\n\t\tcase 3:\n\t\t\tif (x.h !== y.h)\n\t\t\t{\n\t\t\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar factsDiff = _VirtualDom_diffFacts(x.d, y.d);\n\t\t\tfactsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);\n\n\t\t\tvar patch = y.i(x.g, y.g);\n\t\t\tpatch && _VirtualDom_pushPatch(patches, 5, index, patch);\n\n\t\t\treturn;\n\t}\n}\n\n// assumes the incoming arrays are the same length\nfunction _VirtualDom_pairwiseRefEqual(as, bs)\n{\n\tfor (var i = 0; i < as.length; i++)\n\t{\n\t\tif (as[i] !== bs[i])\n\t\t{\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nfunction _VirtualDom_diffNodes(x, y, patches, index, diffKids)\n{\n\t// Bail if obvious indicators have changed. Implies more serious\n\t// structural changes such that it's not worth it to diff.\n\tif (x.c !== y.c || x.f !== y.f)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 0, index, y);\n\t\treturn;\n\t}\n\n\tvar factsDiff = _VirtualDom_diffFacts(x.d, y.d);\n\tfactsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);\n\n\tdiffKids(x, y, patches, index);\n}\n\n\n\n// DIFF FACTS\n\n\n// TODO Instead of creating a new diff object, it's possible to just test if\n// there *is* a diff. During the actual patch, do the diff again and make the\n// modifications directly. This way, there's no new allocations. Worth it?\nfunction _VirtualDom_diffFacts(x, y, category)\n{\n\tvar diff;\n\n\t// look for changes and removals\n\tfor (var xKey in x)\n\t{\n\t\tif (xKey === 'a1' || xKey === 'a0' || xKey === 'a3' || xKey === 'a4')\n\t\t{\n\t\t\tvar subDiff = _VirtualDom_diffFacts(x[xKey], y[xKey] || {}, xKey);\n\t\t\tif (subDiff)\n\t\t\t{\n\t\t\t\tdiff = diff || {};\n\t\t\t\tdiff[xKey] = subDiff;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove if not in the new facts\n\t\tif (!(xKey in y))\n\t\t{\n\t\t\tdiff = diff || {};\n\t\t\tdiff[xKey] =\n\t\t\t\t!category\n\t\t\t\t\t? (typeof x[xKey] === 'string' ? '' : null)\n\t\t\t\t\t:\n\t\t\t\t(category === 'a1')\n\t\t\t\t\t? ''\n\t\t\t\t\t:\n\t\t\t\t(category === 'a0' || category === 'a3')\n\t\t\t\t\t? undefined\n\t\t\t\t\t:\n\t\t\t\t{ f: x[xKey].f, o: undefined };\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvar xValue = x[xKey];\n\t\tvar yValue = y[xKey];\n\n\t\t// reference equal, so don't worry about it\n\t\tif (xValue === yValue && xKey !== 'value' && xKey !== 'checked'\n\t\t\t|| category === 'a0' && _VirtualDom_equalEvents(xValue, yValue))\n\t\t{\n\t\t\tcontinue;\n\t\t}\n\n\t\tdiff = diff || {};\n\t\tdiff[xKey] = yValue;\n\t}\n\n\t// add new stuff\n\tfor (var yKey in y)\n\t{\n\t\tif (!(yKey in x))\n\t\t{\n\t\t\tdiff = diff || {};\n\t\t\tdiff[yKey] = y[yKey];\n\t\t}\n\t}\n\n\treturn diff;\n}\n\n\n\n// DIFF KIDS\n\n\nfunction _VirtualDom_diffKids(xParent, yParent, patches, index)\n{\n\tvar xKids = xParent.e;\n\tvar yKids = yParent.e;\n\n\tvar xLen = xKids.length;\n\tvar yLen = yKids.length;\n\n\t// FIGURE OUT IF THERE ARE INSERTS OR REMOVALS\n\n\tif (xLen > yLen)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 6, index, {\n\t\t\tv: yLen,\n\t\t\ti: xLen - yLen\n\t\t});\n\t}\n\telse if (xLen < yLen)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 7, index, {\n\t\t\tv: xLen,\n\t\t\te: yKids\n\t\t});\n\t}\n\n\t// PAIRWISE DIFF EVERYTHING ELSE\n\n\tfor (var minLen = xLen < yLen ? xLen : yLen, i = 0; i < minLen; i++)\n\t{\n\t\tvar xKid = xKids[i];\n\t\t_VirtualDom_diffHelp(xKid, yKids[i], patches, ++index);\n\t\tindex += xKid.b || 0;\n\t}\n}\n\n\n\n// KEYED DIFF\n\n\nfunction _VirtualDom_diffKeyedKids(xParent, yParent, patches, rootIndex)\n{\n\tvar localPatches = [];\n\n\tvar changes = {}; // Dict String Entry\n\tvar inserts = []; // Array { index : Int, entry : Entry }\n\t// type Entry = { tag : String, vnode : VNode, index : Int, data : _ }\n\n\tvar xKids = xParent.e;\n\tvar yKids = yParent.e;\n\tvar xLen = xKids.length;\n\tvar yLen = yKids.length;\n\tvar xIndex = 0;\n\tvar yIndex = 0;\n\n\tvar index = rootIndex;\n\n\twhile (xIndex < xLen && yIndex < yLen)\n\t{\n\t\tvar x = xKids[xIndex];\n\t\tvar y = yKids[yIndex];\n\n\t\tvar xKey = x.a;\n\t\tvar yKey = y.a;\n\t\tvar xNode = x.b;\n\t\tvar yNode = y.b;\n\n\t\tvar newMatch = undefined;\n\t\tvar oldMatch = undefined;\n\n\t\t// check if keys match\n\n\t\tif (xKey === yKey)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNode, yNode, localPatches, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\txIndex++;\n\t\t\tyIndex++;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// look ahead 1 to detect insertions and removals.\n\n\t\tvar xNext = xKids[xIndex + 1];\n\t\tvar yNext = yKids[yIndex + 1];\n\n\t\tif (xNext)\n\t\t{\n\t\t\tvar xNextKey = xNext.a;\n\t\t\tvar xNextNode = xNext.b;\n\t\t\toldMatch = yKey === xNextKey;\n\t\t}\n\n\t\tif (yNext)\n\t\t{\n\t\t\tvar yNextKey = yNext.a;\n\t\t\tvar yNextNode = yNext.b;\n\t\t\tnewMatch = xKey === yNextKey;\n\t\t}\n\n\n\t\t// swap x and y\n\t\tif (newMatch && oldMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);\n\t\t\t_VirtualDom_insertNode(changes, localPatches, xKey, yNode, yIndex, inserts);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNextNode, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// insert y\n\t\tif (newMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);\n\t\t\t_VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\txIndex += 1;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove x\n\t\tif (oldMatch)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNextNode, yNode, localPatches, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// remove x, insert y\n\t\tif (xNext && xNextKey === yNextKey)\n\t\t{\n\t\t\tindex++;\n\t\t\t_VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);\n\t\t\t_VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);\n\t\t\tindex += xNode.b || 0;\n\n\t\t\tindex++;\n\t\t\t_VirtualDom_diffHelp(xNextNode, yNextNode, localPatches, index);\n\t\t\tindex += xNextNode.b || 0;\n\n\t\t\txIndex += 2;\n\t\t\tyIndex += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\tbreak;\n\t}\n\n\t// eat up any remaining nodes with removeNode and insertNode\n\n\twhile (xIndex < xLen)\n\t{\n\t\tindex++;\n\t\tvar x = xKids[xIndex];\n\t\tvar xNode = x.b;\n\t\t_VirtualDom_removeNode(changes, localPatches, x.a, xNode, index);\n\t\tindex += xNode.b || 0;\n\t\txIndex++;\n\t}\n\n\twhile (yIndex < yLen)\n\t{\n\t\tvar endInserts = endInserts || [];\n\t\tvar y = yKids[yIndex];\n\t\t_VirtualDom_insertNode(changes, localPatches, y.a, y.b, undefined, endInserts);\n\t\tyIndex++;\n\t}\n\n\tif (localPatches.length > 0 || inserts.length > 0 || endInserts)\n\t{\n\t\t_VirtualDom_pushPatch(patches, 8, rootIndex, {\n\t\t\tw: localPatches,\n\t\t\tx: inserts,\n\t\t\ty: endInserts\n\t\t});\n\t}\n}\n\n\n\n// CHANGES FROM KEYED DIFF\n\n\nvar _VirtualDom_POSTFIX = '_elmW6BL';\n\n\nfunction _VirtualDom_insertNode(changes, localPatches, key, vnode, yIndex, inserts)\n{\n\tvar entry = changes[key];\n\n\t// never seen this key before\n\tif (!entry)\n\t{\n\t\tentry = {\n\t\t\tc: 0,\n\t\t\tz: vnode,\n\t\t\tr: yIndex,\n\t\t\ts: undefined\n\t\t};\n\n\t\tinserts.push({ r: yIndex, A: entry });\n\t\tchanges[key] = entry;\n\n\t\treturn;\n\t}\n\n\t// this key was removed earlier, a match!\n\tif (entry.c === 1)\n\t{\n\t\tinserts.push({ r: yIndex, A: entry });\n\n\t\tentry.c = 2;\n\t\tvar subPatches = [];\n\t\t_VirtualDom_diffHelp(entry.z, vnode, subPatches, entry.r);\n\t\tentry.r = yIndex;\n\t\tentry.s.s = {\n\t\t\tw: subPatches,\n\t\t\tA: entry\n\t\t};\n\n\t\treturn;\n\t}\n\n\t// this key has already been inserted or moved, a duplicate!\n\t_VirtualDom_insertNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, yIndex, inserts);\n}\n\n\nfunction _VirtualDom_removeNode(changes, localPatches, key, vnode, index)\n{\n\tvar entry = changes[key];\n\n\t// never seen this key before\n\tif (!entry)\n\t{\n\t\tvar patch = _VirtualDom_pushPatch(localPatches, 9, index, undefined);\n\n\t\tchanges[key] = {\n\t\t\tc: 1,\n\t\t\tz: vnode,\n\t\t\tr: index,\n\t\t\ts: patch\n\t\t};\n\n\t\treturn;\n\t}\n\n\t// this key was inserted earlier, a match!\n\tif (entry.c === 0)\n\t{\n\t\tentry.c = 2;\n\t\tvar subPatches = [];\n\t\t_VirtualDom_diffHelp(vnode, entry.z, subPatches, index);\n\n\t\t_VirtualDom_pushPatch(localPatches, 9, index, {\n\t\t\tw: subPatches,\n\t\t\tA: entry\n\t\t});\n\n\t\treturn;\n\t}\n\n\t// this key has already been removed or moved, a duplicate!\n\t_VirtualDom_removeNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, index);\n}\n\n\n\n// ADD DOM NODES\n//\n// Each DOM node has an \"index\" assigned in order of traversal. It is important\n// to minimize our crawl over the actual DOM, so these indexes (along with the\n// descendantsCount of virtual nodes) let us skip touching entire subtrees of\n// the DOM if we know there are no patches there.\n\n\nfunction _VirtualDom_addDomNodes(domNode, vNode, patches, eventNode)\n{\n\t_VirtualDom_addDomNodesHelp(domNode, vNode, patches, 0, 0, vNode.b, eventNode);\n}\n\n\n// assumes `patches` is non-empty and indexes increase monotonically.\nfunction _VirtualDom_addDomNodesHelp(domNode, vNode, patches, i, low, high, eventNode)\n{\n\tvar patch = patches[i];\n\tvar index = patch.r;\n\n\twhile (index === low)\n\t{\n\t\tvar patchType = patch.$;\n\n\t\tif (patchType === 1)\n\t\t{\n\t\t\t_VirtualDom_addDomNodes(domNode, vNode.k, patch.s, eventNode);\n\t\t}\n\t\telse if (patchType === 8)\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\n\t\t\tvar subPatches = patch.s.w;\n\t\t\tif (subPatches.length > 0)\n\t\t\t{\n\t\t\t\t_VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);\n\t\t\t}\n\t\t}\n\t\telse if (patchType === 9)\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\n\t\t\tvar data = patch.s;\n\t\t\tif (data)\n\t\t\t{\n\t\t\t\tdata.A.s = domNode;\n\t\t\t\tvar subPatches = data.w;\n\t\t\t\tif (subPatches.length > 0)\n\t\t\t\t{\n\t\t\t\t\t_VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpatch.t = domNode;\n\t\t\tpatch.u = eventNode;\n\t\t}\n\n\t\ti++;\n\n\t\tif (!(patch = patches[i]) || (index = patch.r) > high)\n\t\t{\n\t\t\treturn i;\n\t\t}\n\t}\n\n\tvar tag = vNode.$;\n\n\tif (tag === 4)\n\t{\n\t\tvar subNode = vNode.k;\n\n\t\twhile (subNode.$ === 4)\n\t\t{\n\t\t\tsubNode = subNode.k;\n\t\t}\n\n\t\treturn _VirtualDom_addDomNodesHelp(domNode, subNode, patches, i, low + 1, high, domNode.elm_event_node_ref);\n\t}\n\n\t// tag must be 1 or 2 at this point\n\n\tvar vKids = vNode.e;\n\tvar childNodes = domNode.childNodes;\n\tfor (var j = 0; j < vKids.length; j++)\n\t{\n\t\tlow++;\n\t\tvar vKid = tag === 1 ? vKids[j] : vKids[j].b;\n\t\tvar nextLow = low + (vKid.b || 0);\n\t\tif (low <= index && index <= nextLow)\n\t\t{\n\t\t\ti = _VirtualDom_addDomNodesHelp(childNodes[j], vKid, patches, i, low, nextLow, eventNode);\n\t\t\tif (!(patch = patches[i]) || (index = patch.r) > high)\n\t\t\t{\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\tlow = nextLow;\n\t}\n\treturn i;\n}\n\n\n\n// APPLY PATCHES\n\n\nfunction _VirtualDom_applyPatches(rootDomNode, oldVirtualNode, patches, eventNode)\n{\n\tif (patches.length === 0)\n\t{\n\t\treturn rootDomNode;\n\t}\n\n\t_VirtualDom_addDomNodes(rootDomNode, oldVirtualNode, patches, eventNode);\n\treturn _VirtualDom_applyPatchesHelp(rootDomNode, patches);\n}\n\nfunction _VirtualDom_applyPatchesHelp(rootDomNode, patches)\n{\n\tfor (var i = 0; i < patches.length; i++)\n\t{\n\t\tvar patch = patches[i];\n\t\tvar localDomNode = patch.t\n\t\tvar newNode = _VirtualDom_applyPatch(localDomNode, patch);\n\t\tif (localDomNode === rootDomNode)\n\t\t{\n\t\t\trootDomNode = newNode;\n\t\t}\n\t}\n\treturn rootDomNode;\n}\n\nfunction _VirtualDom_applyPatch(domNode, patch)\n{\n\tswitch (patch.$)\n\t{\n\t\tcase 0:\n\t\t\treturn _VirtualDom_applyPatchRedraw(domNode, patch.s, patch.u);\n\n\t\tcase 4:\n\t\t\t_VirtualDom_applyFacts(domNode, patch.u, patch.s);\n\t\t\treturn domNode;\n\n\t\tcase 3:\n\t\t\tdomNode.replaceData(0, domNode.length, patch.s);\n\t\t\treturn domNode;\n\n\t\tcase 1:\n\t\t\treturn _VirtualDom_applyPatchesHelp(domNode, patch.s);\n\n\t\tcase 2:\n\t\t\tif (domNode.elm_event_node_ref)\n\t\t\t{\n\t\t\t\tdomNode.elm_event_node_ref.j = patch.s;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tdomNode.elm_event_node_ref = { j: patch.s, p: patch.u };\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 6:\n\t\t\tvar data = patch.s;\n\t\t\tfor (var i = 0; i < data.i; i++)\n\t\t\t{\n\t\t\t\tdomNode.removeChild(domNode.childNodes[data.v]);\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 7:\n\t\t\tvar data = patch.s;\n\t\t\tvar kids = data.e;\n\t\t\tvar i = data.v;\n\t\t\tvar theEnd = domNode.childNodes[i];\n\t\t\tfor (; i < kids.length; i++)\n\t\t\t{\n\t\t\t\tdomNode.insertBefore(_VirtualDom_render(kids[i], patch.u), theEnd);\n\t\t\t}\n\t\t\treturn domNode;\n\n\t\tcase 9:\n\t\t\tvar data = patch.s;\n\t\t\tif (!data)\n\t\t\t{\n\t\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t\t\treturn domNode;\n\t\t\t}\n\t\t\tvar entry = data.A;\n\t\t\tif (typeof entry.r !== 'undefined')\n\t\t\t{\n\t\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t\t}\n\t\t\tentry.s = _VirtualDom_applyPatchesHelp(domNode, data.w);\n\t\t\treturn domNode;\n\n\t\tcase 8:\n\t\t\treturn _VirtualDom_applyPatchReorder(domNode, patch);\n\n\t\tcase 5:\n\t\t\treturn patch.s(domNode);\n\n\t\tdefault:\n\t\t\t_Debug_crash(10); // 'Ran into an unknown patch!'\n\t}\n}\n\n\nfunction _VirtualDom_applyPatchRedraw(domNode, vNode, eventNode)\n{\n\tvar parentNode = domNode.parentNode;\n\tvar newNode = _VirtualDom_render(vNode, eventNode);\n\n\tif (!newNode.elm_event_node_ref)\n\t{\n\t\tnewNode.elm_event_node_ref = domNode.elm_event_node_ref;\n\t}\n\n\tif (parentNode && newNode !== domNode)\n\t{\n\t\tparentNode.replaceChild(newNode, domNode);\n\t}\n\treturn newNode;\n}\n\n\nfunction _VirtualDom_applyPatchReorder(domNode, patch)\n{\n\tvar data = patch.s;\n\n\t// remove end inserts\n\tvar frag = _VirtualDom_applyPatchReorderEndInsertsHelp(data.y, patch);\n\n\t// removals\n\tdomNode = _VirtualDom_applyPatchesHelp(domNode, data.w);\n\n\t// inserts\n\tvar inserts = data.x;\n\tfor (var i = 0; i < inserts.length; i++)\n\t{\n\t\tvar insert = inserts[i];\n\t\tvar entry = insert.A;\n\t\tvar node = entry.c === 2\n\t\t\t? entry.s\n\t\t\t: _VirtualDom_render(entry.z, patch.u);\n\t\tdomNode.insertBefore(node, domNode.childNodes[insert.r]);\n\t}\n\n\t// add end inserts\n\tif (frag)\n\t{\n\t\t_VirtualDom_appendChild(domNode, frag);\n\t}\n\n\treturn domNode;\n}\n\n\nfunction _VirtualDom_applyPatchReorderEndInsertsHelp(endInserts, patch)\n{\n\tif (!endInserts)\n\t{\n\t\treturn;\n\t}\n\n\tvar frag = _VirtualDom_doc.createDocumentFragment();\n\tfor (var i = 0; i < endInserts.length; i++)\n\t{\n\t\tvar insert = endInserts[i];\n\t\tvar entry = insert.A;\n\t\t_VirtualDom_appendChild(frag, entry.c === 2\n\t\t\t? entry.s\n\t\t\t: _VirtualDom_render(entry.z, patch.u)\n\t\t);\n\t}\n\treturn frag;\n}\n\n\nfunction _VirtualDom_virtualize(node)\n{\n\t// TEXT NODES\n\n\tif (node.nodeType === 3)\n\t{\n\t\treturn _VirtualDom_text(node.textContent);\n\t}\n\n\n\t// WEIRD NODES\n\n\tif (node.nodeType !== 1)\n\t{\n\t\treturn _VirtualDom_text('');\n\t}\n\n\n\t// ELEMENT NODES\n\n\tvar attrList = _List_Nil;\n\tvar attrs = node.attributes;\n\tfor (var i = attrs.length; i--; )\n\t{\n\t\tvar attr = attrs[i];\n\t\tvar name = attr.name;\n\t\tvar value = attr.value;\n\t\tattrList = _List_Cons( A2(_VirtualDom_attribute, name, value), attrList );\n\t}\n\n\tvar tag = node.tagName.toLowerCase();\n\tvar kidList = _List_Nil;\n\tvar kids = node.childNodes;\n\n\tfor (var i = kids.length; i--; )\n\t{\n\t\tkidList = _List_Cons(_VirtualDom_virtualize(kids[i]), kidList);\n\t}\n\treturn A3(_VirtualDom_node, tag, attrList, kidList);\n}\n\nfunction _VirtualDom_dekey(keyedNode)\n{\n\tvar keyedKids = keyedNode.e;\n\tvar len = keyedKids.length;\n\tvar kids = new Array(len);\n\tfor (var i = 0; i < len; i++)\n\t{\n\t\tkids[i] = keyedKids[i].b;\n\t}\n\n\treturn {\n\t\t$: 1,\n\t\tc: keyedNode.c,\n\t\td: keyedNode.d,\n\t\te: kids,\n\t\tf: keyedNode.f,\n\t\tb: keyedNode.b\n\t};\n}\n\n\n\n\n// ELEMENT\n\n\nvar _Debugger_element;\n\nvar _Browser_element = _Debugger_element || F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.fb,\n\t\timpl.fZ,\n\t\timpl.fN,\n\t\tfunction(sendToApp, initialModel) {\n\t\t\tvar view = impl.f0;\n\t\t\t/**/\n\t\t\tvar domNode = args['node'];\n\t\t\t//*/\n\t\t\t/**_UNUSED/\n\t\t\tvar domNode = args && args['node'] ? args['node'] : _Debug_crash(0);\n\t\t\t//*/\n\t\t\tvar currNode = _VirtualDom_virtualize(domNode);\n\n\t\t\treturn _Browser_makeAnimator(initialModel, function(model)\n\t\t\t{\n\t\t\t\tvar nextNode = view(model);\n\t\t\t\tvar patches = _VirtualDom_diff(currNode, nextNode);\n\t\t\t\tdomNode = _VirtualDom_applyPatches(domNode, currNode, patches, sendToApp);\n\t\t\t\tcurrNode = nextNode;\n\t\t\t});\n\t\t}\n\t);\n});\n\n\n\n// DOCUMENT\n\n\nvar _Debugger_document;\n\nvar _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, debugMetadata, args)\n{\n\treturn _Platform_initialize(\n\t\tflagDecoder,\n\t\targs,\n\t\timpl.fb,\n\t\timpl.fZ,\n\t\timpl.fN,\n\t\tfunction(sendToApp, initialModel) {\n\t\t\tvar divertHrefToApp = impl.cX && impl.cX(sendToApp)\n\t\t\tvar view = impl.f0;\n\t\t\tvar title = _VirtualDom_doc.title;\n\t\t\tvar bodyNode = _VirtualDom_doc.body;\n\t\t\tvar currNode = _VirtualDom_virtualize(bodyNode);\n\t\t\treturn _Browser_makeAnimator(initialModel, function(model)\n\t\t\t{\n\t\t\t\t_VirtualDom_divertHrefToApp = divertHrefToApp;\n\t\t\t\tvar doc = view(model);\n\t\t\t\tvar nextNode = _VirtualDom_node('body')(_List_Nil)(doc.eJ);\n\t\t\t\tvar patches = _VirtualDom_diff(currNode, nextNode);\n\t\t\t\tbodyNode = _VirtualDom_applyPatches(bodyNode, currNode, patches, sendToApp);\n\t\t\t\tcurrNode = nextNode;\n\t\t\t\t_VirtualDom_divertHrefToApp = 0;\n\t\t\t\t(title !== doc.fR) && (_VirtualDom_doc.title = title = doc.fR);\n\t\t\t});\n\t\t}\n\t);\n});\n\n\n\n// ANIMATION\n\n\nvar _Browser_cancelAnimationFrame =\n\ttypeof cancelAnimationFrame !== 'undefined'\n\t\t? cancelAnimationFrame\n\t\t: function(id) { clearTimeout(id); };\n\nvar _Browser_requestAnimationFrame =\n\ttypeof requestAnimationFrame !== 'undefined'\n\t\t? requestAnimationFrame\n\t\t: function(callback) { return setTimeout(callback, 1000 / 60); };\n\n\nfunction _Browser_makeAnimator(model, draw)\n{\n\tdraw(model);\n\n\tvar state = 0;\n\n\tfunction updateIfNeeded()\n\t{\n\t\tstate = state === 1\n\t\t\t? 0\n\t\t\t: ( _Browser_requestAnimationFrame(updateIfNeeded), draw(model), 1 );\n\t}\n\n\treturn function(nextModel, isSync)\n\t{\n\t\tmodel = nextModel;\n\n\t\tisSync\n\t\t\t? ( draw(model),\n\t\t\t\tstate === 2 && (state = 1)\n\t\t\t\t)\n\t\t\t: ( state === 0 && _Browser_requestAnimationFrame(updateIfNeeded),\n\t\t\t\tstate = 2\n\t\t\t\t);\n\t};\n}\n\n\n\n// APPLICATION\n\n\nfunction _Browser_application(impl)\n{\n\tvar onUrlChange = impl.fx;\n\tvar onUrlRequest = impl.fy;\n\tvar key = function() { key.a(onUrlChange(_Browser_getUrl())); };\n\n\treturn _Browser_document({\n\t\tcX: function(sendToApp)\n\t\t{\n\t\t\tkey.a = sendToApp;\n\t\t\t_Browser_window.addEventListener('popstate', key);\n\t\t\t_Browser_window.navigator.userAgent.indexOf('Trident') < 0 || _Browser_window.addEventListener('hashchange', key);\n\n\t\t\treturn F2(function(domNode, event)\n\t\t\t{\n\t\t\t\tif (!event.ctrlKey && !event.metaKey && !event.shiftKey && event.button < 1 && !domNode.target && !domNode.hasAttribute('download'))\n\t\t\t\t{\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tvar href = domNode.href;\n\t\t\t\t\tvar curr = _Browser_getUrl();\n\t\t\t\t\tvar next = $elm$url$Url$fromString(href).a;\n\t\t\t\t\tsendToApp(onUrlRequest(\n\t\t\t\t\t\t(next\n\t\t\t\t\t\t\t&& curr.d2 === next.d2\n\t\t\t\t\t\t\t&& curr.e6 === next.e6\n\t\t\t\t\t\t\t&& curr.dZ.a === next.dZ.a\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\t? $elm$browser$Browser$Internal(next)\n\t\t\t\t\t\t\t: $elm$browser$Browser$External(href)\n\t\t\t\t\t));\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tfb: function(flags)\n\t\t{\n\t\t\treturn A3(impl.fb, flags, _Browser_getUrl(), key);\n\t\t},\n\t\tf0: impl.f0,\n\t\tfZ: impl.fZ,\n\t\tfN: impl.fN\n\t});\n}\n\nfunction _Browser_getUrl()\n{\n\treturn $elm$url$Url$fromString(_VirtualDom_doc.location.href).a || _Debug_crash(1);\n}\n\nvar _Browser_go = F2(function(key, n)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\tn && history.go(n);\n\t\tkey();\n\t}));\n});\n\nvar _Browser_pushUrl = F2(function(key, url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\thistory.pushState({}, '', url);\n\t\tkey();\n\t}));\n});\n\nvar _Browser_replaceUrl = F2(function(key, url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {\n\t\thistory.replaceState({}, '', url);\n\t\tkey();\n\t}));\n});\n\n\n\n// GLOBAL EVENTS\n\n\nvar _Browser_fakeNode = { addEventListener: function() {}, removeEventListener: function() {} };\nvar _Browser_doc = typeof document !== 'undefined' ? document : _Browser_fakeNode;\nvar _Browser_window = typeof window !== 'undefined' ? window : _Browser_fakeNode;\n\nvar _Browser_on = F3(function(node, eventName, sendToSelf)\n{\n\treturn _Scheduler_spawn(_Scheduler_binding(function(callback)\n\t{\n\t\tfunction handler(event)\t{ _Scheduler_rawSpawn(sendToSelf(event)); }\n\t\tnode.addEventListener(eventName, handler, _VirtualDom_passiveSupported && { passive: true });\n\t\treturn function() { node.removeEventListener(eventName, handler); };\n\t}));\n});\n\nvar _Browser_decodeEvent = F2(function(decoder, event)\n{\n\tvar result = _Json_runHelp(decoder, event);\n\treturn $elm$core$Result$isOk(result) ? $elm$core$Maybe$Just(result.a) : $elm$core$Maybe$Nothing;\n});\n\n\n\n// PAGE VISIBILITY\n\n\nfunction _Browser_visibilityInfo()\n{\n\treturn (typeof _VirtualDom_doc.hidden !== 'undefined')\n\t\t? { e5: 'hidden', eM: 'visibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.mozHidden !== 'undefined')\n\t\t? { e5: 'mozHidden', eM: 'mozvisibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.msHidden !== 'undefined')\n\t\t? { e5: 'msHidden', eM: 'msvisibilitychange' }\n\t\t:\n\t(typeof _VirtualDom_doc.webkitHidden !== 'undefined')\n\t\t? { e5: 'webkitHidden', eM: 'webkitvisibilitychange' }\n\t\t: { e5: 'hidden', eM: 'visibilitychange' };\n}\n\n\n\n// ANIMATION FRAMES\n\n\nfunction _Browser_rAF()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tvar id = _Browser_requestAnimationFrame(function() {\n\t\t\tcallback(_Scheduler_succeed(Date.now()));\n\t\t});\n\n\t\treturn function() {\n\t\t\t_Browser_cancelAnimationFrame(id);\n\t\t};\n\t});\n}\n\n\nfunction _Browser_now()\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tcallback(_Scheduler_succeed(Date.now()));\n\t});\n}\n\n\n\n// DOM STUFF\n\n\nfunction _Browser_withNode(id, doStuff)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_Browser_requestAnimationFrame(function() {\n\t\t\tvar node = document.getElementById(id);\n\t\t\tcallback(node\n\t\t\t\t? _Scheduler_succeed(doStuff(node))\n\t\t\t\t: _Scheduler_fail($elm$browser$Browser$Dom$NotFound(id))\n\t\t\t);\n\t\t});\n\t});\n}\n\n\nfunction _Browser_withWindow(doStuff)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\t_Browser_requestAnimationFrame(function() {\n\t\t\tcallback(_Scheduler_succeed(doStuff()));\n\t\t});\n\t});\n}\n\n\n// FOCUS and BLUR\n\n\nvar _Browser_call = F2(function(functionName, id)\n{\n\treturn _Browser_withNode(id, function(node) {\n\t\tnode[functionName]();\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// WINDOW VIEWPORT\n\n\nfunction _Browser_getViewport()\n{\n\treturn {\n\t\tec: _Browser_getScene(),\n\t\teA: {\n\t\t\teC: _Browser_window.pageXOffset,\n\t\t\teD: _Browser_window.pageYOffset,\n\t\t\teB: _Browser_doc.documentElement.clientWidth,\n\t\t\tdz: _Browser_doc.documentElement.clientHeight\n\t\t}\n\t};\n}\n\nfunction _Browser_getScene()\n{\n\tvar body = _Browser_doc.body;\n\tvar elem = _Browser_doc.documentElement;\n\treturn {\n\t\teB: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth),\n\t\tdz: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight)\n\t};\n}\n\nvar _Browser_setViewport = F2(function(x, y)\n{\n\treturn _Browser_withWindow(function()\n\t{\n\t\t_Browser_window.scroll(x, y);\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// ELEMENT VIEWPORT\n\n\nfunction _Browser_getViewportOf(id)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\treturn {\n\t\t\tec: {\n\t\t\t\teB: node.scrollWidth,\n\t\t\t\tdz: node.scrollHeight\n\t\t\t},\n\t\t\teA: {\n\t\t\t\teC: node.scrollLeft,\n\t\t\t\teD: node.scrollTop,\n\t\t\t\teB: node.clientWidth,\n\t\t\t\tdz: node.clientHeight\n\t\t\t}\n\t\t};\n\t});\n}\n\n\nvar _Browser_setViewportOf = F3(function(id, x, y)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\tnode.scrollLeft = x;\n\t\tnode.scrollTop = y;\n\t\treturn _Utils_Tuple0;\n\t});\n});\n\n\n\n// ELEMENT\n\n\nfunction _Browser_getElement(id)\n{\n\treturn _Browser_withNode(id, function(node)\n\t{\n\t\tvar rect = node.getBoundingClientRect();\n\t\tvar x = _Browser_window.pageXOffset;\n\t\tvar y = _Browser_window.pageYOffset;\n\t\treturn {\n\t\t\tec: _Browser_getScene(),\n\t\t\teA: {\n\t\t\t\teC: x,\n\t\t\t\teD: y,\n\t\t\t\teB: _Browser_doc.documentElement.clientWidth,\n\t\t\t\tdz: _Browser_doc.documentElement.clientHeight\n\t\t\t},\n\t\t\teU: {\n\t\t\t\teC: x + rect.left,\n\t\t\t\teD: y + rect.top,\n\t\t\t\teB: rect.width,\n\t\t\t\tdz: rect.height\n\t\t\t}\n\t\t};\n\t});\n}\n\n\n\n// LOAD and RELOAD\n\n\nfunction _Browser_reload(skipCache)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)\n\t{\n\t\t_VirtualDom_doc.location.reload(skipCache);\n\t}));\n}\n\nfunction _Browser_load(url)\n{\n\treturn A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)\n\t{\n\t\ttry\n\t\t{\n\t\t\t_Browser_window.location = url;\n\t\t}\n\t\tcatch(err)\n\t\t{\n\t\t\t// Only Firefox can throw a NS_ERROR_MALFORMED_URI exception here.\n\t\t\t// Other browsers reload the page, so let's be consistent about that.\n\t\t\t_VirtualDom_doc.location.reload(false);\n\t\t}\n\t}));\n}\n\n\nfunction _Url_percentEncode(string)\n{\n\treturn encodeURIComponent(string);\n}\n\nfunction _Url_percentDecode(string)\n{\n\ttry\n\t{\n\t\treturn $elm$core$Maybe$Just(decodeURIComponent(string));\n\t}\n\tcatch (e)\n\t{\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n}\n\n\n// SEND REQUEST\n\nvar _Http_toTask = F3(function(router, toTask, request)\n{\n\treturn _Scheduler_binding(function(callback)\n\t{\n\t\tfunction done(response) {\n\t\t\tcallback(toTask(request.eX.a(response)));\n\t\t}\n\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.addEventListener('error', function() { done($elm$http$Http$NetworkError_); });\n\t\txhr.addEventListener('timeout', function() { done($elm$http$Http$Timeout_); });\n\t\txhr.addEventListener('load', function() { done(_Http_toResponse(request.eX.b, xhr)); });\n\t\t$elm$core$Maybe$isJust(request.fY) && _Http_track(router, xhr, request.fY.a);\n\n\t\ttry {\n\t\t\txhr.open(request.fh, request.f_, true);\n\t\t} catch (e) {\n\t\t\treturn done($elm$http$Http$BadUrl_(request.f_));\n\t\t}\n\n\t\t_Http_configureRequest(xhr, request);\n\n\t\trequest.eJ.a && xhr.setRequestHeader('Content-Type', request.eJ.a);\n\t\txhr.send(request.eJ.b);\n\n\t\treturn function() { xhr.c = true; xhr.abort(); };\n\t});\n});\n\n\n// CONFIGURE\n\nfunction _Http_configureRequest(xhr, request)\n{\n\tfor (var headers = request.e3; headers.b; headers = headers.b) // WHILE_CONS\n\t{\n\t\txhr.setRequestHeader(headers.a.a, headers.a.b);\n\t}\n\txhr.timeout = request.fQ.a || 0;\n\txhr.responseType = request.eX.d;\n\txhr.withCredentials = request.eH;\n}\n\n\n// RESPONSES\n\nfunction _Http_toResponse(toBody, xhr)\n{\n\treturn A2(\n\t\t200 <= xhr.status && xhr.status < 300 ? $elm$http$Http$GoodStatus_ : $elm$http$Http$BadStatus_,\n\t\t_Http_toMetadata(xhr),\n\t\ttoBody(xhr.response)\n\t);\n}\n\n\n// METADATA\n\nfunction _Http_toMetadata(xhr)\n{\n\treturn {\n\t\tf_: xhr.responseURL,\n\t\tfL: xhr.status,\n\t\tfM: xhr.statusText,\n\t\te3: _Http_parseHeaders(xhr.getAllResponseHeaders())\n\t};\n}\n\n\n// HEADERS\n\nfunction _Http_parseHeaders(rawHeaders)\n{\n\tif (!rawHeaders)\n\t{\n\t\treturn $elm$core$Dict$empty;\n\t}\n\n\tvar headers = $elm$core$Dict$empty;\n\tvar headerPairs = rawHeaders.split('\\r\\n');\n\tfor (var i = headerPairs.length; i--; )\n\t{\n\t\tvar headerPair = headerPairs[i];\n\t\tvar index = headerPair.indexOf(': ');\n\t\tif (index > 0)\n\t\t{\n\t\t\tvar key = headerPair.substring(0, index);\n\t\t\tvar value = headerPair.substring(index + 2);\n\n\t\t\theaders = A3($elm$core$Dict$update, key, function(oldValue) {\n\t\t\t\treturn $elm$core$Maybe$Just($elm$core$Maybe$isJust(oldValue)\n\t\t\t\t\t? value + ', ' + oldValue.a\n\t\t\t\t\t: value\n\t\t\t\t);\n\t\t\t}, headers);\n\t\t}\n\t}\n\treturn headers;\n}\n\n\n// EXPECT\n\nvar _Http_expect = F3(function(type, toBody, toValue)\n{\n\treturn {\n\t\t$: 0,\n\t\td: type,\n\t\tb: toBody,\n\t\ta: toValue\n\t};\n});\n\nvar _Http_mapExpect = F2(function(func, expect)\n{\n\treturn {\n\t\t$: 0,\n\t\td: expect.d,\n\t\tb: expect.b,\n\t\ta: function(x) { return func(expect.a(x)); }\n\t};\n});\n\nfunction _Http_toDataView(arrayBuffer)\n{\n\treturn new DataView(arrayBuffer);\n}\n\n\n// BODY and PARTS\n\nvar _Http_emptyBody = { $: 0 };\nvar _Http_pair = F2(function(a, b) { return { $: 0, a: a, b: b }; });\n\nfunction _Http_toFormData(parts)\n{\n\tfor (var formData = new FormData(); parts.b; parts = parts.b) // WHILE_CONS\n\t{\n\t\tvar part = parts.a;\n\t\tformData.append(part.a, part.b);\n\t}\n\treturn formData;\n}\n\nvar _Http_bytesToBlob = F2(function(mime, bytes)\n{\n\treturn new Blob([bytes], { type: mime });\n});\n\n\n// PROGRESS\n\nfunction _Http_track(router, xhr, tracker)\n{\n\t// TODO check out lengthComputable on loadstart event\n\n\txhr.upload.addEventListener('progress', function(event) {\n\t\tif (xhr.c) { return; }\n\t\t_Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Sending({\n\t\t\tfK: event.loaded,\n\t\t\teg: event.total\n\t\t}))));\n\t});\n\txhr.addEventListener('progress', function(event) {\n\t\tif (xhr.c) { return; }\n\t\t_Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Receiving({\n\t\t\tfE: event.loaded,\n\t\t\teg: event.lengthComputable ? $elm$core$Maybe$Just(event.total) : $elm$core$Maybe$Nothing\n\t\t}))));\n\t});\n}var $author$project$Main$LinkClicked = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Main$UrlChanged = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$core$Basics$EQ = 1;\nvar $elm$core$Basics$GT = 2;\nvar $elm$core$Basics$LT = 0;\nvar $elm$core$List$cons = _List_cons;\nvar $elm$core$Dict$foldr = F3(\n\tfunction (func, acc, t) {\n\t\tfoldr:\n\t\twhile (true) {\n\t\t\tif (t.$ === -2) {\n\t\t\t\treturn acc;\n\t\t\t} else {\n\t\t\t\tvar key = t.b;\n\t\t\t\tvar value = t.c;\n\t\t\t\tvar left = t.d;\n\t\t\t\tvar right = t.e;\n\t\t\t\tvar $temp$func = func,\n\t\t\t\t\t$temp$acc = A3(\n\t\t\t\t\tfunc,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tA3($elm$core$Dict$foldr, func, acc, right)),\n\t\t\t\t\t$temp$t = left;\n\t\t\t\tfunc = $temp$func;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tt = $temp$t;\n\t\t\t\tcontinue foldr;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$toList = function (dict) {\n\treturn A3(\n\t\t$elm$core$Dict$foldr,\n\t\tF3(\n\t\t\tfunction (key, value, list) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t_Utils_Tuple2(key, value),\n\t\t\t\t\tlist);\n\t\t\t}),\n\t\t_List_Nil,\n\t\tdict);\n};\nvar $elm$core$Dict$keys = function (dict) {\n\treturn A3(\n\t\t$elm$core$Dict$foldr,\n\t\tF3(\n\t\t\tfunction (key, value, keyList) {\n\t\t\t\treturn A2($elm$core$List$cons, key, keyList);\n\t\t\t}),\n\t\t_List_Nil,\n\t\tdict);\n};\nvar $elm$core$Set$toList = function (_v0) {\n\tvar dict = _v0;\n\treturn $elm$core$Dict$keys(dict);\n};\nvar $elm$core$Elm$JsArray$foldr = _JsArray_foldr;\nvar $elm$core$Array$foldr = F3(\n\tfunction (func, baseCase, _v0) {\n\t\tvar tree = _v0.c;\n\t\tvar tail = _v0.d;\n\t\tvar helper = F2(\n\t\t\tfunction (node, acc) {\n\t\t\t\tif (!node.$) {\n\t\t\t\t\tvar subTree = node.a;\n\t\t\t\t\treturn A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree);\n\t\t\t\t} else {\n\t\t\t\t\tvar values = node.a;\n\t\t\t\t\treturn A3($elm$core$Elm$JsArray$foldr, func, acc, values);\n\t\t\t\t}\n\t\t\t});\n\t\treturn A3(\n\t\t\t$elm$core$Elm$JsArray$foldr,\n\t\t\thelper,\n\t\t\tA3($elm$core$Elm$JsArray$foldr, func, baseCase, tail),\n\t\t\ttree);\n\t});\nvar $elm$core$Array$toList = function (array) {\n\treturn A3($elm$core$Array$foldr, $elm$core$List$cons, _List_Nil, array);\n};\nvar $elm$core$Result$Err = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$json$Json$Decode$Failure = F2(\n\tfunction (a, b) {\n\t\treturn {$: 3, a: a, b: b};\n\t});\nvar $elm$json$Json$Decode$Field = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $elm$json$Json$Decode$Index = F2(\n\tfunction (a, b) {\n\t\treturn {$: 1, a: a, b: b};\n\t});\nvar $elm$core$Result$Ok = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$json$Json$Decode$OneOf = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$core$Basics$False = 1;\nvar $elm$core$Basics$add = _Basics_add;\nvar $elm$core$Maybe$Just = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$core$Maybe$Nothing = {$: 1};\nvar $elm$core$String$all = _String_all;\nvar $elm$core$Basics$and = _Basics_and;\nvar $elm$core$Basics$append = _Utils_append;\nvar $elm$json$Json$Encode$encode = _Json_encode;\nvar $elm$core$String$fromInt = _String_fromNumber;\nvar $elm$core$String$join = F2(\n\tfunction (sep, chunks) {\n\t\treturn A2(\n\t\t\t_String_join,\n\t\t\tsep,\n\t\t\t_List_toArray(chunks));\n\t});\nvar $elm$core$String$split = F2(\n\tfunction (sep, string) {\n\t\treturn _List_fromArray(\n\t\t\tA2(_String_split, sep, string));\n\t});\nvar $elm$json$Json$Decode$indent = function (str) {\n\treturn A2(\n\t\t$elm$core$String$join,\n\t\t'\\n ',\n\t\tA2($elm$core$String$split, '\\n', str));\n};\nvar $elm$core$List$foldl = F3(\n\tfunction (func, acc, list) {\n\t\tfoldl:\n\t\twhile (true) {\n\t\t\tif (!list.b) {\n\t\t\t\treturn acc;\n\t\t\t} else {\n\t\t\t\tvar x = list.a;\n\t\t\t\tvar xs = list.b;\n\t\t\t\tvar $temp$func = func,\n\t\t\t\t\t$temp$acc = A2(func, x, acc),\n\t\t\t\t\t$temp$list = xs;\n\t\t\t\tfunc = $temp$func;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tlist = $temp$list;\n\t\t\t\tcontinue foldl;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$length = function (xs) {\n\treturn A3(\n\t\t$elm$core$List$foldl,\n\t\tF2(\n\t\t\tfunction (_v0, i) {\n\t\t\t\treturn i + 1;\n\t\t\t}),\n\t\t0,\n\t\txs);\n};\nvar $elm$core$List$map2 = _List_map2;\nvar $elm$core$Basics$le = _Utils_le;\nvar $elm$core$Basics$sub = _Basics_sub;\nvar $elm$core$List$rangeHelp = F3(\n\tfunction (lo, hi, list) {\n\t\trangeHelp:\n\t\twhile (true) {\n\t\t\tif (_Utils_cmp(lo, hi) < 1) {\n\t\t\t\tvar $temp$lo = lo,\n\t\t\t\t\t$temp$hi = hi - 1,\n\t\t\t\t\t$temp$list = A2($elm$core$List$cons, hi, list);\n\t\t\t\tlo = $temp$lo;\n\t\t\t\thi = $temp$hi;\n\t\t\t\tlist = $temp$list;\n\t\t\t\tcontinue rangeHelp;\n\t\t\t} else {\n\t\t\t\treturn list;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$range = F2(\n\tfunction (lo, hi) {\n\t\treturn A3($elm$core$List$rangeHelp, lo, hi, _List_Nil);\n\t});\nvar $elm$core$List$indexedMap = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$map2,\n\t\t\tf,\n\t\t\tA2(\n\t\t\t\t$elm$core$List$range,\n\t\t\t\t0,\n\t\t\t\t$elm$core$List$length(xs) - 1),\n\t\t\txs);\n\t});\nvar $elm$core$Char$toCode = _Char_toCode;\nvar $elm$core$Char$isLower = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (97 <= code) && (code <= 122);\n};\nvar $elm$core$Char$isUpper = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (code <= 90) && (65 <= code);\n};\nvar $elm$core$Basics$or = _Basics_or;\nvar $elm$core$Char$isAlpha = function (_char) {\n\treturn $elm$core$Char$isLower(_char) || $elm$core$Char$isUpper(_char);\n};\nvar $elm$core$Char$isDigit = function (_char) {\n\tvar code = $elm$core$Char$toCode(_char);\n\treturn (code <= 57) && (48 <= code);\n};\nvar $elm$core$Char$isAlphaNum = function (_char) {\n\treturn $elm$core$Char$isLower(_char) || ($elm$core$Char$isUpper(_char) || $elm$core$Char$isDigit(_char));\n};\nvar $elm$core$List$reverse = function (list) {\n\treturn A3($elm$core$List$foldl, $elm$core$List$cons, _List_Nil, list);\n};\nvar $elm$core$String$uncons = _String_uncons;\nvar $elm$json$Json$Decode$errorOneOf = F2(\n\tfunction (i, error) {\n\t\treturn '\\n\\n(' + ($elm$core$String$fromInt(i + 1) + (') ' + $elm$json$Json$Decode$indent(\n\t\t\t$elm$json$Json$Decode$errorToString(error))));\n\t});\nvar $elm$json$Json$Decode$errorToString = function (error) {\n\treturn A2($elm$json$Json$Decode$errorToStringHelp, error, _List_Nil);\n};\nvar $elm$json$Json$Decode$errorToStringHelp = F2(\n\tfunction (error, context) {\n\t\terrorToStringHelp:\n\t\twhile (true) {\n\t\t\tswitch (error.$) {\n\t\t\t\tcase 0:\n\t\t\t\t\tvar f = error.a;\n\t\t\t\t\tvar err = error.b;\n\t\t\t\t\tvar isSimple = function () {\n\t\t\t\t\t\tvar _v1 = $elm$core$String$uncons(f);\n\t\t\t\t\t\tif (_v1.$ === 1) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar _v2 = _v1.a;\n\t\t\t\t\t\t\tvar _char = _v2.a;\n\t\t\t\t\t\t\tvar rest = _v2.b;\n\t\t\t\t\t\t\treturn $elm$core$Char$isAlpha(_char) && A2($elm$core$String$all, $elm$core$Char$isAlphaNum, rest);\n\t\t\t\t\t\t}\n\t\t\t\t\t}();\n\t\t\t\t\tvar fieldName = isSimple ? ('.' + f) : ('[\\'' + (f + '\\']'));\n\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t$temp$context = A2($elm$core$List$cons, fieldName, context);\n\t\t\t\t\terror = $temp$error;\n\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\tcase 1:\n\t\t\t\t\tvar i = error.a;\n\t\t\t\t\tvar err = error.b;\n\t\t\t\t\tvar indexName = '[' + ($elm$core$String$fromInt(i) + ']');\n\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t$temp$context = A2($elm$core$List$cons, indexName, context);\n\t\t\t\t\terror = $temp$error;\n\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\tcase 2:\n\t\t\t\t\tvar errors = error.a;\n\t\t\t\t\tif (!errors.b) {\n\t\t\t\t\t\treturn 'Ran into a Json.Decode.oneOf with no possibilities' + function () {\n\t\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\t\treturn '!';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn ' at json' + A2(\n\t\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t$elm$core$List$reverse(context));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!errors.b.b) {\n\t\t\t\t\t\t\tvar err = errors.a;\n\t\t\t\t\t\t\tvar $temp$error = err,\n\t\t\t\t\t\t\t\t$temp$context = context;\n\t\t\t\t\t\t\terror = $temp$error;\n\t\t\t\t\t\t\tcontext = $temp$context;\n\t\t\t\t\t\t\tcontinue errorToStringHelp;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar starter = function () {\n\t\t\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\t\t\treturn 'Json.Decode.oneOf';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn 'The Json.Decode.oneOf at json' + A2(\n\t\t\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t\t\t$elm$core$List$reverse(context));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}();\n\t\t\t\t\t\t\tvar introduction = starter + (' failed in the following ' + ($elm$core$String$fromInt(\n\t\t\t\t\t\t\t\t$elm$core$List$length(errors)) + ' ways:'));\n\t\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t'\\n\\n',\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t\t\t\t\tintroduction,\n\t\t\t\t\t\t\t\t\tA2($elm$core$List$indexedMap, $elm$json$Json$Decode$errorOneOf, errors)));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tvar msg = error.a;\n\t\t\t\t\tvar json = error.b;\n\t\t\t\t\tvar introduction = function () {\n\t\t\t\t\t\tif (!context.b) {\n\t\t\t\t\t\t\treturn 'Problem with the given value:\\n\\n';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn 'Problem with the value at json' + (A2(\n\t\t\t\t\t\t\t\t$elm$core$String$join,\n\t\t\t\t\t\t\t\t'',\n\t\t\t\t\t\t\t\t$elm$core$List$reverse(context)) + ':\\n\\n ');\n\t\t\t\t\t\t}\n\t\t\t\t\t}();\n\t\t\t\t\treturn introduction + ($elm$json$Json$Decode$indent(\n\t\t\t\t\t\tA2($elm$json$Json$Encode$encode, 4, json)) + ('\\n\\n' + msg));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Array$branchFactor = 32;\nvar $elm$core$Array$Array_elm_builtin = F4(\n\tfunction (a, b, c, d) {\n\t\treturn {$: 0, a: a, b: b, c: c, d: d};\n\t});\nvar $elm$core$Elm$JsArray$empty = _JsArray_empty;\nvar $elm$core$Basics$ceiling = _Basics_ceiling;\nvar $elm$core$Basics$fdiv = _Basics_fdiv;\nvar $elm$core$Basics$logBase = F2(\n\tfunction (base, number) {\n\t\treturn _Basics_log(number) / _Basics_log(base);\n\t});\nvar $elm$core$Basics$toFloat = _Basics_toFloat;\nvar $elm$core$Array$shiftStep = $elm$core$Basics$ceiling(\n\tA2($elm$core$Basics$logBase, 2, $elm$core$Array$branchFactor));\nvar $elm$core$Array$empty = A4($elm$core$Array$Array_elm_builtin, 0, $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, $elm$core$Elm$JsArray$empty);\nvar $elm$core$Elm$JsArray$initialize = _JsArray_initialize;\nvar $elm$core$Array$Leaf = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$core$Basics$apL = F2(\n\tfunction (f, x) {\n\t\treturn f(x);\n\t});\nvar $elm$core$Basics$apR = F2(\n\tfunction (x, f) {\n\t\treturn f(x);\n\t});\nvar $elm$core$Basics$eq = _Utils_equal;\nvar $elm$core$Basics$floor = _Basics_floor;\nvar $elm$core$Elm$JsArray$length = _JsArray_length;\nvar $elm$core$Basics$gt = _Utils_gt;\nvar $elm$core$Basics$max = F2(\n\tfunction (x, y) {\n\t\treturn (_Utils_cmp(x, y) > 0) ? x : y;\n\t});\nvar $elm$core$Basics$mul = _Basics_mul;\nvar $elm$core$Array$SubTree = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$core$Elm$JsArray$initializeFromList = _JsArray_initializeFromList;\nvar $elm$core$Array$compressNodes = F2(\n\tfunction (nodes, acc) {\n\t\tcompressNodes:\n\t\twhile (true) {\n\t\t\tvar _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodes);\n\t\t\tvar node = _v0.a;\n\t\t\tvar remainingNodes = _v0.b;\n\t\t\tvar newAcc = A2(\n\t\t\t\t$elm$core$List$cons,\n\t\t\t\t$elm$core$Array$SubTree(node),\n\t\t\t\tacc);\n\t\t\tif (!remainingNodes.b) {\n\t\t\t\treturn $elm$core$List$reverse(newAcc);\n\t\t\t} else {\n\t\t\t\tvar $temp$nodes = remainingNodes,\n\t\t\t\t\t$temp$acc = newAcc;\n\t\t\t\tnodes = $temp$nodes;\n\t\t\t\tacc = $temp$acc;\n\t\t\t\tcontinue compressNodes;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Tuple$first = function (_v0) {\n\tvar x = _v0.a;\n\treturn x;\n};\nvar $elm$core$Array$treeFromBuilder = F2(\n\tfunction (nodeList, nodeListSize) {\n\t\ttreeFromBuilder:\n\t\twhile (true) {\n\t\t\tvar newNodeSize = $elm$core$Basics$ceiling(nodeListSize / $elm$core$Array$branchFactor);\n\t\t\tif (newNodeSize === 1) {\n\t\t\t\treturn A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodeList).a;\n\t\t\t} else {\n\t\t\t\tvar $temp$nodeList = A2($elm$core$Array$compressNodes, nodeList, _List_Nil),\n\t\t\t\t\t$temp$nodeListSize = newNodeSize;\n\t\t\t\tnodeList = $temp$nodeList;\n\t\t\t\tnodeListSize = $temp$nodeListSize;\n\t\t\t\tcontinue treeFromBuilder;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Array$builderToArray = F2(\n\tfunction (reverseNodeList, builder) {\n\t\tif (!builder.g) {\n\t\t\treturn A4(\n\t\t\t\t$elm$core$Array$Array_elm_builtin,\n\t\t\t\t$elm$core$Elm$JsArray$length(builder.h),\n\t\t\t\t$elm$core$Array$shiftStep,\n\t\t\t\t$elm$core$Elm$JsArray$empty,\n\t\t\t\tbuilder.h);\n\t\t} else {\n\t\t\tvar treeLen = builder.g * $elm$core$Array$branchFactor;\n\t\t\tvar depth = $elm$core$Basics$floor(\n\t\t\t\tA2($elm$core$Basics$logBase, $elm$core$Array$branchFactor, treeLen - 1));\n\t\t\tvar correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.i) : builder.i;\n\t\t\tvar tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.g);\n\t\t\treturn A4(\n\t\t\t\t$elm$core$Array$Array_elm_builtin,\n\t\t\t\t$elm$core$Elm$JsArray$length(builder.h) + treeLen,\n\t\t\t\tA2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep),\n\t\t\t\ttree,\n\t\t\t\tbuilder.h);\n\t\t}\n\t});\nvar $elm$core$Basics$idiv = _Basics_idiv;\nvar $elm$core$Basics$lt = _Utils_lt;\nvar $elm$core$Array$initializeHelp = F5(\n\tfunction (fn, fromIndex, len, nodeList, tail) {\n\t\tinitializeHelp:\n\t\twhile (true) {\n\t\t\tif (fromIndex < 0) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Array$builderToArray,\n\t\t\t\t\tfalse,\n\t\t\t\t\t{i: nodeList, g: (len / $elm$core$Array$branchFactor) | 0, h: tail});\n\t\t\t} else {\n\t\t\t\tvar leaf = $elm$core$Array$Leaf(\n\t\t\t\t\tA3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn));\n\t\t\t\tvar $temp$fn = fn,\n\t\t\t\t\t$temp$fromIndex = fromIndex - $elm$core$Array$branchFactor,\n\t\t\t\t\t$temp$len = len,\n\t\t\t\t\t$temp$nodeList = A2($elm$core$List$cons, leaf, nodeList),\n\t\t\t\t\t$temp$tail = tail;\n\t\t\t\tfn = $temp$fn;\n\t\t\t\tfromIndex = $temp$fromIndex;\n\t\t\t\tlen = $temp$len;\n\t\t\t\tnodeList = $temp$nodeList;\n\t\t\t\ttail = $temp$tail;\n\t\t\t\tcontinue initializeHelp;\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Basics$remainderBy = _Basics_remainderBy;\nvar $elm$core$Array$initialize = F2(\n\tfunction (len, fn) {\n\t\tif (len <= 0) {\n\t\t\treturn $elm$core$Array$empty;\n\t\t} else {\n\t\t\tvar tailLen = len % $elm$core$Array$branchFactor;\n\t\t\tvar tail = A3($elm$core$Elm$JsArray$initialize, tailLen, len - tailLen, fn);\n\t\t\tvar initialFromIndex = (len - tailLen) - $elm$core$Array$branchFactor;\n\t\t\treturn A5($elm$core$Array$initializeHelp, fn, initialFromIndex, len, _List_Nil, tail);\n\t\t}\n\t});\nvar $elm$core$Basics$True = 0;\nvar $elm$core$Result$isOk = function (result) {\n\tif (!result.$) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$json$Json$Decode$map = _Json_map1;\nvar $elm$json$Json$Decode$map2 = _Json_map2;\nvar $elm$json$Json$Decode$succeed = _Json_succeed;\nvar $elm$virtual_dom$VirtualDom$toHandlerInt = function (handler) {\n\tswitch (handler.$) {\n\t\tcase 0:\n\t\t\treturn 0;\n\t\tcase 1:\n\t\t\treturn 1;\n\t\tcase 2:\n\t\t\treturn 2;\n\t\tdefault:\n\t\t\treturn 3;\n\t}\n};\nvar $elm$browser$Browser$External = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$browser$Browser$Internal = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$core$Basics$identity = function (x) {\n\treturn x;\n};\nvar $elm$browser$Browser$Dom$NotFound = $elm$core$Basics$identity;\nvar $elm$url$Url$Http = 0;\nvar $elm$url$Url$Https = 1;\nvar $elm$url$Url$Url = F6(\n\tfunction (protocol, host, port_, path, query, fragment) {\n\t\treturn {dw: fragment, e6: host, dX: path, dZ: port_, d2: protocol, cS: query};\n\t});\nvar $elm$core$String$contains = _String_contains;\nvar $elm$core$String$length = _String_length;\nvar $elm$core$String$slice = _String_slice;\nvar $elm$core$String$dropLeft = F2(\n\tfunction (n, string) {\n\t\treturn (n < 1) ? string : A3(\n\t\t\t$elm$core$String$slice,\n\t\t\tn,\n\t\t\t$elm$core$String$length(string),\n\t\t\tstring);\n\t});\nvar $elm$core$String$indexes = _String_indexes;\nvar $elm$core$String$isEmpty = function (string) {\n\treturn string === '';\n};\nvar $elm$core$String$left = F2(\n\tfunction (n, string) {\n\t\treturn (n < 1) ? '' : A3($elm$core$String$slice, 0, n, string);\n\t});\nvar $elm$core$String$toInt = _String_toInt;\nvar $elm$url$Url$chompBeforePath = F5(\n\tfunction (protocol, path, params, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str) || A2($elm$core$String$contains, '@', str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, ':', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t\tA6($elm$url$Url$Url, protocol, str, $elm$core$Maybe$Nothing, path, params, frag));\n\t\t\t} else {\n\t\t\t\tif (!_v0.b.b) {\n\t\t\t\t\tvar i = _v0.a;\n\t\t\t\t\tvar _v1 = $elm$core$String$toInt(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str));\n\t\t\t\t\tif (_v1.$ === 1) {\n\t\t\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar port_ = _v1;\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t\t\t\tA6(\n\t\t\t\t\t\t\t\t$elm$url$Url$Url,\n\t\t\t\t\t\t\t\tprotocol,\n\t\t\t\t\t\t\t\tA2($elm$core$String$left, i, str),\n\t\t\t\t\t\t\t\tport_,\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tparams,\n\t\t\t\t\t\t\t\tfrag));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompBeforeQuery = F4(\n\tfunction (protocol, params, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '/', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A5($elm$url$Url$chompBeforePath, protocol, '/', params, frag, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$url$Url$chompBeforePath,\n\t\t\t\t\tprotocol,\n\t\t\t\t\tA2($elm$core$String$dropLeft, i, str),\n\t\t\t\t\tparams,\n\t\t\t\t\tfrag,\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompBeforeFragment = F3(\n\tfunction (protocol, frag, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '?', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A4($elm$url$Url$chompBeforeQuery, protocol, $elm$core$Maybe$Nothing, frag, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A4(\n\t\t\t\t\t$elm$url$Url$chompBeforeQuery,\n\t\t\t\t\tprotocol,\n\t\t\t\t\t$elm$core$Maybe$Just(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str)),\n\t\t\t\t\tfrag,\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$url$Url$chompAfterProtocol = F2(\n\tfunction (protocol, str) {\n\t\tif ($elm$core$String$isEmpty(str)) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar _v0 = A2($elm$core$String$indexes, '#', str);\n\t\t\tif (!_v0.b) {\n\t\t\t\treturn A3($elm$url$Url$chompBeforeFragment, protocol, $elm$core$Maybe$Nothing, str);\n\t\t\t} else {\n\t\t\t\tvar i = _v0.a;\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$url$Url$chompBeforeFragment,\n\t\t\t\t\tprotocol,\n\t\t\t\t\t$elm$core$Maybe$Just(\n\t\t\t\t\t\tA2($elm$core$String$dropLeft, i + 1, str)),\n\t\t\t\t\tA2($elm$core$String$left, i, str));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$String$startsWith = _String_startsWith;\nvar $elm$url$Url$fromString = function (str) {\n\treturn A2($elm$core$String$startsWith, 'http://', str) ? A2(\n\t\t$elm$url$Url$chompAfterProtocol,\n\t\t0,\n\t\tA2($elm$core$String$dropLeft, 7, str)) : (A2($elm$core$String$startsWith, 'https://', str) ? A2(\n\t\t$elm$url$Url$chompAfterProtocol,\n\t\t1,\n\t\tA2($elm$core$String$dropLeft, 8, str)) : $elm$core$Maybe$Nothing);\n};\nvar $elm$core$Basics$never = function (_v0) {\n\tnever:\n\twhile (true) {\n\t\tvar nvr = _v0;\n\t\tvar $temp$_v0 = nvr;\n\t\t_v0 = $temp$_v0;\n\t\tcontinue never;\n\t}\n};\nvar $elm$core$Task$Perform = $elm$core$Basics$identity;\nvar $elm$core$Task$succeed = _Scheduler_succeed;\nvar $elm$core$Task$init = $elm$core$Task$succeed(0);\nvar $elm$core$List$foldrHelper = F4(\n\tfunction (fn, acc, ctr, ls) {\n\t\tif (!ls.b) {\n\t\t\treturn acc;\n\t\t} else {\n\t\t\tvar a = ls.a;\n\t\t\tvar r1 = ls.b;\n\t\t\tif (!r1.b) {\n\t\t\t\treturn A2(fn, a, acc);\n\t\t\t} else {\n\t\t\t\tvar b = r1.a;\n\t\t\t\tvar r2 = r1.b;\n\t\t\t\tif (!r2.b) {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\tfn,\n\t\t\t\t\t\ta,\n\t\t\t\t\t\tA2(fn, b, acc));\n\t\t\t\t} else {\n\t\t\t\t\tvar c = r2.a;\n\t\t\t\t\tvar r3 = r2.b;\n\t\t\t\t\tif (!r3.b) {\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\ta,\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\tb,\n\t\t\t\t\t\t\t\tA2(fn, c, acc)));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar d = r3.a;\n\t\t\t\t\t\tvar r4 = r3.b;\n\t\t\t\t\t\tvar res = (ctr > 500) ? A3(\n\t\t\t\t\t\t\t$elm$core$List$foldl,\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\tacc,\n\t\t\t\t\t\t\t$elm$core$List$reverse(r4)) : A4($elm$core$List$foldrHelper, fn, acc, ctr + 1, r4);\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\ta,\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\tb,\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\t\tc,\n\t\t\t\t\t\t\t\t\tA2(fn, d, res))));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$List$foldr = F3(\n\tfunction (fn, acc, ls) {\n\t\treturn A4($elm$core$List$foldrHelper, fn, acc, 0, ls);\n\t});\nvar $elm$core$List$map = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\tF2(\n\t\t\t\tfunction (x, acc) {\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$core$List$cons,\n\t\t\t\t\t\tf(x),\n\t\t\t\t\t\tacc);\n\t\t\t\t}),\n\t\t\t_List_Nil,\n\t\t\txs);\n\t});\nvar $elm$core$Task$andThen = _Scheduler_andThen;\nvar $elm$core$Task$map = F2(\n\tfunction (func, taskA) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (a) {\n\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\tfunc(a));\n\t\t\t},\n\t\t\ttaskA);\n\t});\nvar $elm$core$Task$map2 = F3(\n\tfunction (func, taskA, taskB) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (a) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\tfunction (b) {\n\t\t\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\t\t\tA2(func, a, b));\n\t\t\t\t\t},\n\t\t\t\t\ttaskB);\n\t\t\t},\n\t\t\ttaskA);\n\t});\nvar $elm$core$Task$sequence = function (tasks) {\n\treturn A3(\n\t\t$elm$core$List$foldr,\n\t\t$elm$core$Task$map2($elm$core$List$cons),\n\t\t$elm$core$Task$succeed(_List_Nil),\n\t\ttasks);\n};\nvar $elm$core$Platform$sendToApp = _Platform_sendToApp;\nvar $elm$core$Task$spawnCmd = F2(\n\tfunction (router, _v0) {\n\t\tvar task = _v0;\n\t\treturn _Scheduler_spawn(\n\t\t\tA2(\n\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t$elm$core$Platform$sendToApp(router),\n\t\t\t\ttask));\n\t});\nvar $elm$core$Task$onEffects = F3(\n\tfunction (router, commands, state) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$map,\n\t\t\tfunction (_v0) {\n\t\t\t\treturn 0;\n\t\t\t},\n\t\t\t$elm$core$Task$sequence(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t$elm$core$Task$spawnCmd(router),\n\t\t\t\t\tcommands)));\n\t});\nvar $elm$core$Task$onSelfMsg = F3(\n\tfunction (_v0, _v1, _v2) {\n\t\treturn $elm$core$Task$succeed(0);\n\t});\nvar $elm$core$Task$cmdMap = F2(\n\tfunction (tagger, _v0) {\n\t\tvar task = _v0;\n\t\treturn A2($elm$core$Task$map, tagger, task);\n\t});\n_Platform_effectManagers['Task'] = _Platform_createManager($elm$core$Task$init, $elm$core$Task$onEffects, $elm$core$Task$onSelfMsg, $elm$core$Task$cmdMap);\nvar $elm$core$Task$command = _Platform_leaf('Task');\nvar $elm$core$Task$perform = F2(\n\tfunction (toMessage, task) {\n\t\treturn $elm$core$Task$command(\n\t\t\tA2($elm$core$Task$map, toMessage, task));\n\t});\nvar $elm$browser$Browser$application = _Browser_application;\nvar $elm$core$Basics$composeR = F3(\n\tfunction (f, g, x) {\n\t\treturn g(\n\t\t\tf(x));\n\t});\nvar $author$project$Main$Model = F2(\n\tfunction (shared, page) {\n\t\treturn {C: page, x: shared};\n\t});\nvar $author$project$Main$Pages = function (a) {\n\treturn {$: 3, a: a};\n};\nvar $author$project$Main$Shared = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$core$Platform$Cmd$batch = _Platform_batch;\nvar $author$project$Spa$Generated$Route$NotFound = {$: 2};\nvar $elm$url$Url$Parser$State = F5(\n\tfunction (visited, unvisited, params, frag, value) {\n\t\treturn {S: frag, fB: params, N: unvisited, ez: value, W: visited};\n\t});\nvar $elm$url$Url$Parser$getFirstMatch = function (states) {\n\tgetFirstMatch:\n\twhile (true) {\n\t\tif (!states.b) {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t} else {\n\t\t\tvar state = states.a;\n\t\t\tvar rest = states.b;\n\t\t\tvar _v1 = state.N;\n\t\t\tif (!_v1.b) {\n\t\t\t\treturn $elm$core$Maybe$Just(state.ez);\n\t\t\t} else {\n\t\t\t\tif ((_v1.a === '') && (!_v1.b.b)) {\n\t\t\t\t\treturn $elm$core$Maybe$Just(state.ez);\n\t\t\t\t} else {\n\t\t\t\t\tvar $temp$states = rest;\n\t\t\t\t\tstates = $temp$states;\n\t\t\t\t\tcontinue getFirstMatch;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\nvar $elm$url$Url$Parser$removeFinalEmpty = function (segments) {\n\tif (!segments.b) {\n\t\treturn _List_Nil;\n\t} else {\n\t\tif ((segments.a === '') && (!segments.b.b)) {\n\t\t\treturn _List_Nil;\n\t\t} else {\n\t\t\tvar segment = segments.a;\n\t\t\tvar rest = segments.b;\n\t\t\treturn A2(\n\t\t\t\t$elm$core$List$cons,\n\t\t\t\tsegment,\n\t\t\t\t$elm$url$Url$Parser$removeFinalEmpty(rest));\n\t\t}\n\t}\n};\nvar $elm$url$Url$Parser$preparePath = function (path) {\n\tvar _v0 = A2($elm$core$String$split, '/', path);\n\tif (_v0.b && (_v0.a === '')) {\n\t\tvar segments = _v0.b;\n\t\treturn $elm$url$Url$Parser$removeFinalEmpty(segments);\n\t} else {\n\t\tvar segments = _v0;\n\t\treturn $elm$url$Url$Parser$removeFinalEmpty(segments);\n\t}\n};\nvar $elm$url$Url$Parser$addToParametersHelp = F2(\n\tfunction (value, maybeList) {\n\t\tif (maybeList.$ === 1) {\n\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[value]));\n\t\t} else {\n\t\t\tvar list = maybeList.a;\n\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\tA2($elm$core$List$cons, value, list));\n\t\t}\n\t});\nvar $elm$url$Url$percentDecode = _Url_percentDecode;\nvar $elm$core$Basics$compare = _Utils_compare;\nvar $elm$core$Dict$get = F2(\n\tfunction (targetKey, dict) {\n\t\tget:\n\t\twhile (true) {\n\t\t\tif (dict.$ === -2) {\n\t\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t\t} else {\n\t\t\t\tvar key = dict.b;\n\t\t\t\tvar value = dict.c;\n\t\t\t\tvar left = dict.d;\n\t\t\t\tvar right = dict.e;\n\t\t\t\tvar _v1 = A2($elm$core$Basics$compare, targetKey, key);\n\t\t\t\tswitch (_v1) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tvar $temp$targetKey = targetKey,\n\t\t\t\t\t\t\t$temp$dict = left;\n\t\t\t\t\t\ttargetKey = $temp$targetKey;\n\t\t\t\t\t\tdict = $temp$dict;\n\t\t\t\t\t\tcontinue get;\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(value);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar $temp$targetKey = targetKey,\n\t\t\t\t\t\t\t$temp$dict = right;\n\t\t\t\t\t\ttargetKey = $temp$targetKey;\n\t\t\t\t\t\tdict = $temp$dict;\n\t\t\t\t\t\tcontinue get;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$Black = 1;\nvar $elm$core$Dict$RBNode_elm_builtin = F5(\n\tfunction (a, b, c, d, e) {\n\t\treturn {$: -1, a: a, b: b, c: c, d: d, e: e};\n\t});\nvar $elm$core$Dict$RBEmpty_elm_builtin = {$: -2};\nvar $elm$core$Dict$Red = 0;\nvar $elm$core$Dict$balance = F5(\n\tfunction (color, key, value, left, right) {\n\t\tif ((right.$ === -1) && (!right.a)) {\n\t\t\tvar _v1 = right.a;\n\t\t\tvar rK = right.b;\n\t\t\tvar rV = right.c;\n\t\t\tvar rLeft = right.d;\n\t\t\tvar rRight = right.e;\n\t\t\tif ((left.$ === -1) && (!left.a)) {\n\t\t\t\tvar _v3 = left.a;\n\t\t\t\tvar lK = left.b;\n\t\t\t\tvar lV = left.c;\n\t\t\t\tvar lLeft = left.d;\n\t\t\t\tvar lRight = left.e;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t0,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\tcolor,\n\t\t\t\t\trK,\n\t\t\t\t\trV,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, left, rLeft),\n\t\t\t\t\trRight);\n\t\t\t}\n\t\t} else {\n\t\t\tif ((((left.$ === -1) && (!left.a)) && (left.d.$ === -1)) && (!left.d.a)) {\n\t\t\t\tvar _v5 = left.a;\n\t\t\t\tvar lK = left.b;\n\t\t\t\tvar lV = left.c;\n\t\t\t\tvar _v6 = left.d;\n\t\t\t\tvar _v7 = _v6.a;\n\t\t\t\tvar llK = _v6.b;\n\t\t\t\tvar llV = _v6.c;\n\t\t\t\tvar llLeft = _v6.d;\n\t\t\t\tvar llRight = _v6.e;\n\t\t\t\tvar lRight = left.e;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t0,\n\t\t\t\t\tlK,\n\t\t\t\t\tlV,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, llK, llV, llLeft, llRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, key, value, lRight, right));\n\t\t\t} else {\n\t\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right);\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$insertHelp = F3(\n\tfunction (key, value, dict) {\n\t\tif (dict.$ === -2) {\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin);\n\t\t} else {\n\t\t\tvar nColor = dict.a;\n\t\t\tvar nKey = dict.b;\n\t\t\tvar nValue = dict.c;\n\t\t\tvar nLeft = dict.d;\n\t\t\tvar nRight = dict.e;\n\t\t\tvar _v1 = A2($elm$core$Basics$compare, key, nKey);\n\t\t\tswitch (_v1) {\n\t\t\t\tcase 0:\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\tA3($elm$core$Dict$insertHelp, key, value, nLeft),\n\t\t\t\t\t\tnRight);\n\t\t\t\tcase 1:\n\t\t\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight);\n\t\t\t\tdefault:\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\tnLeft,\n\t\t\t\t\t\tA3($elm$core$Dict$insertHelp, key, value, nRight));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$insert = F3(\n\tfunction (key, value, dict) {\n\t\tvar _v0 = A3($elm$core$Dict$insertHelp, key, value, dict);\n\t\tif ((_v0.$ === -1) && (!_v0.a)) {\n\t\t\tvar _v1 = _v0.a;\n\t\t\tvar k = _v0.b;\n\t\t\tvar v = _v0.c;\n\t\t\tvar l = _v0.d;\n\t\t\tvar r = _v0.e;\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, 1, k, v, l, r);\n\t\t} else {\n\t\t\tvar x = _v0;\n\t\t\treturn x;\n\t\t}\n\t});\nvar $elm$core$Dict$getMin = function (dict) {\n\tgetMin:\n\twhile (true) {\n\t\tif ((dict.$ === -1) && (dict.d.$ === -1)) {\n\t\t\tvar left = dict.d;\n\t\t\tvar $temp$dict = left;\n\t\t\tdict = $temp$dict;\n\t\t\tcontinue getMin;\n\t\t} else {\n\t\t\treturn dict;\n\t\t}\n\t}\n};\nvar $elm$core$Dict$moveRedLeft = function (dict) {\n\tif (((dict.$ === -1) && (dict.d.$ === -1)) && (dict.e.$ === -1)) {\n\t\tif ((dict.e.d.$ === -1) && (!dict.e.d.a)) {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v1 = dict.d;\n\t\t\tvar lClr = _v1.a;\n\t\t\tvar lK = _v1.b;\n\t\t\tvar lV = _v1.c;\n\t\t\tvar lLeft = _v1.d;\n\t\t\tvar lRight = _v1.e;\n\t\t\tvar _v2 = dict.e;\n\t\t\tvar rClr = _v2.a;\n\t\t\tvar rK = _v2.b;\n\t\t\tvar rV = _v2.c;\n\t\t\tvar rLeft = _v2.d;\n\t\t\tvar _v3 = rLeft.a;\n\t\t\tvar rlK = rLeft.b;\n\t\t\tvar rlV = rLeft.c;\n\t\t\tvar rlL = rLeft.d;\n\t\t\tvar rlR = rLeft.e;\n\t\t\tvar rRight = _v2.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t0,\n\t\t\t\trlK,\n\t\t\t\trlV,\n\t\t\t\tA5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\trlL),\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, rK, rV, rlR, rRight));\n\t\t} else {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v4 = dict.d;\n\t\t\tvar lClr = _v4.a;\n\t\t\tvar lK = _v4.b;\n\t\t\tvar lV = _v4.c;\n\t\t\tvar lLeft = _v4.d;\n\t\t\tvar lRight = _v4.e;\n\t\t\tvar _v5 = dict.e;\n\t\t\tvar rClr = _v5.a;\n\t\t\tvar rK = _v5.b;\n\t\t\tvar rV = _v5.c;\n\t\t\tvar rLeft = _v5.d;\n\t\t\tvar rRight = _v5.e;\n\t\t\tif (clr === 1) {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn dict;\n\t}\n};\nvar $elm$core$Dict$moveRedRight = function (dict) {\n\tif (((dict.$ === -1) && (dict.d.$ === -1)) && (dict.e.$ === -1)) {\n\t\tif ((dict.d.d.$ === -1) && (!dict.d.d.a)) {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v1 = dict.d;\n\t\t\tvar lClr = _v1.a;\n\t\t\tvar lK = _v1.b;\n\t\t\tvar lV = _v1.c;\n\t\t\tvar _v2 = _v1.d;\n\t\t\tvar _v3 = _v2.a;\n\t\t\tvar llK = _v2.b;\n\t\t\tvar llV = _v2.c;\n\t\t\tvar llLeft = _v2.d;\n\t\t\tvar llRight = _v2.e;\n\t\t\tvar lRight = _v1.e;\n\t\t\tvar _v4 = dict.e;\n\t\t\tvar rClr = _v4.a;\n\t\t\tvar rK = _v4.b;\n\t\t\tvar rV = _v4.c;\n\t\t\tvar rLeft = _v4.d;\n\t\t\tvar rRight = _v4.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t0,\n\t\t\t\tlK,\n\t\t\t\tlV,\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 1, llK, llV, llLeft, llRight),\n\t\t\t\tA5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tlRight,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight)));\n\t\t} else {\n\t\t\tvar clr = dict.a;\n\t\t\tvar k = dict.b;\n\t\t\tvar v = dict.c;\n\t\t\tvar _v5 = dict.d;\n\t\t\tvar lClr = _v5.a;\n\t\t\tvar lK = _v5.b;\n\t\t\tvar lV = _v5.c;\n\t\t\tvar lLeft = _v5.d;\n\t\t\tvar lRight = _v5.e;\n\t\t\tvar _v6 = dict.e;\n\t\t\tvar rClr = _v6.a;\n\t\t\tvar rK = _v6.b;\n\t\t\tvar rV = _v6.c;\n\t\t\tvar rLeft = _v6.d;\n\t\t\tvar rRight = _v6.e;\n\t\t\tif (clr === 1) {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t1,\n\t\t\t\t\tk,\n\t\t\t\t\tv,\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight),\n\t\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight));\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn dict;\n\t}\n};\nvar $elm$core$Dict$removeHelpPrepEQGT = F7(\n\tfunction (targetKey, dict, color, key, value, left, right) {\n\t\tif ((left.$ === -1) && (!left.a)) {\n\t\t\tvar _v1 = left.a;\n\t\t\tvar lK = left.b;\n\t\t\tvar lV = left.c;\n\t\t\tvar lLeft = left.d;\n\t\t\tvar lRight = left.e;\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\tcolor,\n\t\t\t\tlK,\n\t\t\t\tlV,\n\t\t\t\tlLeft,\n\t\t\t\tA5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, lRight, right));\n\t\t} else {\n\t\t\t_v2$2:\n\t\t\twhile (true) {\n\t\t\t\tif ((right.$ === -1) && (right.a === 1)) {\n\t\t\t\t\tif (right.d.$ === -1) {\n\t\t\t\t\t\tif (right.d.a === 1) {\n\t\t\t\t\t\t\tvar _v3 = right.a;\n\t\t\t\t\t\t\tvar _v4 = right.d;\n\t\t\t\t\t\t\tvar _v5 = _v4.a;\n\t\t\t\t\t\t\treturn $elm$core$Dict$moveRedRight(dict);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbreak _v2$2;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _v6 = right.a;\n\t\t\t\t\t\tvar _v7 = right.d;\n\t\t\t\t\t\treturn $elm$core$Dict$moveRedRight(dict);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tbreak _v2$2;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dict;\n\t\t}\n\t});\nvar $elm$core$Dict$removeMin = function (dict) {\n\tif ((dict.$ === -1) && (dict.d.$ === -1)) {\n\t\tvar color = dict.a;\n\t\tvar key = dict.b;\n\t\tvar value = dict.c;\n\t\tvar left = dict.d;\n\t\tvar lColor = left.a;\n\t\tvar lLeft = left.d;\n\t\tvar right = dict.e;\n\t\tif (lColor === 1) {\n\t\t\tif ((lLeft.$ === -1) && (!lLeft.a)) {\n\t\t\t\tvar _v3 = lLeft.a;\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\tcolor,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\t$elm$core$Dict$removeMin(left),\n\t\t\t\t\tright);\n\t\t\t} else {\n\t\t\t\tvar _v4 = $elm$core$Dict$moveRedLeft(dict);\n\t\t\t\tif (_v4.$ === -1) {\n\t\t\t\t\tvar nColor = _v4.a;\n\t\t\t\t\tvar nKey = _v4.b;\n\t\t\t\t\tvar nValue = _v4.c;\n\t\t\t\t\tvar nLeft = _v4.d;\n\t\t\t\t\tvar nRight = _v4.e;\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tnColor,\n\t\t\t\t\t\tnKey,\n\t\t\t\t\t\tnValue,\n\t\t\t\t\t\t$elm$core$Dict$removeMin(nLeft),\n\t\t\t\t\t\tnRight);\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn A5(\n\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\tcolor,\n\t\t\t\tkey,\n\t\t\t\tvalue,\n\t\t\t\t$elm$core$Dict$removeMin(left),\n\t\t\t\tright);\n\t\t}\n\t} else {\n\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t}\n};\nvar $elm$core$Dict$removeHelp = F2(\n\tfunction (targetKey, dict) {\n\t\tif (dict.$ === -2) {\n\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t} else {\n\t\t\tvar color = dict.a;\n\t\t\tvar key = dict.b;\n\t\t\tvar value = dict.c;\n\t\t\tvar left = dict.d;\n\t\t\tvar right = dict.e;\n\t\t\tif (_Utils_cmp(targetKey, key) < 0) {\n\t\t\t\tif ((left.$ === -1) && (left.a === 1)) {\n\t\t\t\t\tvar _v4 = left.a;\n\t\t\t\t\tvar lLeft = left.d;\n\t\t\t\t\tif ((lLeft.$ === -1) && (!lLeft.a)) {\n\t\t\t\t\t\tvar _v6 = lLeft.a;\n\t\t\t\t\t\treturn A5(\n\t\t\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t\t\tcolor,\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, left),\n\t\t\t\t\t\t\tright);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar _v7 = $elm$core$Dict$moveRedLeft(dict);\n\t\t\t\t\t\tif (_v7.$ === -1) {\n\t\t\t\t\t\t\tvar nColor = _v7.a;\n\t\t\t\t\t\t\tvar nKey = _v7.b;\n\t\t\t\t\t\t\tvar nValue = _v7.c;\n\t\t\t\t\t\t\tvar nLeft = _v7.d;\n\t\t\t\t\t\t\tvar nRight = _v7.e;\n\t\t\t\t\t\t\treturn A5(\n\t\t\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\t\t\tnColor,\n\t\t\t\t\t\t\t\tnKey,\n\t\t\t\t\t\t\t\tnValue,\n\t\t\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, nLeft),\n\t\t\t\t\t\t\t\tnRight);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$RBNode_elm_builtin,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, left),\n\t\t\t\t\t\tright);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$core$Dict$removeHelpEQGT,\n\t\t\t\t\ttargetKey,\n\t\t\t\t\tA7($elm$core$Dict$removeHelpPrepEQGT, targetKey, dict, color, key, value, left, right));\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$removeHelpEQGT = F2(\n\tfunction (targetKey, dict) {\n\t\tif (dict.$ === -1) {\n\t\t\tvar color = dict.a;\n\t\t\tvar key = dict.b;\n\t\t\tvar value = dict.c;\n\t\t\tvar left = dict.d;\n\t\t\tvar right = dict.e;\n\t\t\tif (_Utils_eq(targetKey, key)) {\n\t\t\t\tvar _v1 = $elm$core$Dict$getMin(right);\n\t\t\t\tif (_v1.$ === -1) {\n\t\t\t\t\tvar minKey = _v1.b;\n\t\t\t\t\tvar minValue = _v1.c;\n\t\t\t\t\treturn A5(\n\t\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tminKey,\n\t\t\t\t\t\tminValue,\n\t\t\t\t\t\tleft,\n\t\t\t\t\t\t$elm$core$Dict$removeMin(right));\n\t\t\t\t} else {\n\t\t\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn A5(\n\t\t\t\t\t$elm$core$Dict$balance,\n\t\t\t\t\tcolor,\n\t\t\t\t\tkey,\n\t\t\t\t\tvalue,\n\t\t\t\t\tleft,\n\t\t\t\t\tA2($elm$core$Dict$removeHelp, targetKey, right));\n\t\t\t}\n\t\t} else {\n\t\t\treturn $elm$core$Dict$RBEmpty_elm_builtin;\n\t\t}\n\t});\nvar $elm$core$Dict$remove = F2(\n\tfunction (key, dict) {\n\t\tvar _v0 = A2($elm$core$Dict$removeHelp, key, dict);\n\t\tif ((_v0.$ === -1) && (!_v0.a)) {\n\t\t\tvar _v1 = _v0.a;\n\t\t\tvar k = _v0.b;\n\t\t\tvar v = _v0.c;\n\t\t\tvar l = _v0.d;\n\t\t\tvar r = _v0.e;\n\t\t\treturn A5($elm$core$Dict$RBNode_elm_builtin, 1, k, v, l, r);\n\t\t} else {\n\t\t\tvar x = _v0;\n\t\t\treturn x;\n\t\t}\n\t});\nvar $elm$core$Dict$update = F3(\n\tfunction (targetKey, alter, dictionary) {\n\t\tvar _v0 = alter(\n\t\t\tA2($elm$core$Dict$get, targetKey, dictionary));\n\t\tif (!_v0.$) {\n\t\t\tvar value = _v0.a;\n\t\t\treturn A3($elm$core$Dict$insert, targetKey, value, dictionary);\n\t\t} else {\n\t\t\treturn A2($elm$core$Dict$remove, targetKey, dictionary);\n\t\t}\n\t});\nvar $elm$url$Url$Parser$addParam = F2(\n\tfunction (segment, dict) {\n\t\tvar _v0 = A2($elm$core$String$split, '=', segment);\n\t\tif ((_v0.b && _v0.b.b) && (!_v0.b.b.b)) {\n\t\t\tvar rawKey = _v0.a;\n\t\t\tvar _v1 = _v0.b;\n\t\t\tvar rawValue = _v1.a;\n\t\t\tvar _v2 = $elm$url$Url$percentDecode(rawKey);\n\t\t\tif (_v2.$ === 1) {\n\t\t\t\treturn dict;\n\t\t\t} else {\n\t\t\t\tvar key = _v2.a;\n\t\t\t\tvar _v3 = $elm$url$Url$percentDecode(rawValue);\n\t\t\t\tif (_v3.$ === 1) {\n\t\t\t\t\treturn dict;\n\t\t\t\t} else {\n\t\t\t\t\tvar value = _v3.a;\n\t\t\t\t\treturn A3(\n\t\t\t\t\t\t$elm$core$Dict$update,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\t$elm$url$Url$Parser$addToParametersHelp(value),\n\t\t\t\t\t\tdict);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn dict;\n\t\t}\n\t});\nvar $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin;\nvar $elm$url$Url$Parser$prepareQuery = function (maybeQuery) {\n\tif (maybeQuery.$ === 1) {\n\t\treturn $elm$core$Dict$empty;\n\t} else {\n\t\tvar qry = maybeQuery.a;\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\t$elm$url$Url$Parser$addParam,\n\t\t\t$elm$core$Dict$empty,\n\t\t\tA2($elm$core$String$split, '&', qry));\n\t}\n};\nvar $elm$url$Url$Parser$parse = F2(\n\tfunction (_v0, url) {\n\t\tvar parser = _v0;\n\t\treturn $elm$url$Url$Parser$getFirstMatch(\n\t\t\tparser(\n\t\t\t\tA5(\n\t\t\t\t\t$elm$url$Url$Parser$State,\n\t\t\t\t\t_List_Nil,\n\t\t\t\t\t$elm$url$Url$Parser$preparePath(url.dX),\n\t\t\t\t\t$elm$url$Url$Parser$prepareQuery(url.cS),\n\t\t\t\t\turl.dw,\n\t\t\t\t\t$elm$core$Basics$identity)));\n\t});\nvar $author$project$Spa$Generated$Route$Login = {$: 1};\nvar $author$project$Spa$Generated$Route$Profile__Username_String = function (a) {\n\treturn {$: 6, a: a};\n};\nvar $author$project$Spa$Generated$Route$Projects = {$: 3};\nvar $author$project$Spa$Generated$Route$Register = {$: 4};\nvar $author$project$Spa$Generated$Route$Settings = {$: 5};\nvar $author$project$Spa$Generated$Route$Top = {$: 0};\nvar $elm$url$Url$Parser$Parser = $elm$core$Basics$identity;\nvar $elm$url$Url$Parser$mapState = F2(\n\tfunction (func, _v0) {\n\t\tvar visited = _v0.W;\n\t\tvar unvisited = _v0.N;\n\t\tvar params = _v0.fB;\n\t\tvar frag = _v0.S;\n\t\tvar value = _v0.ez;\n\t\treturn A5(\n\t\t\t$elm$url$Url$Parser$State,\n\t\t\tvisited,\n\t\t\tunvisited,\n\t\t\tparams,\n\t\t\tfrag,\n\t\t\tfunc(value));\n\t});\nvar $elm$url$Url$Parser$map = F2(\n\tfunction (subValue, _v0) {\n\t\tvar parseArg = _v0;\n\t\treturn function (_v1) {\n\t\t\tvar visited = _v1.W;\n\t\t\tvar unvisited = _v1.N;\n\t\t\tvar params = _v1.fB;\n\t\t\tvar frag = _v1.S;\n\t\t\tvar value = _v1.ez;\n\t\t\treturn A2(\n\t\t\t\t$elm$core$List$map,\n\t\t\t\t$elm$url$Url$Parser$mapState(value),\n\t\t\t\tparseArg(\n\t\t\t\t\tA5($elm$url$Url$Parser$State, visited, unvisited, params, frag, subValue)));\n\t\t};\n\t});\nvar $elm$core$List$append = F2(\n\tfunction (xs, ys) {\n\t\tif (!ys.b) {\n\t\t\treturn xs;\n\t\t} else {\n\t\t\treturn A3($elm$core$List$foldr, $elm$core$List$cons, ys, xs);\n\t\t}\n\t});\nvar $elm$core$List$concat = function (lists) {\n\treturn A3($elm$core$List$foldr, $elm$core$List$append, _List_Nil, lists);\n};\nvar $elm$core$List$concatMap = F2(\n\tfunction (f, list) {\n\t\treturn $elm$core$List$concat(\n\t\t\tA2($elm$core$List$map, f, list));\n\t});\nvar $elm$url$Url$Parser$oneOf = function (parsers) {\n\treturn function (state) {\n\t\treturn A2(\n\t\t\t$elm$core$List$concatMap,\n\t\t\tfunction (_v0) {\n\t\t\t\tvar parser = _v0;\n\t\t\t\treturn parser(state);\n\t\t\t},\n\t\t\tparsers);\n\t};\n};\nvar $elm$url$Url$Parser$s = function (str) {\n\treturn function (_v0) {\n\t\tvar visited = _v0.W;\n\t\tvar unvisited = _v0.N;\n\t\tvar params = _v0.fB;\n\t\tvar frag = _v0.S;\n\t\tvar value = _v0.ez;\n\t\tif (!unvisited.b) {\n\t\t\treturn _List_Nil;\n\t\t} else {\n\t\t\tvar next = unvisited.a;\n\t\t\tvar rest = unvisited.b;\n\t\t\treturn _Utils_eq(next, str) ? _List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA5(\n\t\t\t\t\t$elm$url$Url$Parser$State,\n\t\t\t\t\tA2($elm$core$List$cons, next, visited),\n\t\t\t\t\trest,\n\t\t\t\t\tparams,\n\t\t\t\t\tfrag,\n\t\t\t\t\tvalue)\n\t\t\t\t]) : _List_Nil;\n\t\t}\n\t};\n};\nvar $elm$url$Url$Parser$slash = F2(\n\tfunction (_v0, _v1) {\n\t\tvar parseBefore = _v0;\n\t\tvar parseAfter = _v1;\n\t\treturn function (state) {\n\t\t\treturn A2(\n\t\t\t\t$elm$core$List$concatMap,\n\t\t\t\tparseAfter,\n\t\t\t\tparseBefore(state));\n\t\t};\n\t});\nvar $elm$url$Url$Parser$custom = F2(\n\tfunction (tipe, stringToSomething) {\n\t\treturn function (_v0) {\n\t\t\tvar visited = _v0.W;\n\t\t\tvar unvisited = _v0.N;\n\t\t\tvar params = _v0.fB;\n\t\t\tvar frag = _v0.S;\n\t\t\tvar value = _v0.ez;\n\t\t\tif (!unvisited.b) {\n\t\t\t\treturn _List_Nil;\n\t\t\t} else {\n\t\t\t\tvar next = unvisited.a;\n\t\t\t\tvar rest = unvisited.b;\n\t\t\t\tvar _v2 = stringToSomething(next);\n\t\t\t\tif (!_v2.$) {\n\t\t\t\t\tvar nextValue = _v2.a;\n\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA5(\n\t\t\t\t\t\t\t$elm$url$Url$Parser$State,\n\t\t\t\t\t\t\tA2($elm$core$List$cons, next, visited),\n\t\t\t\t\t\t\trest,\n\t\t\t\t\t\t\tparams,\n\t\t\t\t\t\t\tfrag,\n\t\t\t\t\t\t\tvalue(nextValue))\n\t\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\treturn _List_Nil;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\nvar $elm$url$Url$Parser$string = A2($elm$url$Url$Parser$custom, 'STRING', $elm$core$Maybe$Just);\nvar $elm$url$Url$Parser$top = function (state) {\n\treturn _List_fromArray(\n\t\t[state]);\n};\nvar $author$project$Spa$Generated$Route$routes = $elm$url$Url$Parser$oneOf(\n\t_List_fromArray(\n\t\t[\n\t\t\tA2($elm$url$Url$Parser$map, $author$project$Spa$Generated$Route$Top, $elm$url$Url$Parser$top),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Login,\n\t\t\t$elm$url$Url$Parser$s('login')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$NotFound,\n\t\t\t$elm$url$Url$Parser$s('not-found')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Projects,\n\t\t\t$elm$url$Url$Parser$s('projects')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Register,\n\t\t\t$elm$url$Url$Parser$s('register')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Settings,\n\t\t\t$elm$url$Url$Parser$s('settings')),\n\t\t\tA2(\n\t\t\t$elm$url$Url$Parser$map,\n\t\t\t$author$project$Spa$Generated$Route$Profile__Username_String,\n\t\t\tA2(\n\t\t\t\t$elm$url$Url$Parser$map,\n\t\t\t\tfunction (username) {\n\t\t\t\t\treturn {cf: username};\n\t\t\t\t},\n\t\t\t\tA2(\n\t\t\t\t\t$elm$url$Url$Parser$slash,\n\t\t\t\t\t$elm$url$Url$Parser$s('profile'),\n\t\t\t\t\t$elm$url$Url$Parser$string)))\n\t\t]));\nvar $author$project$Spa$Generated$Route$fromUrl = $elm$url$Url$Parser$parse($author$project$Spa$Generated$Route$routes);\nvar $elm$core$Maybe$withDefault = F2(\n\tfunction (_default, maybe) {\n\t\tif (!maybe.$) {\n\t\t\tvar value = maybe.a;\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn _default;\n\t\t}\n\t});\nvar $author$project$Utils$Route$fromUrl = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Route$fromUrl,\n\t$elm$core$Maybe$withDefault($author$project$Spa$Generated$Route$NotFound));\nvar $author$project$Shared$Model = F3(\n\tfunction (url, key, user) {\n\t\treturn {fd: key, f_: url, O: user};\n\t});\nvar $elm$json$Json$Decode$decodeValue = _Json_run;\nvar $author$project$Api$User$User = F3(\n\tfunction (email, token, username) {\n\t\treturn {av: email, c9: token, cf: username};\n\t});\nvar $author$project$Api$Token$Token = $elm$core$Basics$identity;\nvar $elm$json$Json$Decode$string = _Json_decodeString;\nvar $author$project$Api$Token$decoder = A2($elm$json$Json$Decode$map, $elm$core$Basics$identity, $elm$json$Json$Decode$string);\nvar $elm$json$Json$Decode$field = _Json_decodeField;\nvar $elm$json$Json$Decode$map3 = _Json_map3;\nvar $author$project$Api$User$decoder = A4(\n\t$elm$json$Json$Decode$map3,\n\t$author$project$Api$User$User,\n\tA2($elm$json$Json$Decode$field, 'email', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'token', $author$project$Api$Token$decoder),\n\tA2($elm$json$Json$Decode$field, 'username', $elm$json$Json$Decode$string));\nvar $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil);\nvar $elm$core$Result$toMaybe = function (result) {\n\tif (!result.$) {\n\t\tvar v = result.a;\n\t\treturn $elm$core$Maybe$Just(v);\n\t} else {\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n};\nvar $author$project$Shared$init = F3(\n\tfunction (json, url, key) {\n\t\tvar user = $elm$core$Result$toMaybe(\n\t\t\tA2(\n\t\t\t\t$elm$json$Json$Decode$decodeValue,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder),\n\t\t\t\tjson));\n\t\treturn _Utils_Tuple2(\n\t\t\tA3($author$project$Shared$Model, url, key, user),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Spa$Generated$Pages$Login__Model = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Login__Msg = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $author$project$Spa$Generated$Pages$NotFound__Model = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Spa$Generated$Pages$NotFound__Msg = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Profile__Username_String__Model = function (a) {\n\treturn {$: 6, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Profile__Username_String__Msg = function (a) {\n\treturn {$: 6, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Projects__Model = function (a) {\n\treturn {$: 3, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Projects__Msg = function (a) {\n\treturn {$: 3, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Register__Model = function (a) {\n\treturn {$: 4, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Register__Msg = function (a) {\n\treturn {$: 4, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Settings__Model = function (a) {\n\treturn {$: 5, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Settings__Msg = function (a) {\n\treturn {$: 5, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Top__Model = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Spa$Generated$Pages$Top__Msg = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Spa$Page$application = function (page) {\n\treturn page;\n};\nvar $author$project$Pages$Login$Model = F5(\n\tfunction (user, key, url, email, password) {\n\t\treturn {av: email, fd: key, cN: password, f_: url, O: user};\n\t});\nvar $author$project$Api$Data$NotAsked = {$: 0};\nvar $author$project$Api$Data$Success = function (a) {\n\treturn {$: 3, a: a};\n};\nvar $author$project$Pages$Login$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar key = _v0.fd;\n\t\treturn _Utils_Tuple2(\n\t\t\tA5(\n\t\t\t\t$author$project$Pages$Login$Model,\n\t\t\t\tfunction () {\n\t\t\t\t\tvar _v1 = shared.O;\n\t\t\t\t\tif (!_v1.$) {\n\t\t\t\t\t\tvar user = _v1.a;\n\t\t\t\t\t\treturn $author$project$Api$Data$Success(user);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn $author$project$Api$Data$NotAsked;\n\t\t\t\t\t}\n\t\t\t\t}(),\n\t\t\t\tkey,\n\t\t\t\tshared.f_,\n\t\t\t\t'',\n\t\t\t\t''),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Login$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Api$Data$toMaybe = function (data) {\n\tif (data.$ === 3) {\n\t\tvar value = data.a;\n\t\treturn $elm$core$Maybe$Just(value);\n\t} else {\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n};\nvar $author$project$Pages$Login$save = F2(\n\tfunction (model, shared) {\n\t\treturn _Utils_update(\n\t\t\tshared,\n\t\t\t{\n\t\t\t\tO: function () {\n\t\t\t\t\tvar _v0 = $author$project$Api$Data$toMaybe(model.O);\n\t\t\t\t\tif (!_v0.$) {\n\t\t\t\t\t\tvar user = _v0.a;\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(user);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn shared.O;\n\t\t\t\t\t}\n\t\t\t\t}()\n\t\t\t});\n\t});\nvar $elm$core$Platform$Sub$batch = _Platform_batch;\nvar $elm$core$Platform$Sub$none = $elm$core$Platform$Sub$batch(_List_Nil);\nvar $author$project$Pages$Login$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Login$GotUser = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$json$Json$Decode$decodeString = _Json_runOnString;\nvar $elm$json$Json$Decode$keyValuePairs = _Json_decodeKeyValuePairs;\nvar $elm$json$Json$Decode$list = _Json_decodeList;\nvar $author$project$Api$Data$errorDecoder = A2(\n\t$elm$json$Json$Decode$map,\n\t$elm$core$List$concatMap(\n\t\tfunction (_v0) {\n\t\t\tvar key = _v0.a;\n\t\t\tvar values = _v0.b;\n\t\t\treturn A2(\n\t\t\t\t$elm$core$List$map,\n\t\t\t\tfunction (value) {\n\t\t\t\t\treturn key + (' ' + value);\n\t\t\t\t},\n\t\t\t\tvalues);\n\t\t}),\n\tA2(\n\t\t$elm$json$Json$Decode$field,\n\t\t'errors',\n\t\t$elm$json$Json$Decode$keyValuePairs(\n\t\t\t$elm$json$Json$Decode$list($elm$json$Json$Decode$string))));\nvar $elm$http$Http$BadStatus_ = F2(\n\tfunction (a, b) {\n\t\treturn {$: 3, a: a, b: b};\n\t});\nvar $elm$http$Http$BadUrl_ = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$http$Http$GoodStatus_ = F2(\n\tfunction (a, b) {\n\t\treturn {$: 4, a: a, b: b};\n\t});\nvar $elm$http$Http$NetworkError_ = {$: 2};\nvar $elm$http$Http$Receiving = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$http$Http$Sending = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$http$Http$Timeout_ = {$: 1};\nvar $elm$core$Maybe$isJust = function (maybe) {\n\tif (!maybe.$) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$core$Platform$sendToSelf = _Platform_sendToSelf;\nvar $elm$http$Http$expectStringResponse = F2(\n\tfunction (toMsg, toResult) {\n\t\treturn A3(\n\t\t\t_Http_expect,\n\t\t\t'',\n\t\t\t$elm$core$Basics$identity,\n\t\t\tA2($elm$core$Basics$composeR, toResult, toMsg));\n\t});\nvar $author$project$Api$Data$Failure = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Api$Data$fromResult = function (result) {\n\tif (!result.$) {\n\t\tvar value = result.a;\n\t\treturn $author$project$Api$Data$Success(value);\n\t} else {\n\t\tvar reasons = result.a;\n\t\treturn $author$project$Api$Data$Failure(reasons);\n\t}\n};\nvar $author$project$Api$Data$expectJson = F2(\n\tfunction (toMsg, decoder) {\n\t\treturn A2(\n\t\t\t$elm$http$Http$expectStringResponse,\n\t\t\tA2($elm$core$Basics$composeR, $author$project$Api$Data$fromResult, toMsg),\n\t\t\tfunction (response) {\n\t\t\t\tswitch (response.$) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t['Bad URL']));\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t['Request timeout']));\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t['Connection issues']));\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tvar body = response.b;\n\t\t\t\t\t\tvar _v1 = A2($elm$json$Json$Decode$decodeString, $author$project$Api$Data$errorDecoder, body);\n\t\t\t\t\t\tif (!_v1.$) {\n\t\t\t\t\t\t\tvar errors = _v1.a;\n\t\t\t\t\t\t\treturn $elm$core$Result$Err(errors);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t['Bad status code']));\n\t\t\t\t\t\t}\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar body = response.b;\n\t\t\t\t\t\tvar _v2 = A2($elm$json$Json$Decode$decodeString, decoder, body);\n\t\t\t\t\t\tif (!_v2.$) {\n\t\t\t\t\t\t\tvar value = _v2.a;\n\t\t\t\t\t\t\treturn $elm$core$Result$Ok(value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvar err = _v2.a;\n\t\t\t\t\t\t\treturn $elm$core$Result$Err(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$json$Json$Decode$errorToString(err)\n\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t});\nvar $author$project$Api$User$loginUrl = function (url) {\n\treturn A2($elm$core$String$contains, 'localhost', url) ? 'http://localhost:8000/auth' : '/auth';\n};\nvar $elm$http$Http$multipartBody = function (parts) {\n\treturn A2(\n\t\t_Http_pair,\n\t\t'',\n\t\t_Http_toFormData(parts));\n};\nvar $elm$http$Http$Request = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$http$Http$State = F2(\n\tfunction (reqs, subs) {\n\t\treturn {d5: reqs, em: subs};\n\t});\nvar $elm$http$Http$init = $elm$core$Task$succeed(\n\tA2($elm$http$Http$State, $elm$core$Dict$empty, _List_Nil));\nvar $elm$core$Process$kill = _Scheduler_kill;\nvar $elm$core$Process$spawn = _Scheduler_spawn;\nvar $elm$http$Http$updateReqs = F3(\n\tfunction (router, cmds, reqs) {\n\t\tupdateReqs:\n\t\twhile (true) {\n\t\t\tif (!cmds.b) {\n\t\t\t\treturn $elm$core$Task$succeed(reqs);\n\t\t\t} else {\n\t\t\t\tvar cmd = cmds.a;\n\t\t\t\tvar otherCmds = cmds.b;\n\t\t\t\tif (!cmd.$) {\n\t\t\t\t\tvar tracker = cmd.a;\n\t\t\t\t\tvar _v2 = A2($elm$core$Dict$get, tracker, reqs);\n\t\t\t\t\tif (_v2.$ === 1) {\n\t\t\t\t\t\tvar $temp$router = router,\n\t\t\t\t\t\t\t$temp$cmds = otherCmds,\n\t\t\t\t\t\t\t$temp$reqs = reqs;\n\t\t\t\t\t\trouter = $temp$router;\n\t\t\t\t\t\tcmds = $temp$cmds;\n\t\t\t\t\t\treqs = $temp$reqs;\n\t\t\t\t\t\tcontinue updateReqs;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar pid = _v2.a;\n\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\t\t\tfunction (_v3) {\n\t\t\t\t\t\t\t\treturn A3(\n\t\t\t\t\t\t\t\t\t$elm$http$Http$updateReqs,\n\t\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t\totherCmds,\n\t\t\t\t\t\t\t\t\tA2($elm$core$Dict$remove, tracker, reqs));\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t$elm$core$Process$kill(pid));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvar req = cmd.a;\n\t\t\t\t\treturn A2(\n\t\t\t\t\t\t$elm$core$Task$andThen,\n\t\t\t\t\t\tfunction (pid) {\n\t\t\t\t\t\t\tvar _v4 = req.fY;\n\t\t\t\t\t\t\tif (_v4.$ === 1) {\n\t\t\t\t\t\t\t\treturn A3($elm$http$Http$updateReqs, router, otherCmds, reqs);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvar tracker = _v4.a;\n\t\t\t\t\t\t\t\treturn A3(\n\t\t\t\t\t\t\t\t\t$elm$http$Http$updateReqs,\n\t\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t\totherCmds,\n\t\t\t\t\t\t\t\t\tA3($elm$core$Dict$insert, tracker, pid, reqs));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t$elm$core$Process$spawn(\n\t\t\t\t\t\t\tA3(\n\t\t\t\t\t\t\t\t_Http_toTask,\n\t\t\t\t\t\t\t\trouter,\n\t\t\t\t\t\t\t\t$elm$core$Platform$sendToApp(router),\n\t\t\t\t\t\t\t\treq)));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$http$Http$onEffects = F4(\n\tfunction (router, cmds, subs, state) {\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (reqs) {\n\t\t\t\treturn $elm$core$Task$succeed(\n\t\t\t\t\tA2($elm$http$Http$State, reqs, subs));\n\t\t\t},\n\t\t\tA3($elm$http$Http$updateReqs, router, cmds, state.d5));\n\t});\nvar $elm$core$List$maybeCons = F3(\n\tfunction (f, mx, xs) {\n\t\tvar _v0 = f(mx);\n\t\tif (!_v0.$) {\n\t\t\tvar x = _v0.a;\n\t\t\treturn A2($elm$core$List$cons, x, xs);\n\t\t} else {\n\t\t\treturn xs;\n\t\t}\n\t});\nvar $elm$core$List$filterMap = F2(\n\tfunction (f, xs) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\t$elm$core$List$maybeCons(f),\n\t\t\t_List_Nil,\n\t\t\txs);\n\t});\nvar $elm$http$Http$maybeSend = F4(\n\tfunction (router, desiredTracker, progress, _v0) {\n\t\tvar actualTracker = _v0.a;\n\t\tvar toMsg = _v0.b;\n\t\treturn _Utils_eq(desiredTracker, actualTracker) ? $elm$core$Maybe$Just(\n\t\t\tA2(\n\t\t\t\t$elm$core$Platform$sendToApp,\n\t\t\t\trouter,\n\t\t\t\ttoMsg(progress))) : $elm$core$Maybe$Nothing;\n\t});\nvar $elm$http$Http$onSelfMsg = F3(\n\tfunction (router, _v0, state) {\n\t\tvar tracker = _v0.a;\n\t\tvar progress = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$core$Task$andThen,\n\t\t\tfunction (_v1) {\n\t\t\t\treturn $elm$core$Task$succeed(state);\n\t\t\t},\n\t\t\t$elm$core$Task$sequence(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$filterMap,\n\t\t\t\t\tA3($elm$http$Http$maybeSend, router, tracker, progress),\n\t\t\t\t\tstate.em)));\n\t});\nvar $elm$http$Http$Cancel = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$http$Http$cmdMap = F2(\n\tfunction (func, cmd) {\n\t\tif (!cmd.$) {\n\t\t\tvar tracker = cmd.a;\n\t\t\treturn $elm$http$Http$Cancel(tracker);\n\t\t} else {\n\t\t\tvar r = cmd.a;\n\t\t\treturn $elm$http$Http$Request(\n\t\t\t\t{\n\t\t\t\t\teH: r.eH,\n\t\t\t\t\teJ: r.eJ,\n\t\t\t\t\teX: A2(_Http_mapExpect, func, r.eX),\n\t\t\t\t\te3: r.e3,\n\t\t\t\t\tfh: r.fh,\n\t\t\t\t\tfQ: r.fQ,\n\t\t\t\t\tfY: r.fY,\n\t\t\t\t\tf_: r.f_\n\t\t\t\t});\n\t\t}\n\t});\nvar $elm$http$Http$MySub = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $elm$http$Http$subMap = F2(\n\tfunction (func, _v0) {\n\t\tvar tracker = _v0.a;\n\t\tvar toMsg = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$http$Http$MySub,\n\t\t\ttracker,\n\t\t\tA2($elm$core$Basics$composeR, toMsg, func));\n\t});\n_Platform_effectManagers['Http'] = _Platform_createManager($elm$http$Http$init, $elm$http$Http$onEffects, $elm$http$Http$onSelfMsg, $elm$http$Http$cmdMap, $elm$http$Http$subMap);\nvar $elm$http$Http$command = _Platform_leaf('Http');\nvar $elm$http$Http$subscription = _Platform_leaf('Http');\nvar $elm$http$Http$request = function (r) {\n\treturn $elm$http$Http$command(\n\t\t$elm$http$Http$Request(\n\t\t\t{eH: false, eJ: r.eJ, eX: r.eX, e3: r.e3, fh: r.fh, fQ: r.fQ, fY: r.fY, f_: r.f_}));\n};\nvar $elm$http$Http$post = function (r) {\n\treturn $elm$http$Http$request(\n\t\t{eJ: r.eJ, eX: r.eX, e3: _List_Nil, fh: 'POST', fQ: $elm$core$Maybe$Nothing, fY: $elm$core$Maybe$Nothing, f_: r.f_});\n};\nvar $elm$http$Http$stringPart = _Http_pair;\nvar $author$project$Api$User$authentication = function (options) {\n\tvar body = $elm$http$Http$multipartBody(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2($elm$http$Http$stringPart, 'username', options.O.av),\n\t\t\t\tA2($elm$http$Http$stringPart, 'password', options.O.cN)\n\t\t\t]));\n\treturn $elm$http$Http$post(\n\t\t{\n\t\t\teJ: body,\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fv,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder)),\n\t\t\tf_: $author$project$Api$User$loginUrl(options.eL)\n\t\t});\n};\nvar $elm$browser$Browser$Navigation$pushUrl = _Browser_pushUrl;\nvar $elm$core$String$append = _String_append;\nvar $author$project$Spa$Generated$Route$toString = function (route) {\n\tvar segments = function () {\n\t\tswitch (route.$) {\n\t\t\tcase 0:\n\t\t\t\treturn _List_Nil;\n\t\t\tcase 1:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['login']);\n\t\t\tcase 2:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['not-found']);\n\t\t\tcase 3:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['projects']);\n\t\t\tcase 4:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['register']);\n\t\t\tcase 5:\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['settings']);\n\t\t\tdefault:\n\t\t\t\tvar username = route.a.cf;\n\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t['profile', username]);\n\t\t}\n\t}();\n\treturn A2(\n\t\t$elm$core$String$append,\n\t\t'/',\n\t\tA2($elm$core$String$join, '/', segments));\n};\nvar $author$project$Utils$Route$navigate = F2(\n\tfunction (key, route) {\n\t\treturn A2(\n\t\t\t$elm$browser$Browser$Navigation$pushUrl,\n\t\t\tkey,\n\t\t\t$author$project$Spa$Generated$Route$toString(route));\n\t});\nvar $elm$json$Json$Encode$string = _Json_wrap;\nvar $author$project$Api$Token$encode = function (_v0) {\n\tvar token = _v0;\n\treturn $elm$json$Json$Encode$string(token);\n};\nvar $elm$json$Json$Encode$object = function (pairs) {\n\treturn _Json_wrap(\n\t\tA3(\n\t\t\t$elm$core$List$foldl,\n\t\t\tF2(\n\t\t\t\tfunction (_v0, obj) {\n\t\t\t\t\tvar k = _v0.a;\n\t\t\t\t\tvar v = _v0.b;\n\t\t\t\t\treturn A3(_Json_addField, k, v, obj);\n\t\t\t\t}),\n\t\t\t_Json_emptyObject(0),\n\t\t\tpairs));\n};\nvar $author$project$Api$User$encode = function (user) {\n\treturn $elm$json$Json$Encode$object(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'username',\n\t\t\t\t$elm$json$Json$Encode$string(user.cf)),\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'email',\n\t\t\t\t$elm$json$Json$Encode$string(user.av)),\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'token',\n\t\t\t\t$author$project$Api$Token$encode(user.c9))\n\t\t\t]));\n};\nvar $author$project$Ports$outgoing = _Platform_outgoingPort(\n\t'outgoing',\n\tfunction ($) {\n\t\treturn $elm$json$Json$Encode$object(\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t'data',\n\t\t\t\t\t$elm$core$Basics$identity($.cs)),\n\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t'tag',\n\t\t\t\t\t$elm$json$Json$Encode$string($.c7))\n\t\t\t\t]));\n\t});\nvar $author$project$Ports$saveUser = function (user) {\n\treturn $author$project$Ports$outgoing(\n\t\t{\n\t\t\tcs: $author$project$Api$User$encode(user),\n\t\t\tc7: 'saveUser'\n\t\t});\n};\nvar $author$project$Pages$Login$update = F2(\n\tfunction (msg, model) {\n\t\tswitch (msg.$) {\n\t\t\tcase 0:\n\t\t\t\tif (!msg.a) {\n\t\t\t\t\tvar _v1 = msg.a;\n\t\t\t\t\tvar email = msg.b;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t{av: email}),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t} else {\n\t\t\t\t\tvar _v2 = msg.a;\n\t\t\t\t\tvar password = msg.b;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t{cN: password}),\n\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t}\n\t\t\tcase 1:\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\tmodel,\n\t\t\t\t\t$author$project$Api$User$authentication(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\teL: model.f_.e6,\n\t\t\t\t\t\t\tfv: $author$project$Pages$Login$GotUser,\n\t\t\t\t\t\t\tO: {av: model.av, cN: model.cN}\n\t\t\t\t\t\t}));\n\t\t\tdefault:\n\t\t\t\tvar user = msg.a;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{O: user}),\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\tvar _v3 = $author$project$Api$Data$toMaybe(user);\n\t\t\t\t\t\tif (!_v3.$) {\n\t\t\t\t\t\t\tvar user_ = _v3.a;\n\t\t\t\t\t\t\treturn $elm$core$Platform$Cmd$batch(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$author$project$Ports$saveUser(user_),\n\t\t\t\t\t\t\t\t\t\tA2($author$project$Utils$Route$navigate, model.fd, $author$project$Spa$Generated$Route$Projects)\n\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Platform$Cmd$none;\n\t\t\t\t\t\t}\n\t\t\t\t\t}());\n\t\t}\n\t});\nvar $author$project$Pages$Login$AttemptedSignIn = {$: 1};\nvar $author$project$Pages$Login$Email = 0;\nvar $author$project$Pages$Login$Password = 1;\nvar $author$project$Pages$Login$Updated = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $elm$html$Html$a = _VirtualDom_node('a');\nvar $elm$html$Html$button = _VirtualDom_node('button');\nvar $elm$html$Html$Attributes$stringProperty = F2(\n\tfunction (key, string) {\n\t\treturn A2(\n\t\t\t_VirtualDom_property,\n\t\t\tkey,\n\t\t\t$elm$json$Json$Encode$string(string));\n\t});\nvar $elm$html$Html$Attributes$class = $elm$html$Html$Attributes$stringProperty('className');\nvar $elm$html$Html$div = _VirtualDom_node('div');\nvar $elm$html$Html$form = _VirtualDom_node('form');\nvar $elm$html$Html$h1 = _VirtualDom_node('h1');\nvar $elm$html$Html$Attributes$href = function (url) {\n\treturn A2(\n\t\t$elm$html$Html$Attributes$stringProperty,\n\t\t'href',\n\t\t_VirtualDom_noJavaScriptUri(url));\n};\nvar $elm$html$Html$Events$alwaysPreventDefault = function (msg) {\n\treturn _Utils_Tuple2(msg, true);\n};\nvar $elm$virtual_dom$VirtualDom$MayPreventDefault = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$virtual_dom$VirtualDom$on = _VirtualDom_on;\nvar $elm$html$Html$Events$preventDefaultOn = F2(\n\tfunction (event, decoder) {\n\t\treturn A2(\n\t\t\t$elm$virtual_dom$VirtualDom$on,\n\t\t\tevent,\n\t\t\t$elm$virtual_dom$VirtualDom$MayPreventDefault(decoder));\n\t});\nvar $elm$html$Html$Events$onSubmit = function (msg) {\n\treturn A2(\n\t\t$elm$html$Html$Events$preventDefaultOn,\n\t\t'submit',\n\t\tA2(\n\t\t\t$elm$json$Json$Decode$map,\n\t\t\t$elm$html$Html$Events$alwaysPreventDefault,\n\t\t\t$elm$json$Json$Decode$succeed(msg)));\n};\nvar $elm$html$Html$p = _VirtualDom_node('p');\nvar $elm$virtual_dom$VirtualDom$text = _VirtualDom_text;\nvar $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text;\nvar $elm$core$List$isEmpty = function (xs) {\n\tif (!xs.b) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\nvar $elm$html$Html$li = _VirtualDom_node('li');\nvar $elm$html$Html$ul = _VirtualDom_node('ul');\nvar $author$project$Components$ErrorList$view = function (reasons) {\n\treturn $elm$core$List$isEmpty(reasons) ? $elm$html$Html$text('') : A2(\n\t\t$elm$html$Html$ul,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('error-messages')\n\t\t\t]),\n\t\tA2(\n\t\t\t$elm$core$List$map,\n\t\t\tfunction (message) {\n\t\t\t\treturn A2(\n\t\t\t\t\t$elm$html$Html$li,\n\t\t\t\t\t_List_Nil,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text(message)\n\t\t\t\t\t\t]));\n\t\t\t},\n\t\t\treasons));\n};\nvar $elm$html$Html$fieldset = _VirtualDom_node('fieldset');\nvar $elm$html$Html$input = _VirtualDom_node('input');\nvar $elm$html$Html$Events$alwaysStop = function (x) {\n\treturn _Utils_Tuple2(x, true);\n};\nvar $elm$virtual_dom$VirtualDom$MayStopPropagation = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $elm$html$Html$Events$stopPropagationOn = F2(\n\tfunction (event, decoder) {\n\t\treturn A2(\n\t\t\t$elm$virtual_dom$VirtualDom$on,\n\t\t\tevent,\n\t\t\t$elm$virtual_dom$VirtualDom$MayStopPropagation(decoder));\n\t});\nvar $elm$json$Json$Decode$at = F2(\n\tfunction (fields, decoder) {\n\t\treturn A3($elm$core$List$foldr, $elm$json$Json$Decode$field, decoder, fields);\n\t});\nvar $elm$html$Html$Events$targetValue = A2(\n\t$elm$json$Json$Decode$at,\n\t_List_fromArray(\n\t\t['target', 'value']),\n\t$elm$json$Json$Decode$string);\nvar $elm$html$Html$Events$onInput = function (tagger) {\n\treturn A2(\n\t\t$elm$html$Html$Events$stopPropagationOn,\n\t\t'input',\n\t\tA2(\n\t\t\t$elm$json$Json$Decode$map,\n\t\t\t$elm$html$Html$Events$alwaysStop,\n\t\t\tA2($elm$json$Json$Decode$map, tagger, $elm$html$Html$Events$targetValue)));\n};\nvar $elm$html$Html$Attributes$placeholder = $elm$html$Html$Attributes$stringProperty('placeholder');\nvar $elm$html$Html$Attributes$type_ = $elm$html$Html$Attributes$stringProperty('type');\nvar $elm$html$Html$Attributes$value = $elm$html$Html$Attributes$stringProperty('value');\nvar $author$project$Components$UserForm$viewField = function (options) {\n\treturn A2(\n\t\t$elm$html$Html$fieldset,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('form-group')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$input,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-control form-control-lg'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder(options.fe),\n\t\t\t\t\t\t$elm$html$Html$Attributes$type_(options.ex),\n\t\t\t\t\t\t$elm$html$Html$Attributes$value(options.ez),\n\t\t\t\t\t\t$elm$html$Html$Events$onInput(options.dU)\n\t\t\t\t\t]),\n\t\t\t\t_List_Nil)\n\t\t\t]));\n};\nvar $author$project$Components$UserForm$view = function (options) {\n\treturn A2(\n\t\t$elm$html$Html$div,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('auth-page')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('row')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('col-md-6 offset-md-3 col-xs-12')\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$h1,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-xs-center')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(options.fe)\n\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$p,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-xs-center')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Spa$Generated$Route$toString(options.de.fI))\n\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(options.de.fe)\n\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t\t\tvar _v0 = options.O;\n\t\t\t\t\t\t\t\t\t\tif (_v0.$ === 2) {\n\t\t\t\t\t\t\t\t\t\t\tvar reasons = _v0.a;\n\t\t\t\t\t\t\t\t\t\t\treturn $author$project$Components$ErrorList$view(reasons);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\treturn $elm$html$Html$text('');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}(),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$form,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onSubmit(options.ft)\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t$elm$core$List$concat(\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$core$List$map, $author$project$Components$UserForm$viewField, options.e0),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-lg btn-primary pull-xs-right')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(options.fe)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t\t\t])))\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]));\n};\nvar $author$project$Pages$Login$view = function (model) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[\n\t\t\t\t$author$project$Components$UserForm$view(\n\t\t\t\t{\n\t\t\t\t\tde: {fe: 'Need an account?', fI: $author$project$Spa$Generated$Route$Register},\n\t\t\t\t\te0: _List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfe: 'Email',\n\t\t\t\t\t\t\tdU: $author$project$Pages$Login$Updated(0),\n\t\t\t\t\t\t\tex: 'text',\n\t\t\t\t\t\t\tez: model.av\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfe: 'Password',\n\t\t\t\t\t\t\tdU: $author$project$Pages$Login$Updated(1),\n\t\t\t\t\t\t\tex: 'password',\n\t\t\t\t\t\t\tez: model.cN\n\t\t\t\t\t\t}\n\t\t\t\t\t\t]),\n\t\t\t\t\tfe: 'Sign in',\n\t\t\t\t\tft: $author$project$Pages$Login$AttemptedSignIn,\n\t\t\t\t\tO: model.O\n\t\t\t\t})\n\t\t\t]),\n\t\tfR: 'Sign in'\n\t};\n};\nvar $author$project$Pages$Login$page = $author$project$Spa$Page$application(\n\t{fb: $author$project$Pages$Login$init, fg: $author$project$Pages$Login$load, fJ: $author$project$Pages$Login$save, fN: $author$project$Pages$Login$subscriptions, fZ: $author$project$Pages$Login$update, f0: $author$project$Pages$Login$view});\nvar $elm$core$Basics$always = F2(\n\tfunction (a, _v0) {\n\t\treturn a;\n\t});\nvar $author$project$Spa$Page$ignoreEffect = function (model) {\n\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n};\nvar $author$project$Spa$Page$static = function (page) {\n\treturn {\n\t\tfb: F2(\n\t\t\tfunction (_v0, url) {\n\t\t\t\treturn _Utils_Tuple2(url, $elm$core$Platform$Cmd$none);\n\t\t\t}),\n\t\tfg: $elm$core$Basics$always(\n\t\t\tA2($elm$core$Basics$composeR, $elm$core$Basics$identity, $author$project$Spa$Page$ignoreEffect)),\n\t\tfJ: $elm$core$Basics$always($elm$core$Basics$identity),\n\t\tfN: function (_v1) {\n\t\t\treturn $elm$core$Platform$Sub$none;\n\t\t},\n\t\tfZ: F2(\n\t\t\tfunction (_v2, model) {\n\t\t\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t\t\t}),\n\t\tf0: page.f0\n\t};\n};\nvar $elm$html$Html$h2 = _VirtualDom_node('h2');\nvar $elm$html$Html$h5 = _VirtualDom_node('h5');\nvar $author$project$Components$NotFound$view = A2(\n\t$elm$html$Html$div,\n\t_List_fromArray(\n\t\t[\n\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t]),\n\t_List_fromArray(\n\t\t[\n\t\t\tA2(\n\t\t\t$elm$html$Html$h2,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$text('Page not found.')\n\t\t\t\t])),\n\t\t\tA2(\n\t\t\t$elm$html$Html$h5,\n\t\t\t_List_Nil,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$text('But here\\'s the '),\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('/')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text('homepage')\n\t\t\t\t\t\t])),\n\t\t\t\t\t$elm$html$Html$text('!')\n\t\t\t\t]))\n\t\t]));\nvar $author$project$Pages$NotFound$view = function (_v0) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[$author$project$Components$NotFound$view]),\n\t\tfR: '404'\n\t};\n};\nvar $author$project$Pages$NotFound$page = $author$project$Spa$Page$static(\n\t{f0: $author$project$Pages$NotFound$view});\nvar $author$project$Pages$Profile$Username_String$GotProfile = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Api$Data$Loading = {$: 1};\nvar $author$project$Pages$Profile$Username_String$MyArticles = 0;\nvar $author$project$Api$Profile$Profile = F2(\n\tfunction (username, following) {\n\t\treturn {e1: following, cf: username};\n\t});\nvar $elm$json$Json$Decode$bool = _Json_decodeBool;\nvar $author$project$Api$Profile$decoder = A3(\n\t$elm$json$Json$Decode$map2,\n\t$author$project$Api$Profile$Profile,\n\tA2($elm$json$Json$Decode$field, 'username', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'following', $elm$json$Json$Decode$bool));\nvar $elm$http$Http$emptyBody = _Http_emptyBody;\nvar $elm$http$Http$Header = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $elm$http$Http$header = $elm$http$Http$Header;\nvar $author$project$Api$Token$request = F4(\n\tfunction (method, body, maybeToken, options) {\n\t\treturn $elm$http$Http$request(\n\t\t\t{\n\t\t\t\teJ: body,\n\t\t\t\teX: options.eX,\n\t\t\t\te3: function () {\n\t\t\t\t\tif (!maybeToken.$) {\n\t\t\t\t\t\tvar token = maybeToken.a;\n\t\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2($elm$http$Http$header, 'Authorization', 'Bearer ' + token)\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn _List_Nil;\n\t\t\t\t\t}\n\t\t\t\t}(),\n\t\t\t\tfh: method,\n\t\t\t\tfQ: $elm$core$Maybe$Just(1000 * 60),\n\t\t\t\tfY: $elm$core$Maybe$Nothing,\n\t\t\t\tf_: options.f_\n\t\t\t});\n\t});\nvar $author$project$Api$Token$get = A2($author$project$Api$Token$request, 'GET', $elm$http$Http$emptyBody);\nvar $author$project$Api$Profile$get = function (options) {\n\treturn A2(\n\t\t$author$project$Api$Token$get,\n\t\toptions.c9,\n\t\t{\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fv,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'profile', $author$project$Api$Profile$decoder)),\n\t\t\tf_: 'https://conduit.productionready.io/api/profiles/' + options.cf\n\t\t});\n};\nvar $elm$core$Maybe$map = F2(\n\tfunction (f, maybe) {\n\t\tif (!maybe.$) {\n\t\t\tvar value = maybe.a;\n\t\t\treturn $elm$core$Maybe$Just(\n\t\t\t\tf(value));\n\t\t} else {\n\t\t\treturn $elm$core$Maybe$Nothing;\n\t\t}\n\t});\nvar $author$project$Pages$Profile$Username_String$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar params = _v0.fB;\n\t\tvar token = A2(\n\t\t\t$elm$core$Maybe$map,\n\t\t\tfunction ($) {\n\t\t\t\treturn $.c9;\n\t\t\t},\n\t\t\tshared.O);\n\t\treturn _Utils_Tuple2(\n\t\t\t{dM: $author$project$Api$Data$Loading, C: 1, cR: $author$project$Api$Data$Loading, cW: 0, O: shared.O, cf: params.cf},\n\t\t\t$elm$core$Platform$Cmd$batch(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$author$project$Api$Profile$get(\n\t\t\t\t\t\t{fv: $author$project$Pages$Profile$Username_String$GotProfile, c9: token, cf: params.cf})\n\t\t\t\t\t])));\n\t});\nvar $author$project$Pages$Profile$Username_String$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Profile$Username_String$save = F2(\n\tfunction (_v0, shared) {\n\t\treturn shared;\n\t});\nvar $author$project$Pages$Profile$Username_String$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Profile$Username_String$update = F2(\n\tfunction (msg, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Profile$Username_String$Clicked = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Pages$Profile$Username_String$FavoritedArticles = 1;\nvar $elm$core$List$filter = F2(\n\tfunction (isGood, list) {\n\t\treturn A3(\n\t\t\t$elm$core$List$foldr,\n\t\t\tF2(\n\t\t\t\tfunction (x, xs) {\n\t\t\t\t\treturn isGood(x) ? A2($elm$core$List$cons, x, xs) : xs;\n\t\t\t\t}),\n\t\t\t_List_Nil,\n\t\t\tlist);\n\t});\nvar $elm$core$Tuple$second = function (_v0) {\n\tvar y = _v0.b;\n\treturn y;\n};\nvar $elm$html$Html$Attributes$classList = function (classes) {\n\treturn $elm$html$Html$Attributes$class(\n\t\tA2(\n\t\t\t$elm$core$String$join,\n\t\t\t' ',\n\t\t\tA2(\n\t\t\t\t$elm$core$List$map,\n\t\t\t\t$elm$core$Tuple$first,\n\t\t\t\tA2($elm$core$List$filter, $elm$core$Tuple$second, classes))));\n};\nvar $elm$virtual_dom$VirtualDom$Normal = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $elm$html$Html$Events$on = F2(\n\tfunction (event, decoder) {\n\t\treturn A2(\n\t\t\t$elm$virtual_dom$VirtualDom$on,\n\t\t\tevent,\n\t\t\t$elm$virtual_dom$VirtualDom$Normal(decoder));\n\t});\nvar $elm$html$Html$Events$onClick = function (msg) {\n\treturn A2(\n\t\t$elm$html$Html$Events$on,\n\t\t'click',\n\t\t$elm$json$Json$Decode$succeed(msg));\n};\nvar $author$project$Pages$Profile$Username_String$viewProfile = F2(\n\tfunction (profile, model) {\n\t\tvar viewTab = function (tab) {\n\t\t\treturn A2(\n\t\t\t\t$elm$html$Html$li,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-item')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-link'),\n\t\t\t\t\t\t\t\t$elm$html$Html$Events$onClick(\n\t\t\t\t\t\t\t\t$author$project$Pages$Profile$Username_String$Clicked(tab)),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$classList(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t\t'active',\n\t\t\t\t\t\t\t\t\t\t_Utils_eq(tab, model.cW))\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text(\n\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t\tif (!tab) {\n\t\t\t\t\t\t\t\t\t\treturn 'My Articles';\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\treturn 'Favorited Articles';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}())\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]));\n\t\t};\n\t\tvar viewTabRow = A2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('articles-toggle')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$ul,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav nav-pills outline-active')\n\t\t\t\t\t\t]),\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t\tviewTab,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[0, 1])))\n\t\t\t\t]));\n\t\tvar isViewingOwnProfile = _Utils_eq(\n\t\t\tA2(\n\t\t\t\t$elm$core$Maybe$map,\n\t\t\t\tfunction ($) {\n\t\t\t\t\treturn $.cf;\n\t\t\t\t},\n\t\t\t\tmodel.O),\n\t\t\t$elm$core$Maybe$Just(profile.cf));\n\t\treturn A2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('profile-page')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('row')\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t]))\n\t\t\t\t]));\n\t});\nvar $author$project$Pages$Profile$Username_String$view = function (model) {\n\treturn {\n\t\teJ: function () {\n\t\t\tvar _v0 = model.cR;\n\t\t\tswitch (_v0.$) {\n\t\t\t\tcase 3:\n\t\t\t\t\tvar profile = _v0.a;\n\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA2($author$project$Pages$Profile$Username_String$viewProfile, profile, model)\n\t\t\t\t\t\t]);\n\t\t\t\tcase 2:\n\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t[$author$project$Components$NotFound$view]);\n\t\t\t\tdefault:\n\t\t\t\t\treturn _List_Nil;\n\t\t\t}\n\t\t}(),\n\t\tfR: 'Profile'\n\t};\n};\nvar $author$project$Pages$Profile$Username_String$page = $author$project$Spa$Page$application(\n\t{fb: $author$project$Pages$Profile$Username_String$init, fg: $author$project$Pages$Profile$Username_String$load, fJ: $author$project$Pages$Profile$Username_String$save, fN: $author$project$Pages$Profile$Username_String$subscriptions, fZ: $author$project$Pages$Profile$Username_String$update, f0: $author$project$Pages$Profile$Username_String$view});\nvar $author$project$Pages$Projects$GotProjects = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Api$Project$Project = F5(\n\tfunction (name, id, description, state, gitrepository) {\n\t\treturn {eS: description, e2: gitrepository, e9: id, fj: name, ej: state};\n\t});\nvar $author$project$Api$Project$GitRepository = F2(\n\tfunction (url, version) {\n\t\treturn {f_: url, f$: version};\n\t});\nvar $author$project$Api$Project$gitRepositoryDecoder = A3(\n\t$elm$json$Json$Decode$map2,\n\t$author$project$Api$Project$GitRepository,\n\tA2($elm$json$Json$Decode$field, 'url', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'version', $elm$json$Json$Decode$string));\nvar $elm$json$Json$Decode$int = _Json_decodeInt;\nvar $elm$json$Json$Decode$map5 = _Json_map5;\nvar $author$project$Api$Project$ProjectState = F2(\n\tfunction (state, errormsg) {\n\t\treturn {eV: errormsg, ej: state};\n\t});\nvar $author$project$Api$Project$projectStateDecoder = A3(\n\t$elm$json$Json$Decode$map2,\n\t$author$project$Api$Project$ProjectState,\n\tA2($elm$json$Json$Decode$field, 'state', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'errormsg', $elm$json$Json$Decode$string));\nvar $author$project$Api$Project$projectDecoder = A6(\n\t$elm$json$Json$Decode$map5,\n\t$author$project$Api$Project$Project,\n\tA2($elm$json$Json$Decode$field, 'name', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'id', $elm$json$Json$Decode$int),\n\tA2($elm$json$Json$Decode$field, 'description', $elm$json$Json$Decode$string),\n\tA2($elm$json$Json$Decode$field, 'state', $author$project$Api$Project$projectStateDecoder),\n\tA2($elm$json$Json$Decode$field, 'gitrepository', $author$project$Api$Project$gitRepositoryDecoder));\nvar $author$project$Api$Project$list = function (options) {\n\treturn A2(\n\t\t$author$project$Api$Token$get,\n\t\toptions.c9,\n\t\t{\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fv,\n\t\t\t\t$elm$json$Json$Decode$list($author$project$Api$Project$projectDecoder)),\n\t\t\tf_: options.ey + '/api/v1/projects'\n\t\t});\n};\nvar $author$project$Pages$Projects$makeUrl = function (host) {\n\treturn A2($elm$core$String$contains, 'localhost', host) ? 'http://localhost:8000' : '';\n};\nvar $author$project$Pages$Projects$fetchProjects = F2(\n\tfunction (model, host) {\n\t\treturn $author$project$Api$Project$list(\n\t\t\t{\n\t\t\t\tfv: $author$project$Pages$Projects$GotProjects,\n\t\t\t\tc9: A2(\n\t\t\t\t\t$elm$core$Maybe$map,\n\t\t\t\t\tfunction ($) {\n\t\t\t\t\t\treturn $.c9;\n\t\t\t\t\t},\n\t\t\t\t\tmodel.O),\n\t\t\t\tey: $author$project$Pages$Projects$makeUrl(host)\n\t\t\t});\n\t});\nvar $author$project$Pages$Projects$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar model = {dM: $author$project$Api$Data$Loading, O: shared.O};\n\t\treturn _Utils_Tuple2(\n\t\t\tmodel,\n\t\t\t$elm$core$Platform$Cmd$batch(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2($author$project$Pages$Projects$fetchProjects, model, shared.f_.e6)\n\t\t\t\t\t])));\n\t});\nvar $author$project$Pages$Projects$load = F2(\n\tfunction (shared, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Projects$save = F2(\n\tfunction (model, shared) {\n\t\treturn shared;\n\t});\nvar $author$project$Pages$Projects$subscriptions = function (model) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Projects$update = F2(\n\tfunction (msg, model) {\n\t\tif (!msg.$) {\n\t\t\tvar listing = msg.a;\n\t\t\treturn _Utils_Tuple2(\n\t\t\t\t_Utils_update(\n\t\t\t\t\tmodel,\n\t\t\t\t\t{dM: listing}),\n\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t} else {\n\t\t\tvar project = msg.a;\n\t\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t\t}\n\t});\nvar $elm$core$String$concat = function (strings) {\n\treturn A2($elm$core$String$join, '', strings);\n};\nvar $elm$html$Html$span = _VirtualDom_node('span');\nvar $elm$html$Html$Attributes$target = $elm$html$Html$Attributes$stringProperty('target');\nvar $author$project$Components$ProjectList$viewErrorDiv = function (listing) {\n\treturn ($elm$core$String$length(listing.ej.eV) > 0) ? A2(\n\t\t$elm$html$Html$div,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('alert alert-warning')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$text(listing.ej.eV)\n\t\t\t])) : $elm$html$Html$text('');\n};\nvar $author$project$Components$ProjectList$viewProject = function (listing) {\n\treturn A2(\n\t\t$elm$html$Html$div,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('highlight col-md-10')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$h5,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.fj)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$p,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.eS)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$p,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$target('_blank'),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t\t\t$elm$core$String$concat(\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t'/public/v1/projects/',\n\t\t\t\t\t\t\t\t\t\t\t$elm$core$String$fromInt(listing.e9)\n\t\t\t\t\t\t\t\t\t\t])))\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text('public')\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$p,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.e2.f_)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$p,\n\t\t\t\t_List_Nil,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.e2.f$)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$span,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('badge badge-pill badge-secondary')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text(listing.ej.ej)\n\t\t\t\t\t])),\n\t\t\t\t$author$project$Components$ProjectList$viewErrorDiv(listing)\n\t\t\t]));\n};\nvar $author$project$Components$ProjectList$view = function (options) {\n\tvar _v0 = options.fD;\n\tswitch (_v0.$) {\n\t\tcase 0:\n\t\t\treturn A2($elm$html$Html$div, _List_Nil, _List_Nil);\n\t\tcase 2:\n\t\t\treturn A2($elm$html$Html$div, _List_Nil, _List_Nil);\n\t\tcase 1:\n\t\t\treturn A2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('project-preview')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text('Loading...')\n\t\t\t\t\t]));\n\t\tdefault:\n\t\t\tvar listing = _v0.a;\n\t\t\treturn A2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('listings')\n\t\t\t\t\t]),\n\t\t\t\tA2($elm$core$List$map, $author$project$Components$ProjectList$viewProject, listing));\n\t}\n};\nvar $author$project$Pages$Projects$view = function (model) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('container')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$h1,\n\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$text('Projects')\n\t\t\t\t\t\t\t])),\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('col-md-9')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$author$project$Components$ProjectList$view(\n\t\t\t\t\t\t\t\t{fD: model.dM, O: model.O})\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]),\n\t\tfR: 'Projects'\n\t};\n};\nvar $author$project$Pages$Projects$page = $author$project$Spa$Page$application(\n\t{fb: $author$project$Pages$Projects$init, fg: $author$project$Pages$Projects$load, fJ: $author$project$Pages$Projects$save, fN: $author$project$Pages$Projects$subscriptions, fZ: $author$project$Pages$Projects$update, f0: $author$project$Pages$Projects$view});\nvar $author$project$Pages$Register$Model = F5(\n\tfunction (user, key, username, email, password) {\n\t\treturn {av: email, fd: key, cN: password, O: user, cf: username};\n\t});\nvar $author$project$Pages$Register$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar key = _v0.fd;\n\t\treturn _Utils_Tuple2(\n\t\t\tA5(\n\t\t\t\t$author$project$Pages$Register$Model,\n\t\t\t\tfunction () {\n\t\t\t\t\tvar _v1 = shared.O;\n\t\t\t\t\tif (!_v1.$) {\n\t\t\t\t\t\tvar user = _v1.a;\n\t\t\t\t\t\treturn $author$project$Api$Data$Success(user);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn $author$project$Api$Data$NotAsked;\n\t\t\t\t\t}\n\t\t\t\t}(),\n\t\t\t\tkey,\n\t\t\t\t'',\n\t\t\t\t'',\n\t\t\t\t''),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Register$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Register$save = F2(\n\tfunction (model, shared) {\n\t\treturn _Utils_update(\n\t\t\tshared,\n\t\t\t{\n\t\t\t\tO: function () {\n\t\t\t\t\tvar _v0 = $author$project$Api$Data$toMaybe(model.O);\n\t\t\t\t\tif (!_v0.$) {\n\t\t\t\t\t\tvar user = _v0.a;\n\t\t\t\t\t\treturn $elm$core$Maybe$Just(user);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn shared.O;\n\t\t\t\t\t}\n\t\t\t\t}()\n\t\t\t});\n\t});\nvar $author$project$Pages$Register$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Register$GotUser = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $elm$http$Http$jsonBody = function (value) {\n\treturn A2(\n\t\t_Http_pair,\n\t\t'application/json',\n\t\tA2($elm$json$Json$Encode$encode, 0, value));\n};\nvar $author$project$Api$User$registration = function (options) {\n\tvar body = $elm$json$Json$Encode$object(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'user',\n\t\t\t\t$elm$json$Json$Encode$object(\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t'username',\n\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.cf)),\n\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t'email',\n\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.av)),\n\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t'password',\n\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.cN))\n\t\t\t\t\t\t])))\n\t\t\t]));\n\treturn $elm$http$Http$post(\n\t\t{\n\t\t\teJ: $elm$http$Http$jsonBody(body),\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fv,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder)),\n\t\t\tf_: 'https://conduit.productionready.io/api/users'\n\t\t});\n};\nvar $author$project$Pages$Register$update = F2(\n\tfunction (msg, model) {\n\t\tswitch (msg.$) {\n\t\t\tcase 0:\n\t\t\t\tswitch (msg.a) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tvar _v1 = msg.a;\n\t\t\t\t\t\tvar username = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{cf: username}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tvar _v2 = msg.a;\n\t\t\t\t\t\tvar email = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{av: email}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar _v3 = msg.a;\n\t\t\t\t\t\tvar password = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{cN: password}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t}\n\t\t\tcase 1:\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\tmodel,\n\t\t\t\t\t$author$project$Api$User$registration(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfv: $author$project$Pages$Register$GotUser,\n\t\t\t\t\t\t\tO: {av: model.av, cN: model.cN, cf: model.cf}\n\t\t\t\t\t\t}));\n\t\t\tdefault:\n\t\t\t\tvar user = msg.a;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{O: user}),\n\t\t\t\t\tfunction () {\n\t\t\t\t\t\tvar _v4 = $author$project$Api$Data$toMaybe(user);\n\t\t\t\t\t\tif (!_v4.$) {\n\t\t\t\t\t\t\tvar user_ = _v4.a;\n\t\t\t\t\t\t\treturn $elm$core$Platform$Cmd$batch(\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$author$project$Ports$saveUser(user_),\n\t\t\t\t\t\t\t\t\t\tA2($author$project$Utils$Route$navigate, model.fd, $author$project$Spa$Generated$Route$Top)\n\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn $elm$core$Platform$Cmd$none;\n\t\t\t\t\t\t}\n\t\t\t\t\t}());\n\t\t}\n\t});\nvar $author$project$Pages$Register$AttemptedSignUp = {$: 1};\nvar $author$project$Pages$Register$Email = 1;\nvar $author$project$Pages$Register$Password = 2;\nvar $author$project$Pages$Register$Updated = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $author$project$Pages$Register$Username = 0;\nvar $author$project$Pages$Register$view = function (model) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[\n\t\t\t\t$author$project$Components$UserForm$view(\n\t\t\t\t{\n\t\t\t\t\tde: {fe: 'Have an account?', fI: $author$project$Spa$Generated$Route$Login},\n\t\t\t\t\te0: _List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfe: 'Your Name',\n\t\t\t\t\t\t\tdU: $author$project$Pages$Register$Updated(0),\n\t\t\t\t\t\t\tex: 'text',\n\t\t\t\t\t\t\tez: model.cf\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfe: 'Email',\n\t\t\t\t\t\t\tdU: $author$project$Pages$Register$Updated(1),\n\t\t\t\t\t\t\tex: 'email',\n\t\t\t\t\t\t\tez: model.av\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfe: 'Password',\n\t\t\t\t\t\t\tdU: $author$project$Pages$Register$Updated(2),\n\t\t\t\t\t\t\tex: 'password',\n\t\t\t\t\t\t\tez: model.cN\n\t\t\t\t\t\t}\n\t\t\t\t\t\t]),\n\t\t\t\t\tfe: 'Sign up',\n\t\t\t\t\tft: $author$project$Pages$Register$AttemptedSignUp,\n\t\t\t\t\tO: model.O\n\t\t\t\t})\n\t\t\t]),\n\t\tfR: 'Sign up'\n\t};\n};\nvar $author$project$Pages$Register$page = $author$project$Spa$Page$application(\n\t{fb: $author$project$Pages$Register$init, fg: $author$project$Pages$Register$load, fJ: $author$project$Pages$Register$save, fN: $author$project$Pages$Register$subscriptions, fZ: $author$project$Pages$Register$update, f0: $author$project$Pages$Register$view});\nvar $author$project$Pages$Settings$init = F2(\n\tfunction (shared, _v0) {\n\t\treturn _Utils_Tuple2(\n\t\t\tfunction () {\n\t\t\t\tvar _v1 = shared.O;\n\t\t\t\tif (!_v1.$) {\n\t\t\t\t\tvar user = _v1.a;\n\t\t\t\t\treturn {av: user.av, ab: _List_Nil, ah: $elm$core$Maybe$Nothing, cN: $elm$core$Maybe$Nothing, O: shared.O, cf: user.cf};\n\t\t\t\t} else {\n\t\t\t\t\treturn {av: '', ab: _List_Nil, ah: $elm$core$Maybe$Nothing, cN: $elm$core$Maybe$Nothing, O: shared.O, cf: ''};\n\t\t\t\t}\n\t\t\t}(),\n\t\t\t$elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Settings$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Utils$Auth$protected = F2(\n\tfunction (view, model) {\n\t\tvar _v0 = model.O;\n\t\tif (!_v0.$) {\n\t\t\tvar user = _v0.a;\n\t\t\treturn A2(view, user, model);\n\t\t} else {\n\t\t\treturn {\n\t\t\t\teJ: _List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$h2,\n\t\t\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Not signed in.')\n\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$h5,\n\t\t\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Please '),\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('/login')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('sign in')\n\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(' to view this page.')\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]),\n\t\t\t\tfR: '401'\n\t\t\t};\n\t\t}\n\t});\nvar $author$project$Pages$Settings$save = F2(\n\tfunction (model, shared) {\n\t\treturn _Utils_update(\n\t\t\tshared,\n\t\t\t{O: model.O});\n\t});\nvar $author$project$Pages$Settings$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Settings$GotUser = function (a) {\n\treturn {$: 2, a: a};\n};\nvar $author$project$Api$Token$put = F2(\n\tfunction (token, options) {\n\t\treturn A4($author$project$Api$Token$request, 'PUT', options.eJ, token, options);\n\t});\nvar $author$project$Api$User$update = function (options) {\n\tvar body = $elm$json$Json$Encode$object(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t_Utils_Tuple2(\n\t\t\t\t'user',\n\t\t\t\t$elm$json$Json$Encode$object(\n\t\t\t\t\t$elm$core$List$concat(\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t'username',\n\t\t\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.cf)),\n\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t'email',\n\t\t\t\t\t\t\t\t\t$elm$json$Json$Encode$string(options.O.av))\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\tvar _v0 = options.O.cN;\n\t\t\t\t\t\t\t\tif (!_v0.$) {\n\t\t\t\t\t\t\t\t\tvar password = _v0.a;\n\t\t\t\t\t\t\t\t\treturn _List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t\t\t'password',\n\t\t\t\t\t\t\t\t\t\t\t$elm$json$Json$Encode$string(password))\n\t\t\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\treturn _List_Nil;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}()\n\t\t\t\t\t\t\t]))))\n\t\t\t]));\n\treturn A2(\n\t\t$author$project$Api$Token$put,\n\t\t$elm$core$Maybe$Just(options.c9),\n\t\t{\n\t\t\teJ: $elm$http$Http$jsonBody(body),\n\t\t\teX: A2(\n\t\t\t\t$author$project$Api$Data$expectJson,\n\t\t\t\toptions.fv,\n\t\t\t\tA2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder)),\n\t\t\tf_: 'https://conduit.productionready.io/api/user'\n\t\t});\n};\nvar $author$project$Pages$Settings$update = F2(\n\tfunction (msg, model) {\n\t\tswitch (msg.$) {\n\t\t\tcase 0:\n\t\t\t\tswitch (msg.a) {\n\t\t\t\t\tcase 0:\n\t\t\t\t\t\tvar _v1 = msg.a;\n\t\t\t\t\t\tvar value = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{cf: value}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tvar _v2 = msg.a;\n\t\t\t\t\t\tvar value = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{av: value}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvar _v3 = msg.a;\n\t\t\t\t\t\tvar value = msg.b;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tcN: $elm$core$Maybe$Just(value)\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t}\n\t\t\tcase 1:\n\t\t\t\tvar user = msg.a;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{ab: _List_Nil, ah: $elm$core$Maybe$Nothing}),\n\t\t\t\t\t$author$project$Api$User$update(\n\t\t\t\t\t\t{fv: $author$project$Pages$Settings$GotUser, c9: user.c9, O: model}));\n\t\t\tdefault:\n\t\t\t\tswitch (msg.a.$) {\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tvar user = msg.a.a;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tah: $elm$core$Maybe$Just('User updated!'),\n\t\t\t\t\t\t\t\t\tO: $elm$core$Maybe$Just(user)\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t$author$project$Ports$saveUser(user));\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tvar reasons = msg.a.a;\n\t\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t{ab: reasons}),\n\t\t\t\t\t\t\t$elm$core$Platform$Cmd$none);\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t\t\t\t}\n\t\t}\n\t});\nvar $author$project$Pages$Settings$Email = 1;\nvar $author$project$Pages$Settings$Password = 2;\nvar $author$project$Pages$Settings$SubmittedForm = function (a) {\n\treturn {$: 1, a: a};\n};\nvar $author$project$Pages$Settings$Updated = F2(\n\tfunction (a, b) {\n\t\treturn {$: 0, a: a, b: b};\n\t});\nvar $author$project$Pages$Settings$Username = 0;\nvar $elm$html$Html$br = _VirtualDom_node('br');\nvar $author$project$Utils$Maybe$view = F2(\n\tfunction (maybe, toView) {\n\t\tif (!maybe.$) {\n\t\t\tvar value = maybe.a;\n\t\t\treturn toView(value);\n\t\t} else {\n\t\t\treturn $elm$html$Html$text('');\n\t\t}\n\t});\nvar $author$project$Pages$Settings$view = F2(\n\tfunction (user, model) {\n\t\treturn {\n\t\t\teJ: _List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('settings-page')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('row')\n\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('col-md-6 offset-md-3 col-xs-12')\n\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$h1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-xs-center')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Your Settings')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$br, _List_Nil, _List_Nil),\n\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Components$ErrorList$view(model.ab),\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Utils$Maybe$view,\n\t\t\t\t\t\t\t\t\t\t\t\t\tmodel.ah,\n\t\t\t\t\t\t\t\t\t\t\t\t\tfunction (message) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$p,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-success')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text(message)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$form,\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onSubmit(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Pages$Settings$SubmittedForm(user))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$fieldset,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_Nil,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$fieldset,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-group')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-control form-control-lg'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder('Your Username'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$type_('text'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$value(model.cf),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Pages$Settings$Updated(0))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$fieldset,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-group')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-control form-control-lg'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder('Email'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$type_('text'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$value(model.av),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Pages$Settings$Updated(1))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$fieldset,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-group')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$input,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('form-control form-control-lg'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$placeholder('Password'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$type_('password'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$value(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2($elm$core$Maybe$withDefault, '', model.cN)),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onInput(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$author$project$Pages$Settings$Updated(2))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$button,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('btn btn-lg btn-primary pull-xs-right')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Update Settings')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t]))\n\t\t\t\t]),\n\t\t\tfR: 'Settings'\n\t\t};\n\t});\nvar $author$project$Pages$Settings$page = $author$project$Spa$Page$application(\n\t{\n\t\tfb: $author$project$Pages$Settings$init,\n\t\tfg: $author$project$Pages$Settings$load,\n\t\tfJ: $author$project$Pages$Settings$save,\n\t\tfN: $author$project$Pages$Settings$subscriptions,\n\t\tfZ: $author$project$Pages$Settings$update,\n\t\tf0: $author$project$Utils$Auth$protected($author$project$Pages$Settings$view)\n\t});\nvar $author$project$Pages$Top$FeedFor = function (a) {\n\treturn {$: 0, a: a};\n};\nvar $author$project$Pages$Top$Global = {$: 1};\nvar $author$project$Pages$Top$init = F2(\n\tfunction (shared, _v0) {\n\t\tvar activeTab = A2(\n\t\t\t$elm$core$Maybe$withDefault,\n\t\t\t$author$project$Pages$Top$Global,\n\t\t\tA2($elm$core$Maybe$map, $author$project$Pages$Top$FeedFor, shared.O));\n\t\tvar model = {db: activeTab, dM: $author$project$Api$Data$Loading, eo: $author$project$Api$Data$Loading, O: shared.O};\n\t\treturn _Utils_Tuple2(\n\t\t\tmodel,\n\t\t\t$elm$core$Platform$Cmd$batch(_List_Nil));\n\t});\nvar $author$project$Pages$Top$load = F2(\n\tfunction (_v0, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Top$save = F2(\n\tfunction (_v0, shared) {\n\t\treturn shared;\n\t});\nvar $author$project$Pages$Top$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Pages$Top$update = F2(\n\tfunction (msg, model) {\n\t\treturn _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Pages$Top$view = function (model) {\n\treturn {\n\t\teJ: _List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('home-page')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('banner')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container')\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t])),\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('container page')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('row')\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('col-md-9')\n\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]),\n\t\tfR: ''\n\t};\n};\nvar $author$project$Pages$Top$page = $author$project$Spa$Page$application(\n\t{fb: $author$project$Pages$Top$init, fg: $author$project$Pages$Top$load, fJ: $author$project$Pages$Top$save, fN: $author$project$Pages$Top$subscriptions, fZ: $author$project$Pages$Top$update, f0: $author$project$Pages$Top$view});\nvar $elm$core$List$drop = F2(\n\tfunction (n, list) {\n\t\tdrop:\n\t\twhile (true) {\n\t\t\tif (n <= 0) {\n\t\t\t\treturn list;\n\t\t\t} else {\n\t\t\t\tif (!list.b) {\n\t\t\t\t\treturn list;\n\t\t\t\t} else {\n\t\t\t\t\tvar x = list.a;\n\t\t\t\t\tvar xs = list.b;\n\t\t\t\t\tvar $temp$n = n - 1,\n\t\t\t\t\t\t$temp$list = xs;\n\t\t\t\t\tn = $temp$n;\n\t\t\t\t\tlist = $temp$list;\n\t\t\t\t\tcontinue drop;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\nvar $elm$core$Dict$fromList = function (assocs) {\n\treturn A3(\n\t\t$elm$core$List$foldl,\n\t\tF2(\n\t\t\tfunction (_v0, dict) {\n\t\t\t\tvar key = _v0.a;\n\t\t\t\tvar value = _v0.b;\n\t\t\t\treturn A3($elm$core$Dict$insert, key, value, dict);\n\t\t\t}),\n\t\t$elm$core$Dict$empty,\n\t\tassocs);\n};\nvar $elm$core$List$head = function (list) {\n\tif (list.b) {\n\t\tvar x = list.a;\n\t\tvar xs = list.b;\n\t\treturn $elm$core$Maybe$Just(x);\n\t} else {\n\t\treturn $elm$core$Maybe$Nothing;\n\t}\n};\nvar $elm$core$Tuple$mapBoth = F3(\n\tfunction (funcA, funcB, _v0) {\n\t\tvar x = _v0.a;\n\t\tvar y = _v0.b;\n\t\treturn _Utils_Tuple2(\n\t\t\tfuncA(x),\n\t\t\tfuncB(y));\n\t});\nvar $author$project$Spa$Url$toQueryDict = function (queryString) {\n\tvar second = A2(\n\t\t$elm$core$Basics$composeR,\n\t\t$elm$core$List$drop(1),\n\t\t$elm$core$List$head);\n\tvar toTuple = function (list) {\n\t\treturn A2(\n\t\t\t$elm$core$Maybe$map,\n\t\t\tfunction (first) {\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\tfirst,\n\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$core$Maybe$withDefault,\n\t\t\t\t\t\t'',\n\t\t\t\t\t\tsecond(list)));\n\t\t\t},\n\t\t\t$elm$core$List$head(list));\n\t};\n\tvar decode = A2(\n\t\t$elm$core$Basics$composeR,\n\t\t$elm$url$Url$percentDecode,\n\t\t$elm$core$Maybe$withDefault(''));\n\treturn $elm$core$Dict$fromList(\n\t\tA2(\n\t\t\t$elm$core$List$map,\n\t\t\tA2($elm$core$Tuple$mapBoth, decode, decode),\n\t\t\tA2(\n\t\t\t\t$elm$core$List$filterMap,\n\t\t\t\ttoTuple,\n\t\t\t\tA2(\n\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t$elm$core$String$split('='),\n\t\t\t\t\tA2($elm$core$String$split, '&', queryString)))));\n};\nvar $author$project$Spa$Url$create = F3(\n\tfunction (params, key, url) {\n\t\treturn {\n\t\t\tfd: key,\n\t\t\tfB: params,\n\t\t\tcS: A2(\n\t\t\t\t$elm$core$Maybe$withDefault,\n\t\t\t\t$elm$core$Dict$empty,\n\t\t\t\tA2($elm$core$Maybe$map, $author$project$Spa$Url$toQueryDict, url.cS)),\n\t\t\td3: url\n\t\t};\n\t});\nvar $elm$core$Platform$Cmd$map = _Platform_map;\nvar $elm$core$Platform$Sub$map = _Platform_map;\nvar $elm$virtual_dom$VirtualDom$map = _VirtualDom_map;\nvar $elm$html$Html$map = $elm$virtual_dom$VirtualDom$map;\nvar $author$project$Spa$Document$map = F2(\n\tfunction (fn, doc) {\n\t\treturn {\n\t\t\teJ: A2(\n\t\t\t\t$elm$core$List$map,\n\t\t\t\t$elm$html$Html$map(fn),\n\t\t\t\tdoc.eJ),\n\t\t\tfR: doc.fR\n\t\t};\n\t});\nvar $author$project$Spa$Generated$Pages$upgrade = F3(\n\tfunction (toModel, toMsg, page) {\n\t\tvar update_ = F2(\n\t\t\tfunction (msg, model) {\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$core$Tuple$mapBoth,\n\t\t\t\t\ttoModel,\n\t\t\t\t\t$elm$core$Platform$Cmd$map(toMsg),\n\t\t\t\t\tA2(page.fZ, msg, model));\n\t\t\t});\n\t\tvar load_ = F2(\n\t\t\tfunction (model, shared) {\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$core$Tuple$mapBoth,\n\t\t\t\t\ttoModel,\n\t\t\t\t\t$elm$core$Platform$Cmd$map(toMsg),\n\t\t\t\t\tA2(page.fg, shared, model));\n\t\t\t});\n\t\tvar init_ = F2(\n\t\t\tfunction (params, shared) {\n\t\t\t\treturn A3(\n\t\t\t\t\t$elm$core$Tuple$mapBoth,\n\t\t\t\t\ttoModel,\n\t\t\t\t\t$elm$core$Platform$Cmd$map(toMsg),\n\t\t\t\t\tA2(\n\t\t\t\t\t\tpage.fb,\n\t\t\t\t\t\tshared,\n\t\t\t\t\t\tA3($author$project$Spa$Url$create, params, shared.fd, shared.f_)));\n\t\t\t});\n\t\tvar bundle_ = function (model) {\n\t\t\treturn {\n\t\t\t\tfg: load_(model),\n\t\t\t\tfJ: page.fJ(model),\n\t\t\t\tfN: A2(\n\t\t\t\t\t$elm$core$Platform$Sub$map,\n\t\t\t\t\ttoMsg,\n\t\t\t\t\tpage.fN(model)),\n\t\t\t\tf0: A2(\n\t\t\t\t\t$author$project$Spa$Document$map,\n\t\t\t\t\ttoMsg,\n\t\t\t\t\tpage.f0(model))\n\t\t\t};\n\t\t};\n\t\treturn {D: bundle_, fb: init_, fZ: update_};\n\t});\nvar $author$project$Spa$Generated$Pages$pages = {\n\tbt: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Login__Model, $author$project$Spa$Generated$Pages$Login__Msg, $author$project$Pages$Login$page),\n\tbx: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$NotFound__Model, $author$project$Spa$Generated$Pages$NotFound__Msg, $author$project$Pages$NotFound$page),\n\tbQ: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Profile__Username_String__Model, $author$project$Spa$Generated$Pages$Profile__Username_String__Msg, $author$project$Pages$Profile$Username_String$page),\n\tbR: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Projects__Model, $author$project$Spa$Generated$Pages$Projects__Msg, $author$project$Pages$Projects$page),\n\tb1: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Register__Model, $author$project$Spa$Generated$Pages$Register__Msg, $author$project$Pages$Register$page),\n\tb8: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Settings__Model, $author$project$Spa$Generated$Pages$Settings__Msg, $author$project$Pages$Settings$page),\n\tcc: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Top__Model, $author$project$Spa$Generated$Pages$Top__Msg, $author$project$Pages$Top$page)\n};\nvar $author$project$Spa$Generated$Pages$init = function (route) {\n\tswitch (route.$) {\n\t\tcase 0:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.cc.fb(0);\n\t\tcase 1:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bt.fb(0);\n\t\tcase 2:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bx.fb(0);\n\t\tcase 3:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bR.fb(0);\n\t\tcase 4:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.b1.fb(0);\n\t\tcase 5:\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.b8.fb(0);\n\t\tdefault:\n\t\t\tvar params = route.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bQ.fb(params);\n\t}\n};\nvar $author$project$Main$init = F3(\n\tfunction (flags, url, key) {\n\t\tvar _v0 = A3($author$project$Shared$init, flags, url, key);\n\t\tvar shared = _v0.a;\n\t\tvar sharedCmd = _v0.b;\n\t\tvar _v1 = A2(\n\t\t\t$author$project$Spa$Generated$Pages$init,\n\t\t\t$author$project$Utils$Route$fromUrl(url),\n\t\t\tshared);\n\t\tvar page = _v1.a;\n\t\tvar pageCmd = _v1.b;\n\t\treturn _Utils_Tuple2(\n\t\t\tA2($author$project$Main$Model, shared, page),\n\t\t\t$elm$core$Platform$Cmd$batch(\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Shared, sharedCmd),\n\t\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd)\n\t\t\t\t\t])));\n\t});\nvar $author$project$Shared$subscriptions = function (_v0) {\n\treturn $elm$core$Platform$Sub$none;\n};\nvar $author$project$Spa$Generated$Pages$bundle = function (bigModel) {\n\tswitch (bigModel.$) {\n\t\tcase 0:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.cc.D(model);\n\t\tcase 1:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bt.D(model);\n\t\tcase 2:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bx.D(model);\n\t\tcase 3:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bR.D(model);\n\t\tcase 4:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.b1.D(model);\n\t\tcase 5:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.b8.D(model);\n\t\tdefault:\n\t\t\tvar model = bigModel.a;\n\t\t\treturn $author$project$Spa$Generated$Pages$pages.bQ.D(model);\n\t}\n};\nvar $author$project$Spa$Generated$Pages$subscriptions = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Pages$bundle,\n\tfunction ($) {\n\t\treturn $.fN;\n\t});\nvar $author$project$Main$subscriptions = function (model) {\n\treturn $elm$core$Platform$Sub$batch(\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$core$Platform$Sub$map,\n\t\t\t\t$author$project$Main$Shared,\n\t\t\t\t$author$project$Shared$subscriptions(model.x)),\n\t\t\t\tA2(\n\t\t\t\t$elm$core$Platform$Sub$map,\n\t\t\t\t$author$project$Main$Pages,\n\t\t\t\t$author$project$Spa$Generated$Pages$subscriptions(model.C))\n\t\t\t]));\n};\nvar $author$project$Spa$Document$toBrowserDocument = function (doc) {\n\treturn {eJ: doc.eJ, fR: doc.fR};\n};\nvar $elm$browser$Browser$Navigation$load = _Browser_load;\nvar $author$project$Spa$Generated$Pages$load = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Pages$bundle,\n\tfunction ($) {\n\t\treturn $.fg;\n\t});\nvar $author$project$Spa$Generated$Pages$save = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Pages$bundle,\n\tfunction ($) {\n\t\treturn $.fJ;\n\t});\nvar $elm$url$Url$addPort = F2(\n\tfunction (maybePort, starter) {\n\t\tif (maybePort.$ === 1) {\n\t\t\treturn starter;\n\t\t} else {\n\t\t\tvar port_ = maybePort.a;\n\t\t\treturn starter + (':' + $elm$core$String$fromInt(port_));\n\t\t}\n\t});\nvar $elm$url$Url$addPrefixed = F3(\n\tfunction (prefix, maybeSegment, starter) {\n\t\tif (maybeSegment.$ === 1) {\n\t\t\treturn starter;\n\t\t} else {\n\t\t\tvar segment = maybeSegment.a;\n\t\t\treturn _Utils_ap(\n\t\t\t\tstarter,\n\t\t\t\t_Utils_ap(prefix, segment));\n\t\t}\n\t});\nvar $elm$url$Url$toString = function (url) {\n\tvar http = function () {\n\t\tvar _v0 = url.d2;\n\t\tif (!_v0) {\n\t\t\treturn 'http://';\n\t\t} else {\n\t\t\treturn 'https://';\n\t\t}\n\t}();\n\treturn A3(\n\t\t$elm$url$Url$addPrefixed,\n\t\t'#',\n\t\turl.dw,\n\t\tA3(\n\t\t\t$elm$url$Url$addPrefixed,\n\t\t\t'?',\n\t\t\turl.cS,\n\t\t\t_Utils_ap(\n\t\t\t\tA2(\n\t\t\t\t\t$elm$url$Url$addPort,\n\t\t\t\t\turl.dZ,\n\t\t\t\t\t_Utils_ap(http, url.e6)),\n\t\t\t\turl.dX)));\n};\nvar $elm$json$Json$Encode$null = _Json_encodeNull;\nvar $author$project$Ports$clearUser = $author$project$Ports$outgoing(\n\t{cs: $elm$json$Json$Encode$null, c7: 'clearUser'});\nvar $author$project$Shared$update = F2(\n\tfunction (msg, model) {\n\t\treturn _Utils_Tuple2(\n\t\t\t_Utils_update(\n\t\t\t\tmodel,\n\t\t\t\t{O: $elm$core$Maybe$Nothing}),\n\t\t\t$author$project$Ports$clearUser);\n\t});\nvar $author$project$Spa$Generated$Pages$update = F2(\n\tfunction (bigMsg, bigModel) {\n\t\tvar _v0 = _Utils_Tuple2(bigMsg, bigModel);\n\t\t_v0$7:\n\t\twhile (true) {\n\t\t\tswitch (_v0.a.$) {\n\t\t\t\tcase 0:\n\t\t\t\t\tif (!_v0.b.$) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.cc.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 1:\n\t\t\t\t\tif (_v0.b.$ === 1) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.bt.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 2:\n\t\t\t\t\tif (_v0.b.$ === 2) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.bx.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 3:\n\t\t\t\t\tif (_v0.b.$ === 3) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.bR.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 4:\n\t\t\t\t\tif (_v0.b.$ === 4) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.b1.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tcase 5:\n\t\t\t\t\tif (_v0.b.$ === 5) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.b8.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tif (_v0.b.$ === 6) {\n\t\t\t\t\t\tvar msg = _v0.a.a;\n\t\t\t\t\t\tvar model = _v0.b.a;\n\t\t\t\t\t\treturn A2($author$project$Spa$Generated$Pages$pages.bQ.fZ, msg, model);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak _v0$7;\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn _Utils_Tuple2(bigModel, $elm$core$Platform$Cmd$none);\n\t});\nvar $author$project$Main$update = F2(\n\tfunction (msg, model) {\n\t\tswitch (msg.$) {\n\t\t\tcase 0:\n\t\t\t\tif (!msg.a.$) {\n\t\t\t\t\tvar url = msg.a.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$browser$Browser$Navigation$pushUrl,\n\t\t\t\t\t\t\tmodel.x.fd,\n\t\t\t\t\t\t\t$elm$url$Url$toString(url)));\n\t\t\t\t} else {\n\t\t\t\t\tvar href = msg.a.a;\n\t\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t$elm$browser$Browser$Navigation$load(href));\n\t\t\t\t}\n\t\t\tcase 1:\n\t\t\t\tvar url = msg.a;\n\t\t\t\tvar original = model.x;\n\t\t\t\tvar shared = _Utils_update(\n\t\t\t\t\toriginal,\n\t\t\t\t\t{f_: url});\n\t\t\t\tvar _v1 = _Utils_eq(url.dX, model.x.f_.dX) ? A2($author$project$Spa$Generated$Pages$load, model.C, shared) : A2(\n\t\t\t\t\t$author$project$Spa$Generated$Pages$init,\n\t\t\t\t\t$author$project$Utils$Route$fromUrl(url),\n\t\t\t\t\tshared);\n\t\t\t\tvar page = _v1.a;\n\t\t\t\tvar pageCmd = _v1.b;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tC: page,\n\t\t\t\t\t\t\tx: A2($author$project$Spa$Generated$Pages$save, page, shared)\n\t\t\t\t\t\t}),\n\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd));\n\t\t\tcase 2:\n\t\t\t\tvar sharedMsg = msg.a;\n\t\t\t\tvar _v2 = A2($author$project$Shared$update, sharedMsg, model.x);\n\t\t\t\tvar shared = _v2.a;\n\t\t\t\tvar sharedCmd = _v2.b;\n\t\t\t\tvar _v3 = A2($author$project$Spa$Generated$Pages$load, model.C, shared);\n\t\t\t\tvar page = _v3.a;\n\t\t\t\tvar pageCmd = _v3.b;\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{C: page, x: shared}),\n\t\t\t\t\t$elm$core$Platform$Cmd$batch(\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Shared, sharedCmd),\n\t\t\t\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd)\n\t\t\t\t\t\t\t])));\n\t\t\tdefault:\n\t\t\t\tvar pageMsg = msg.a;\n\t\t\t\tvar _v4 = A2($author$project$Spa$Generated$Pages$update, pageMsg, model.C);\n\t\t\t\tvar page = _v4.a;\n\t\t\t\tvar pageCmd = _v4.b;\n\t\t\t\tvar shared = A2($author$project$Spa$Generated$Pages$save, page, model.x);\n\t\t\t\treturn _Utils_Tuple2(\n\t\t\t\t\t_Utils_update(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t{C: page, x: shared}),\n\t\t\t\t\tA2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd));\n\t\t}\n\t});\nvar $elm$json$Json$Decode$value = _Json_decodeValue;\nvar $author$project$Shared$ClickedSignOut = 0;\nvar $elm$virtual_dom$VirtualDom$node = function (tag) {\n\treturn _VirtualDom_node(\n\t\t_VirtualDom_noScript(tag));\n};\nvar $elm$html$Html$node = $elm$virtual_dom$VirtualDom$node;\nvar $elm$html$Html$Attributes$rel = _VirtualDom_attribute('rel');\nvar $author$project$Shared$slogan = 'Highly flexible Application Runtime Platform';\nvar $rundis$elm_bootstrap$Bootstrap$CDN$stylesheet = A3(\n\t$elm$html$Html$node,\n\t'link',\n\t_List_fromArray(\n\t\t[\n\t\t\t$elm$html$Html$Attributes$rel('stylesheet'),\n\t\t\t$elm$html$Html$Attributes$href('https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css')\n\t\t]),\n\t_List_Nil);\nvar $elm$html$Html$footer = _VirtualDom_node('footer');\nvar $author$project$Components$Footer$view = A2(\n\t$elm$html$Html$footer,\n\t_List_fromArray(\n\t\t[\n\t\t\t$elm$html$Html$Attributes$class('footer')\n\t\t]),\n\t_List_fromArray(\n\t\t[\n\t\t\tA2(\n\t\t\t$elm$html$Html$div,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('container text-center')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$span,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('text-muted')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text('© 2020 Copyright sahli.net')\n\t\t\t\t\t\t]))\n\t\t\t\t]))\n\t\t]));\nvar $elm$virtual_dom$VirtualDom$property = F2(\n\tfunction (key, value) {\n\t\treturn A2(\n\t\t\t_VirtualDom_property,\n\t\t\t_VirtualDom_noInnerHtmlOrFormAction(key),\n\t\t\t_VirtualDom_noJavaScriptOrHtmlUri(value));\n\t});\nvar $elm$html$Html$Attributes$property = $elm$virtual_dom$VirtualDom$property;\nvar $author$project$Components$Navbar$stringProperty = F2(\n\tfunction (name, string) {\n\t\treturn A2(\n\t\t\t$elm$html$Html$Attributes$property,\n\t\t\tname,\n\t\t\t$elm$json$Json$Encode$string(string));\n\t});\nvar $author$project$Components$Navbar$ariaControls = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'aria-controls', value);\n};\nvar $author$project$Components$Navbar$ariaExpanded = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'aria-expanded', value);\n};\nvar $author$project$Components$Navbar$ariaLabel = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'aria-label', value);\n};\nvar $author$project$Components$Navbar$dataTarget = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'data-target', value);\n};\nvar $author$project$Components$Navbar$dataToggle = function (value) {\n\treturn A2($author$project$Components$Navbar$stringProperty, 'data-toggle', value);\n};\nvar $elm$html$Html$i = _VirtualDom_node('i');\nvar $elm$html$Html$Attributes$id = $elm$html$Html$Attributes$stringProperty('id');\nvar $elm$html$Html$nav = _VirtualDom_node('nav');\nvar $elm$virtual_dom$VirtualDom$style = _VirtualDom_style;\nvar $elm$html$Html$Attributes$style = $elm$virtual_dom$VirtualDom$style;\nvar $author$project$Components$Navbar$viewLink = F2(\n\tfunction (currentRoute, _v0) {\n\t\tvar label = _v0.a;\n\t\tvar route = _v0.b;\n\t\treturn A2(\n\t\t\t$elm$html$Html$li,\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\t$elm$html$Html$Attributes$class('nav-item')\n\t\t\t\t]),\n\t\t\t_List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-link'),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$classList(\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t_Utils_Tuple2(\n\t\t\t\t\t\t\t\t\t'active',\n\t\t\t\t\t\t\t\t\t_Utils_eq(currentRoute, route))\n\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t\t$author$project$Spa$Generated$Route$toString(route))\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$text(label)\n\t\t\t\t\t\t]))\n\t\t\t\t]));\n\t});\nvar $author$project$Components$Navbar$view = function (options) {\n\treturn A2(\n\t\t$elm$html$Html$nav,\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\t$elm$html$Html$Attributes$class('navbar navbar-expand-lg navbar-light')\n\t\t\t]),\n\t\t_List_fromArray(\n\t\t\t[\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$a,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('navbar-brand'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$href(\n\t\t\t\t\t\t$author$project$Spa$Generated$Route$toString($author$project$Spa$Generated$Route$Top)),\n\t\t\t\t\t\tA2($elm$html$Html$Attributes$style, 'color', '#FF5733')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$text('Tumbo')\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$button,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('navbar-toggler'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$type_('button'),\n\t\t\t\t\t\t$author$project$Components$Navbar$dataToggle('collapse'),\n\t\t\t\t\t\t$author$project$Components$Navbar$dataTarget('#navbarTogglerDemo02'),\n\t\t\t\t\t\t$author$project$Components$Navbar$ariaControls('navbarTogglerDemo02'),\n\t\t\t\t\t\t$author$project$Components$Navbar$ariaExpanded('false'),\n\t\t\t\t\t\t$author$project$Components$Navbar$ariaLabel('Toggle navigation')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$span,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('navbar-toggler-icon')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t])),\n\t\t\t\tA2(\n\t\t\t\t$elm$html$Html$div,\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\t$elm$html$Html$Attributes$class('collapse navbar-collapse'),\n\t\t\t\t\t\t$elm$html$Html$Attributes$id('navbarTogglerDemo02')\n\t\t\t\t\t]),\n\t\t\t\t_List_fromArray(\n\t\t\t\t\t[\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$ul,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav navbar-nav ml-auto')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\tvar _v0 = options.O;\n\t\t\t\t\t\t\tif (!_v0.$) {\n\t\t\t\t\t\t\t\treturn $elm$core$List$concat(\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t\t\t\t\t\t\t$author$project$Components$Navbar$viewLink(options.dm),\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Home', $author$project$Spa$Generated$Route$Top),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Projects', $author$project$Spa$Generated$Route$Projects),\n\t\t\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Settings', $author$project$Spa$Generated$Route$Settings)\n\t\t\t\t\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$li,\n\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-item')\n\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('nav-link'),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Events$onClick(options.fw)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$elm$html$Html$text('Sign out')\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t\t\t]))\n\t\t\t\t\t\t\t\t\t\t\t])\n\t\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn A2(\n\t\t\t\t\t\t\t\t\t$elm$core$List$map,\n\t\t\t\t\t\t\t\t\t$author$project$Components$Navbar$viewLink(options.dm),\n\t\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Home', $author$project$Spa$Generated$Route$Top),\n\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Sign in', $author$project$Spa$Generated$Route$Login),\n\t\t\t\t\t\t\t\t\t\t\t_Utils_Tuple2('Sign up', $author$project$Spa$Generated$Route$Register)\n\t\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}()),\n\t\t\t\t\t\tA2(\n\t\t\t\t\t\t$elm$html$Html$a,\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$target('blank'),\n\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('https://github.com/sahlinet/go-tumbo3')\n\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t\t$elm$html$Html$i,\n\t\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('fa fa-github'),\n\t\t\t\t\t\t\t\t\t\tA2($elm$html$Html$Attributes$style, 'color', 'black')\n\t\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t\t_List_Nil)\n\t\t\t\t\t\t\t]))\n\t\t\t\t\t]))\n\t\t\t]));\n};\nvar $author$project$Shared$view = F2(\n\tfunction (_v0, model) {\n\t\tvar page = _v0.C;\n\t\tvar toMsg = _v0.fV;\n\t\treturn {\n\t\t\teJ: _List_fromArray(\n\t\t\t\t[\n\t\t\t\t\tA3(\n\t\t\t\t\t$elm$html$Html$node,\n\t\t\t\t\t'link',\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$rel('stylesheet'),\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$href('https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_Nil),\n\t\t\t\t\t$rundis$elm_bootstrap$Bootstrap$CDN$stylesheet,\n\t\t\t\t\tA2(\n\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('layout')\n\t\t\t\t\t\t]),\n\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t$author$project$Components$Navbar$view(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdm: $author$project$Utils$Route$fromUrl(model.f_),\n\t\t\t\t\t\t\t\tfw: toMsg(0),\n\t\t\t\t\t\t\t\tO: model.O\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('jumbotron')\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$text($author$project$Shared$slogan)\n\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\tA2(\n\t\t\t\t\t\t\t$elm$html$Html$div,\n\t\t\t\t\t\t\t_List_fromArray(\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t$elm$html$Html$Attributes$class('page')\n\t\t\t\t\t\t\t\t]),\n\t\t\t\t\t\t\tpage.eJ),\n\t\t\t\t\t\t\t$author$project$Components$Footer$view\n\t\t\t\t\t\t]))\n\t\t\t\t]),\n\t\t\tfR: $elm$core$String$isEmpty(page.fR) ? 'Tumbo' : (page.fR + ' | Tumbo')\n\t\t};\n\t});\nvar $author$project$Spa$Generated$Pages$view = A2(\n\t$elm$core$Basics$composeR,\n\t$author$project$Spa$Generated$Pages$bundle,\n\tfunction ($) {\n\t\treturn $.f0;\n\t});\nvar $author$project$Main$view = function (model) {\n\treturn A2(\n\t\t$author$project$Shared$view,\n\t\t{\n\t\t\tC: A2(\n\t\t\t\t$author$project$Spa$Document$map,\n\t\t\t\t$author$project$Main$Pages,\n\t\t\t\t$author$project$Spa$Generated$Pages$view(model.C)),\n\t\t\tfV: $author$project$Main$Shared\n\t\t},\n\t\tmodel.x);\n};\nvar $author$project$Main$main = $elm$browser$Browser$application(\n\t{\n\t\tfb: $author$project$Main$init,\n\t\tfx: $author$project$Main$UrlChanged,\n\t\tfy: $author$project$Main$LinkClicked,\n\t\tfN: $author$project$Main$subscriptions,\n\t\tfZ: $author$project$Main$update,\n\t\tf0: A2($elm$core$Basics$composeR, $author$project$Main$view, $author$project$Spa$Document$toBrowserDocument)\n\t});\n_Platform_export({'Main':{'init':$author$project$Main$main($elm$json$Json$Decode$value)(0)}});}(this));"), } file6 := &embedded.EmbeddedFile{ Filename: "favicon.ico", @@ -90,7 +90,7 @@ func init() { } dir4 := &embedded.EmbeddedDir{ Filename: "dist", - DirModTime: time.Unix(1606682149, 0), + DirModTime: time.Unix(1611413802, 0), ChildFiles: []*embedded.EmbeddedFile{ file5, // "dist/elm.compiled.js" diff --git a/pkg/controllers/service.go b/pkg/controllers/service.go index 6f94ef5..16ef98d 100644 --- a/pkg/controllers/service.go +++ b/pkg/controllers/service.go @@ -111,8 +111,9 @@ func ProjectServiceState(projectID int, state string, tx *gorm.DB) (*models.Proj project.GitRepository.Version = runnable.Source.Version log.Info("Running version ", project.GitRepository.Version) - project.State = "Running" - project.ErrorMsg = "" + project.ProjectState = &models.ProjectState{ + State: "Running", + } project.Update(tx) } @@ -139,7 +140,7 @@ func ProjectServiceState(projectID int, state string, tx *gorm.DB) (*models.Proj return project, err } - project.State = "Stopped" + project.ProjectState.State = "Stopped" project.Update(nil) } diff --git a/pkg/models/models.go b/pkg/models/models.go index d18b843..1e9058b 100755 --- a/pkg/models/models.go +++ b/pkg/models/models.go @@ -42,10 +42,16 @@ func Setup(repository *Repository) *gorm.DB { if err != nil { log.Fatal(err) } + err = db.Table("git_repositories").AutoMigrate(&GitRepository{}) if err != nil { log.Fatal(err) } + + err = db.Table("project_state").AutoMigrate(&ProjectState{}) + if err != nil { + log.Fatal(err) + } err = db.Table("auths").AutoMigrate(&Auth{}) if err != nil { log.Fatal(err) diff --git a/pkg/models/project.go b/pkg/models/project.go index f31bca0..3b4ca7a 100755 --- a/pkg/models/project.go +++ b/pkg/models/project.go @@ -6,6 +6,7 @@ import ( log "github.com/sirupsen/logrus" "gorm.io/gorm" + "gorm.io/gorm/clause" ) type Project struct { @@ -15,15 +16,27 @@ type Project struct { Description string `json:"description"` CreatedBy string `json:"created_by"` ModifiedBy string `json:"modified_by"` - State string `json:"state"` BackOffDatetime time.Time `json:"backoff_datetime"` - ErrorMsg string `json:"errormsg"` BuildRetries uint `json:"retry"` + ProjectState *ProjectState `json:"state"` GitRepository *GitRepository `json:"gitrepository"` Runner *Runner `json:"runner"` } +type ProjectState struct { + Model + + State string `json:"state"` + ErrorMsg string `json:"errormsg"` + + ProjectID uint +} + +func (ProjectState) TableName() string { + return "project_state" +} + type GitRepository struct { Model @@ -76,7 +89,7 @@ func GetProjectTotal() (int64, error) { func GetProjects() ([]*Project, error) { var projects []*Project //err := db.Offset(pageNum).Limit(pageSize).Find(&projects).Error - err := db.Preload("GitRepository").Find(&projects).Error + err := db.Preload("GitRepository").Preload("ProjectState").Order("name").Find(&projects).Error if err != nil && err != gorm.ErrRecordNotFound { return nil, err } @@ -87,7 +100,7 @@ func GetProjects() ([]*Project, error) { // GetProject Get a single project based on ID func GetProject(id uint) (*Project, error) { var project Project - err := db.Preload("GitRepository").Where("id = ?", id).First(&project).Error + err := db.Preload("GitRepository").Preload("ProjectState").Where("id = ?", id).First(&project).Error if err != nil && err != gorm.ErrRecordNotFound { return nil, err } @@ -101,8 +114,8 @@ func GetProjectForShareOrUpdate(id uint, strength string) (*Project, *gorm.DB, e tx := db.Begin() //tx.Set("gorm:query_option", "NOWAIT") //err := tx.Debug().Clauses(clause.Locking{Strength: strength}, NoWait{}).Preload("GitRepository").Where("id = ?", id).First(&project).Error - //err := tx.Debug().Clauses(clause.Locking{Strength: strength, Options: "NOWAIT"}).Preload("GitRepository").Where("id = ?", id).First(&project).Error - err := tx.Debug().Preload("GitRepository").Where("id = ?", id).First(&project).Error + err := tx.Debug().Clauses(clause.Locking{Strength: strength, Options: "NOWAIT"}).Preload("GitRepository").Preload("ProjectState").Where("id = ?", id).First(&project).Error + //err := tx.Debug().Preload("GitRepository").Preload("ProjectState").Where("id = ?", id).First(&project).Error if err != nil && err != gorm.ErrRecordNotFound { return nil, nil, err } @@ -117,7 +130,7 @@ func GetProjectForShareOrUpdate(id uint, strength string) (*Project, *gorm.DB, e func GetProjectByName(name string) (*Project, error) { var project Project - err := db.Preload("GitRepository").Where("name = ?", name).First(&project).Error + err := db.Preload("GitRepository").Preload("ProjectState").Where("name = ?", name).First(&project).Error if err != nil && err != gorm.ErrRecordNotFound { return nil, err } @@ -140,7 +153,9 @@ func AddProject(data map[string]interface{}) error { Name: data["name"].(string), Description: data["description"].(string), //CreatedBy: data["created_by"].(string), - State: data["state"].(string), + ProjectState: &ProjectState{ + State: data["state"].(string), + }, } if err := db.Debug().Create(&project).Error; err != nil { return err @@ -161,6 +176,11 @@ func (project *Project) Update(tx *gorm.DB) error { log.Fatal(err) } + err = tx.Model(&project).Association("ProjectState").Error + if err != nil { + log.Fatal(err) + } + tx.Save(project) if err := tx.Session(&gorm.Session{FullSaveAssociations: true}).Debug().Updates(project).Error; err != nil { return err @@ -170,8 +190,19 @@ func (project *Project) Update(tx *gorm.DB) error { } func (project *Project) UpdateStateInDB(state string, tx *gorm.DB) error { - project.State = state - project.ErrorMsg = "" + if tx == nil { + tx = db + } + project.ProjectState.State = state + project.ProjectState.ErrorMsg = "" + return project.Update(tx) +} + +func (project *Project) UpdateFullStateInDB(state *ProjectState, tx *gorm.DB) error { + if tx == nil { + tx = db + } + project.ProjectState = state return project.Update(tx) } @@ -187,6 +218,11 @@ func (project *Project) CreateOrUpdate() (*Project, error) { log.Fatal(err) } + err = db.Model(&project).Association("ProjectState").Error + if err != nil { + log.Fatal(err) + } + p, err := GetProjectByName(project.Name) log.Info(p, err) if p.Name != "" { @@ -198,6 +234,8 @@ func (project *Project) CreateOrUpdate() (*Project, error) { return project, nil } + project.ProjectState = &ProjectState{} + err = db.Create(&project).Error if err != nil { return project, err diff --git a/pkg/operator/operator.go b/pkg/operator/operator.go index 9c44c13..bd4d68f 100644 --- a/pkg/operator/operator.go +++ b/pkg/operator/operator.go @@ -25,7 +25,7 @@ const ( func (o *Operator) Run(log *logrus.Entry) { for { - time.Sleep(5 * time.Second) + time.Sleep(10 * time.Second) projects, err := models.GetProjects() if err != nil { log.Error(err) @@ -37,70 +37,93 @@ func (o *Operator) Run(log *logrus.Entry) { } logProject := log.WithField("project", project.Name) - logProject.Infof("Name: %s State: %s", p.Name, p.State) + logProject.Infof("Name: %s State: %s", p.Name, p.ProjectState.State) - reconcile(logProject, p) + go reconcile(logProject, p) } } } func reconcile(log *logrus.Entry, p *models.Project) { - log.Infof("Starting reconcile %s the state is %s", p.Name, p.State) + log.Infof("Starting reconcile %s the state is %s", p.Name, p.ProjectState.State) // Get and Lock p, tx, err := models.GetProjectForShareOrUpdate(p.ID, "SHARE") if err != nil { log.Error(err) + return } defer tx.Commit() - if p.State == Backoff { + defer p.Update(tx) + + if p.ProjectState == nil { + p.ProjectState = &models.ProjectState{ + State: "None", + } + } + + if p.ProjectState.State == Backoff { log.Info("Ignore because the state is ", Backoff) return } - if p.State == Stopped { + if p.ProjectState.State == Stopped { log.Info("Ignore stopped") return } - if p.State == Running { + if p.ProjectState.State == "Outdated" { + + _, err := controllers.ProjectServiceState(int(p.ID), "Stop", tx) + if err != nil { + log.Error(err) + return + } + + } + + if p.ProjectState.State == Running { log.Info("State is running") _, err := controllers.GetRunner(*p) if err != nil { runnerModel := &models.Runner{} models.GetRunner(runnerModel, *p) controllers.DeleteRunnerForService(p) - p.State = Errored - p.ErrorMsg = err.Error() + p.ProjectState.State = Errored + p.ProjectState.ErrorMsg = err.Error() log.Error(err) p.Update(tx) return } - p.ErrorMsg = "" + p.ProjectState.ErrorMsg = "" project, err := controllers.ProjectServiceState(int(p.ID), "Reload", tx) + log.Infof("Diff old: %s new: %s", p.GitRepository.Version, project.GitRepository.Version) if p.GitRepository.Version != project.GitRepository.Version { - p.State = "Outdated" + p.ProjectState.State = "Outdated" + return } - err = p.Update(tx) + /*err = p.Update(tx) if err != nil { log.Error(err) return } + */ return } - if p.State != Running { + if p.ProjectState.State != Running { if p.BuildRetries == Retries { log.Info("Max retries reached") - p.State = Backoff + p.ProjectState.State = Backoff // Check if code changed project, err := controllers.ProjectServiceState(int(p.ID), "Check", tx) + p.GitRepository = project.GitRepository if err != nil { log.Error(err) } @@ -108,25 +131,25 @@ func reconcile(log *logrus.Entry, p *models.Project) { return } p.BuildRetries = 0 - p.ErrorMsg = "" + p.ProjectState.ErrorMsg = "" } log.Info("Must start", p) - //p.UpdateStateInDB(Building) project, err := controllers.ProjectServiceState(int(p.ID), "Start", tx) log.Info("Project after state change: ", project) if err != nil { log.Error(err) - p.State = Errored - p.ErrorMsg = err.Error() + p.ProjectState.State = Errored + p.ProjectState.ErrorMsg = err.Error() p.BuildRetries = p.BuildRetries + 1 p.Update(tx) return } - project.ErrorMsg = "" - project.Update(tx) + p.ProjectState.ErrorMsg = "" + p.GitRepository = project.GitRepository + //project.Update(tx) } - log.Infof("Ending reconcile the state is %s", p.State) + log.Infof("Ending reconcile the state is %s", p.ProjectState.State) } diff --git a/pkg/runner/runner.go b/pkg/runner/runner.go index f000e80..fe28b40 100644 --- a/pkg/runner/runner.go +++ b/pkg/runner/runner.go @@ -115,8 +115,10 @@ func (s *SimpleRunnable) PrepareSource() error { p, err := source.Clone() if err != nil { + log.Error(err) return err } + log.Infof("git cloned from %s to %s", source.Remote, p) source.CodePath = path.Join(p, strings.TrimLeft(pathToSource, "//")) } else { source.CodePath = s.Location diff --git a/pkg/runner/runner_test.go b/pkg/runner/runner_test.go index 5b5a2b2..b7bd7df 100644 --- a/pkg/runner/runner_test.go +++ b/pkg/runner/runner_test.go @@ -33,14 +33,17 @@ var flagtests = []struct { ./main.go:20:20: undefined: shared.Handshak`, expectedResponse: "Hello Hello", }, */ - /* { + + { name: "example-git", runnable: SimpleRunnable{ Name: "example-plugin-go-grpc", - Location: "https://github.com/sahlinet/go-tumbo3.git//examples/example-plugin-go-grpc", + Location: "https://github.com/sahlinet/go-tumbo3-examples.git//example-plugin-go-grpc", }, + expectedResponse: "Hello Hello", buildErrorExpected: "", - }, */ + }, + /* { name: "panicking", runnable: SimpleRunnable{ @@ -66,6 +69,8 @@ func TestBuildAndRunner(t *testing.T) { err := r.PrepareSource() assert.Nil(t, err) + assert.NotEmpty(t, r.Source.Version) + buildOutput, err := r.Build("/tmp/tumbo-builds") if err != nil && err.Error() != tt.buildErrorExpected { t.Errorf("expected build error wrong, diff:\n %s", diff.Diff(err.Error(), tt.buildErrorExpected)) diff --git a/pkg/source/source.go b/pkg/source/source.go index 43ad9ab..93136e1 100644 --- a/pkg/source/source.go +++ b/pkg/source/source.go @@ -5,6 +5,8 @@ import ( "os" "github.com/go-git/go-git/v5" + + log "github.com/sirupsen/logrus" ) type Source struct { @@ -15,27 +17,36 @@ type Source struct { } func (s *Source) Clone() (string, error) { - d, err := Checkout(s.Remote) + d, version, err := Checkout(s.Remote) if err != nil { return "", err } + s.Version = version return d, nil } -func Checkout(cloneUrl string) (string, error) { +func Checkout(cloneUrl string) (string, string, error) { t, err := tempDir() if err != nil { - return "", err + return "", "", err } - _, err = git.PlainClone(t, false, &git.CloneOptions{ + r, err := git.PlainClone(t, false, &git.CloneOptions{ URL: cloneUrl, Progress: os.Stdout, }) if err != nil { - return "", err + return "", "", err } + ref, err := r.Head() + if err != nil { + return "", "", err + } + + commit, err := r.CommitObject(ref.Hash()) + commitHash := commit.Hash.String() + log.Infof("on commitHash: %s", commitHash) - return t, nil + return t, commitHash, nil } func tempDir() (string, error) { diff --git a/web/elm/public/dist/elm.compiled.js b/web/elm/public/dist/elm.compiled.js index 4b84edc..7d568d7 100644 --- a/web/elm/public/dist/elm.compiled.js +++ b/web/elm/public/dist/elm.compiled.js @@ -77,7 +77,7 @@ function A9(fun, a, b, c, d, e, f, g, h, i) { return fun.a === 9 ? fun.f(a, b, c, d, e, f, g, h, i) : fun(a)(b)(c)(d)(e)(f)(g)(h)(i); } -console.warn('Compiled in DEBUG mode. Follow the advice at https://elm-lang.org/0.19.1/optimize for better performance and smaller assets.'); + // EQUALITY @@ -113,7 +113,7 @@ function _Utils_eqHelp(x, y, depth, stack) return true; } - /**/ + /**_UNUSED/ if (x.$ === 'Set_elm_builtin') { x = $elm$core$Set$toList(x); @@ -126,7 +126,7 @@ function _Utils_eqHelp(x, y, depth, stack) } //*/ - /**_UNUSED/ + /**/ if (x.$ < 0) { x = $elm$core$Dict$toList(x); @@ -161,7 +161,7 @@ function _Utils_cmp(x, y, ord) return x === y ? /*EQ*/ 0 : x < y ? /*LT*/ -1 : /*GT*/ 1; } - /**/ + /**_UNUSED/ if (x instanceof String) { var a = x.valueOf(); @@ -170,10 +170,10 @@ function _Utils_cmp(x, y, ord) } //*/ - /**_UNUSED/ + /**/ if (typeof x.$ === 'undefined') //*/ - /**/ + /**_UNUSED/ if (x.$[0] === '#') //*/ { @@ -203,17 +203,17 @@ var _Utils_compare = F2(function(x, y) // COMMON VALUES -var _Utils_Tuple0_UNUSED = 0; -var _Utils_Tuple0 = { $: '#0' }; +var _Utils_Tuple0 = 0; +var _Utils_Tuple0_UNUSED = { $: '#0' }; -function _Utils_Tuple2_UNUSED(a, b) { return { a: a, b: b }; } -function _Utils_Tuple2(a, b) { return { $: '#2', a: a, b: b }; } +function _Utils_Tuple2(a, b) { return { a: a, b: b }; } +function _Utils_Tuple2_UNUSED(a, b) { return { $: '#2', a: a, b: b }; } -function _Utils_Tuple3_UNUSED(a, b, c) { return { a: a, b: b, c: c }; } -function _Utils_Tuple3(a, b, c) { return { $: '#3', a: a, b: b, c: c }; } +function _Utils_Tuple3(a, b, c) { return { a: a, b: b, c: c }; } +function _Utils_Tuple3_UNUSED(a, b, c) { return { $: '#3', a: a, b: b, c: c }; } -function _Utils_chr_UNUSED(c) { return c; } -function _Utils_chr(c) { return new String(c); } +function _Utils_chr(c) { return c; } +function _Utils_chr_UNUSED(c) { return new String(c); } // RECORDS @@ -264,11 +264,11 @@ function _Utils_ap(xs, ys) -var _List_Nil_UNUSED = { $: 0 }; -var _List_Nil = { $: '[]' }; +var _List_Nil = { $: 0 }; +var _List_Nil_UNUSED = { $: '[]' }; -function _List_Cons_UNUSED(hd, tl) { return { $: 1, a: hd, b: tl }; } -function _List_Cons(hd, tl) { return { $: '::', a: hd, b: tl }; } +function _List_Cons(hd, tl) { return { $: 1, a: hd, b: tl }; } +function _List_Cons_UNUSED(hd, tl) { return { $: '::', a: hd, b: tl }; } var _List_cons = F2(_List_Cons); @@ -499,12 +499,12 @@ var _JsArray_appendN = F3(function(n, dest, source) // LOG -var _Debug_log_UNUSED = F2(function(tag, value) +var _Debug_log = F2(function(tag, value) { return value; }); -var _Debug_log = F2(function(tag, value) +var _Debug_log_UNUSED = F2(function(tag, value) { console.log(tag + ': ' + _Debug_toString(value)); return value; @@ -530,12 +530,12 @@ function _Debug_todoCase(moduleName, region, value) // TO STRING -function _Debug_toString_UNUSED(value) +function _Debug_toString(value) { return ''; } -function _Debug_toString(value) +function _Debug_toString_UNUSED(value) { return _Debug_toAnsiString(false, value); } @@ -720,13 +720,13 @@ function _Debug_toHexDigit(n) // CRASH -function _Debug_crash_UNUSED(identifier) +function _Debug_crash(identifier) { throw new Error('https://github.com/elm/core/blob/1.0.0/hints/' + identifier + '.md'); } -function _Debug_crash(identifier, fact1, fact2, fact3, fact4) +function _Debug_crash_UNUSED(identifier, fact1, fact2, fact3, fact4) { switch(identifier) { @@ -784,11 +784,11 @@ function _Debug_crash(identifier, fact1, fact2, fact3, fact4) function _Debug_regionToString(region) { - if (region.start.line === region.end.line) + if (region.c2.aC === region.ds.aC) { - return 'on line ' + region.start.line; + return 'on line ' + region.c2.aC; } - return 'on lines ' + region.start.line + ' through ' + region.end.line; + return 'on lines ' + region.c2.aC + ' through ' + region.ds.aC; } @@ -1212,7 +1212,7 @@ function _Char_toLocaleLower(char) -/**/ +/**_UNUSED/ function _Json_errorToString(error) { return $elm$json$Json$Decode$errorToString(error); @@ -1616,11 +1616,11 @@ var _Json_encode = F2(function(indentLevel, value) return JSON.stringify(_Json_unwrap(value), null, indentLevel) + ''; }); -function _Json_wrap(value) { return { $: 0, a: value }; } -function _Json_unwrap(value) { return value.a; } +function _Json_wrap_UNUSED(value) { return { $: 0, a: value }; } +function _Json_unwrap_UNUSED(value) { return value.a; } -function _Json_wrap_UNUSED(value) { return value; } -function _Json_unwrap_UNUSED(value) { return value; } +function _Json_wrap(value) { return value; } +function _Json_unwrap(value) { return value; } function _Json_emptyArray() { return []; } function _Json_emptyObject() { return {}; } @@ -1857,9 +1857,9 @@ var _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args) return _Platform_initialize( flagDecoder, args, - impl.init, - impl.update, - impl.subscriptions, + impl.fb, + impl.fZ, + impl.fN, function() { return function() {} } ); }); @@ -1872,7 +1872,7 @@ var _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args) function _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder) { var result = A2(_Json_run, flagDecoder, _Json_wrap(args ? args['flags'] : undefined)); - $elm$core$Result$isOk(result) || _Debug_crash(2 /**/, _Json_errorToString(result.a) /**/); + $elm$core$Result$isOk(result) || _Debug_crash(2 /**_UNUSED/, _Json_errorToString(result.a) /**/); var managers = {}; var initPair = init(result.a); var model = initPair.a; @@ -2316,7 +2316,7 @@ function _Platform_setupIncomingPort(name, sendToApp) // -function _Platform_export_UNUSED(exports) +function _Platform_export(exports) { scope['Elm'] ? _Platform_mergeExportsProd(scope['Elm'], exports) @@ -2337,7 +2337,7 @@ function _Platform_mergeExportsProd(obj, exports) } -function _Platform_export(exports) +function _Platform_export_UNUSED(exports) { scope['Elm'] ? _Platform_mergeExportsDebug('Elm', scope['Elm'], exports) @@ -2377,10 +2377,10 @@ var _VirtualDom_init = F4(function(virtualNode, flagDecoder, debugMetadata, args { // NOTE: this function needs _Platform_export available to work - /**_UNUSED/ + /**/ var node = args['node']; //*/ - /**/ + /**_UNUSED/ var node = args && args['node'] ? args['node'] : _Debug_crash(0); //*/ @@ -2635,24 +2635,24 @@ function _VirtualDom_noInnerHtmlOrFormAction(key) return key == 'innerHTML' || key == 'formAction' ? 'data-' + key : key; } -function _VirtualDom_noJavaScriptUri_UNUSED(value) +function _VirtualDom_noJavaScriptUri(value) { return /^javascript:/i.test(value.replace(/\s/g,'')) ? '' : value; } -function _VirtualDom_noJavaScriptUri(value) +function _VirtualDom_noJavaScriptUri_UNUSED(value) { return /^javascript:/i.test(value.replace(/\s/g,'')) ? 'javascript:alert("This is an XSS vector. Please use ports or web components instead.")' : value; } -function _VirtualDom_noJavaScriptOrHtmlUri_UNUSED(value) +function _VirtualDom_noJavaScriptOrHtmlUri(value) { return /^\s*(javascript:|data:text\/html)/i.test(value) ? '' : value; } -function _VirtualDom_noJavaScriptOrHtmlUri(value) +function _VirtualDom_noJavaScriptOrHtmlUri_UNUSED(value) { return /^\s*(javascript:|data:text\/html)/i.test(value) ? 'javascript:alert("This is an XSS vector. Please use ports or web components instead.")' @@ -2704,9 +2704,9 @@ var _VirtualDom_mapEventTuple = F2(function(func, tuple) var _VirtualDom_mapEventRecord = F2(function(func, record) { return { - message: func(record.message), - stopPropagation: record.stopPropagation, - preventDefault: record.preventDefault + ah: func(record.ah), + c4: record.c4, + cQ: record.cQ } }); @@ -2974,11 +2974,11 @@ function _VirtualDom_makeCallback(eventNode, initialHandler) // 3 = Custom var value = result.a; - var message = !tag ? value : tag < 3 ? value.a : value.message; - var stopPropagation = tag == 1 ? value.b : tag == 3 && value.stopPropagation; + var message = !tag ? value : tag < 3 ? value.a : value.ah; + var stopPropagation = tag == 1 ? value.b : tag == 3 && value.c4; var currentEventNode = ( stopPropagation && event.stopPropagation(), - (tag == 2 ? value.b : tag == 3 && value.preventDefault) && event.preventDefault(), + (tag == 2 ? value.b : tag == 3 && value.cQ) && event.preventDefault(), eventNode ); var tagger; @@ -3917,5416 +3917,1352 @@ function _VirtualDom_dekey(keyedNode) -var _Bitwise_and = F2(function(a, b) -{ - return a & b; -}); - -var _Bitwise_or = F2(function(a, b) -{ - return a | b; -}); - -var _Bitwise_xor = F2(function(a, b) -{ - return a ^ b; -}); - -function _Bitwise_complement(a) -{ - return ~a; -}; - -var _Bitwise_shiftLeftBy = F2(function(offset, a) -{ - return a << offset; -}); - -var _Bitwise_shiftRightBy = F2(function(offset, a) -{ - return a >> offset; -}); - -var _Bitwise_shiftRightZfBy = F2(function(offset, a) -{ - return a >>> offset; -}); - - - - -// HELPERS - - -function _Debugger_unsafeCoerce(value) -{ - return value; -} - +// ELEMENT -// PROGRAMS +var _Debugger_element; -var _Debugger_element = F4(function(impl, flagDecoder, debugMetadata, args) +var _Browser_element = _Debugger_element || F4(function(impl, flagDecoder, debugMetadata, args) { return _Platform_initialize( flagDecoder, args, - A3($elm$browser$Debugger$Main$wrapInit, _Json_wrap(debugMetadata), _Debugger_popout(), impl.init), - $elm$browser$Debugger$Main$wrapUpdate(impl.update), - $elm$browser$Debugger$Main$wrapSubs(impl.subscriptions), - function(sendToApp, initialModel) - { - var view = impl.view; - var title = _VirtualDom_doc.title; + impl.fb, + impl.fZ, + impl.fN, + function(sendToApp, initialModel) { + var view = impl.f0; + /**/ + var domNode = args['node']; + //*/ + /**_UNUSED/ var domNode = args && args['node'] ? args['node'] : _Debug_crash(0); + //*/ var currNode = _VirtualDom_virtualize(domNode); - var currBlocker = $elm$browser$Debugger$Main$toBlockerType(initialModel); - var currPopout; - - var cornerNode = _VirtualDom_doc.createElement('div'); - domNode.parentNode.insertBefore(cornerNode, domNode.nextSibling); - var cornerCurr = _VirtualDom_virtualize(cornerNode); - - initialModel.popout.a = sendToApp; return _Browser_makeAnimator(initialModel, function(model) { - var nextNode = A2(_VirtualDom_map, $elm$browser$Debugger$Main$UserMsg, view($elm$browser$Debugger$Main$getUserModel(model))); + var nextNode = view(model); var patches = _VirtualDom_diff(currNode, nextNode); domNode = _VirtualDom_applyPatches(domNode, currNode, patches, sendToApp); currNode = nextNode; - - // update blocker - - var nextBlocker = $elm$browser$Debugger$Main$toBlockerType(model); - _Debugger_updateBlocker(currBlocker, nextBlocker); - currBlocker = nextBlocker; - - // view corner - - var cornerNext = $elm$browser$Debugger$Main$cornerView(model); - var cornerPatches = _VirtualDom_diff(cornerCurr, cornerNext); - cornerNode = _VirtualDom_applyPatches(cornerNode, cornerCurr, cornerPatches, sendToApp); - cornerCurr = cornerNext; - - if (!model.popout.b) - { - currPopout = undefined; - return; - } - - // view popout - - _VirtualDom_doc = model.popout.b; // SWITCH TO POPOUT DOC - currPopout || (currPopout = _VirtualDom_virtualize(model.popout.b)); - var nextPopout = $elm$browser$Debugger$Main$popoutView(model); - var popoutPatches = _VirtualDom_diff(currPopout, nextPopout); - _VirtualDom_applyPatches(model.popout.b.body, currPopout, popoutPatches, sendToApp); - currPopout = nextPopout; - _VirtualDom_doc = document; // SWITCH BACK TO NORMAL DOC }); } ); }); -var _Debugger_document = F4(function(impl, flagDecoder, debugMetadata, args) + +// DOCUMENT + + +var _Debugger_document; + +var _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, debugMetadata, args) { return _Platform_initialize( flagDecoder, args, - A3($elm$browser$Debugger$Main$wrapInit, _Json_wrap(debugMetadata), _Debugger_popout(), impl.init), - $elm$browser$Debugger$Main$wrapUpdate(impl.update), - $elm$browser$Debugger$Main$wrapSubs(impl.subscriptions), - function(sendToApp, initialModel) - { - var divertHrefToApp = impl.setup && impl.setup(function(x) { return sendToApp($elm$browser$Debugger$Main$UserMsg(x)); }); - var view = impl.view; + impl.fb, + impl.fZ, + impl.fN, + function(sendToApp, initialModel) { + var divertHrefToApp = impl.cX && impl.cX(sendToApp) + var view = impl.f0; var title = _VirtualDom_doc.title; var bodyNode = _VirtualDom_doc.body; var currNode = _VirtualDom_virtualize(bodyNode); - var currBlocker = $elm$browser$Debugger$Main$toBlockerType(initialModel); - var currPopout; - - initialModel.popout.a = sendToApp; - return _Browser_makeAnimator(initialModel, function(model) { _VirtualDom_divertHrefToApp = divertHrefToApp; - var doc = view($elm$browser$Debugger$Main$getUserModel(model)); - var nextNode = _VirtualDom_node('body')(_List_Nil)( - _Utils_ap( - A2($elm$core$List$map, _VirtualDom_map($elm$browser$Debugger$Main$UserMsg), doc.body), - _List_Cons($elm$browser$Debugger$Main$cornerView(model), _List_Nil) - ) - ); + var doc = view(model); + var nextNode = _VirtualDom_node('body')(_List_Nil)(doc.eJ); var patches = _VirtualDom_diff(currNode, nextNode); bodyNode = _VirtualDom_applyPatches(bodyNode, currNode, patches, sendToApp); currNode = nextNode; _VirtualDom_divertHrefToApp = 0; - (title !== doc.title) && (_VirtualDom_doc.title = title = doc.title); - - // update blocker - - var nextBlocker = $elm$browser$Debugger$Main$toBlockerType(model); - _Debugger_updateBlocker(currBlocker, nextBlocker); - currBlocker = nextBlocker; - - // view popout - - if (!model.popout.b) { currPopout = undefined; return; } - - _VirtualDom_doc = model.popout.b; // SWITCH TO POPOUT DOC - currPopout || (currPopout = _VirtualDom_virtualize(model.popout.b)); - var nextPopout = $elm$browser$Debugger$Main$popoutView(model); - var popoutPatches = _VirtualDom_diff(currPopout, nextPopout); - _VirtualDom_applyPatches(model.popout.b.body, currPopout, popoutPatches, sendToApp); - currPopout = nextPopout; - _VirtualDom_doc = document; // SWITCH BACK TO NORMAL DOC + (title !== doc.fR) && (_VirtualDom_doc.title = title = doc.fR); }); } ); }); -function _Debugger_popout() -{ - return { - b: undefined, - a: undefined - }; -} -function _Debugger_isOpen(popout) -{ - return !!popout.b; -} +// ANIMATION -function _Debugger_open(popout) -{ - return _Scheduler_binding(function(callback) - { - _Debugger_openWindow(popout); - callback(_Scheduler_succeed(_Utils_Tuple0)); - }); -} -function _Debugger_openWindow(popout) -{ - var w = $elm$browser$Debugger$Main$initialWindowWidth, - h = $elm$browser$Debugger$Main$initialWindowHeight, - x = screen.width - w, - y = screen.height - h; +var _Browser_cancelAnimationFrame = + typeof cancelAnimationFrame !== 'undefined' + ? cancelAnimationFrame + : function(id) { clearTimeout(id); }; + +var _Browser_requestAnimationFrame = + typeof requestAnimationFrame !== 'undefined' + ? requestAnimationFrame + : function(callback) { return setTimeout(callback, 1000 / 60); }; - var debuggerWindow = window.open('', '', 'width=' + w + ',height=' + h + ',left=' + x + ',top=' + y); - var doc = debuggerWindow.document; - doc.title = 'Elm Debugger'; - // handle arrow keys - doc.addEventListener('keydown', function(event) { - event.metaKey && event.which === 82 && window.location.reload(); - event.key === 'ArrowUp' && (popout.a($elm$browser$Debugger$Main$Up ), event.preventDefault()); - event.key === 'ArrowDown' && (popout.a($elm$browser$Debugger$Main$Down), event.preventDefault()); - }); +function _Browser_makeAnimator(model, draw) +{ + draw(model); - // handle window close - window.addEventListener('unload', close); - debuggerWindow.addEventListener('unload', function() { - popout.b = undefined; - popout.a($elm$browser$Debugger$Main$NoOp); - window.removeEventListener('unload', close); - }); + var state = 0; - function close() { - popout.b = undefined; - popout.a($elm$browser$Debugger$Main$NoOp); - debuggerWindow.close(); + function updateIfNeeded() + { + state = state === 1 + ? 0 + : ( _Browser_requestAnimationFrame(updateIfNeeded), draw(model), 1 ); } - // register new window - popout.b = doc; + return function(nextModel, isSync) + { + model = nextModel; + + isSync + ? ( draw(model), + state === 2 && (state = 1) + ) + : ( state === 0 && _Browser_requestAnimationFrame(updateIfNeeded), + state = 2 + ); + }; } -// SCROLL +// APPLICATION -function _Debugger_scroll(popout) +function _Browser_application(impl) { - return _Scheduler_binding(function(callback) - { - if (popout.b) + var onUrlChange = impl.fx; + var onUrlRequest = impl.fy; + var key = function() { key.a(onUrlChange(_Browser_getUrl())); }; + + return _Browser_document({ + cX: function(sendToApp) { - var msgs = popout.b.getElementById('elm-debugger-sidebar'); - if (msgs && msgs.scrollTop !== 0) + key.a = sendToApp; + _Browser_window.addEventListener('popstate', key); + _Browser_window.navigator.userAgent.indexOf('Trident') < 0 || _Browser_window.addEventListener('hashchange', key); + + return F2(function(domNode, event) { - msgs.scrollTop = 0; - } - } - callback(_Scheduler_succeed(_Utils_Tuple0)); + if (!event.ctrlKey && !event.metaKey && !event.shiftKey && event.button < 1 && !domNode.target && !domNode.hasAttribute('download')) + { + event.preventDefault(); + var href = domNode.href; + var curr = _Browser_getUrl(); + var next = $elm$url$Url$fromString(href).a; + sendToApp(onUrlRequest( + (next + && curr.d2 === next.d2 + && curr.e6 === next.e6 + && curr.dZ.a === next.dZ.a + ) + ? $elm$browser$Browser$Internal(next) + : $elm$browser$Browser$External(href) + )); + } + }); + }, + fb: function(flags) + { + return A3(impl.fb, flags, _Browser_getUrl(), key); + }, + f0: impl.f0, + fZ: impl.fZ, + fN: impl.fN }); } +function _Browser_getUrl() +{ + return $elm$url$Url$fromString(_VirtualDom_doc.location.href).a || _Debug_crash(1); +} -var _Debugger_scrollTo = F2(function(id, popout) +var _Browser_go = F2(function(key, n) { - return _Scheduler_binding(function(callback) - { - if (popout.b) - { - var msg = popout.b.getElementById(id); - if (msg) - { - msg.scrollIntoView(false); - } - } - callback(_Scheduler_succeed(_Utils_Tuple0)); - }); + return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() { + n && history.go(n); + key(); + })); }); +var _Browser_pushUrl = F2(function(key, url) +{ + return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() { + history.pushState({}, '', url); + key(); + })); +}); - -// UPLOAD - - -function _Debugger_upload(popout) +var _Browser_replaceUrl = F2(function(key, url) { - return _Scheduler_binding(function(callback) - { - var doc = popout.b || document; - var element = doc.createElement('input'); - element.setAttribute('type', 'file'); - element.setAttribute('accept', 'text/json'); - element.style.display = 'none'; - element.addEventListener('change', function(event) - { - var fileReader = new FileReader(); - fileReader.onload = function(e) - { - callback(_Scheduler_succeed(e.target.result)); - }; - fileReader.readAsText(event.target.files[0]); - doc.body.removeChild(element); - }); - doc.body.appendChild(element); - element.click(); - }); -} + return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() { + history.replaceState({}, '', url); + key(); + })); +}); + +// GLOBAL EVENTS -// DOWNLOAD +var _Browser_fakeNode = { addEventListener: function() {}, removeEventListener: function() {} }; +var _Browser_doc = typeof document !== 'undefined' ? document : _Browser_fakeNode; +var _Browser_window = typeof window !== 'undefined' ? window : _Browser_fakeNode; -var _Debugger_download = F2(function(historyLength, json) +var _Browser_on = F3(function(node, eventName, sendToSelf) { - return _Scheduler_binding(function(callback) + return _Scheduler_spawn(_Scheduler_binding(function(callback) { - var fileName = 'history-' + historyLength + '.txt'; - var jsonString = JSON.stringify(json); - var mime = 'text/plain;charset=utf-8'; - var done = _Scheduler_succeed(_Utils_Tuple0); - - // for IE10+ - if (navigator.msSaveBlob) - { - navigator.msSaveBlob(new Blob([jsonString], {type: mime}), fileName); - return callback(done); - } + function handler(event) { _Scheduler_rawSpawn(sendToSelf(event)); } + node.addEventListener(eventName, handler, _VirtualDom_passiveSupported && { passive: true }); + return function() { node.removeEventListener(eventName, handler); }; + })); +}); - // for HTML5 - var element = document.createElement('a'); - element.setAttribute('href', 'data:' + mime + ',' + encodeURIComponent(jsonString)); - element.setAttribute('download', fileName); - element.style.display = 'none'; - document.body.appendChild(element); - element.click(); - document.body.removeChild(element); - callback(done); - }); +var _Browser_decodeEvent = F2(function(decoder, event) +{ + var result = _Json_runHelp(decoder, event); + return $elm$core$Result$isOk(result) ? $elm$core$Maybe$Just(result.a) : $elm$core$Maybe$Nothing; }); -// POPOUT CONTENT +// PAGE VISIBILITY -function _Debugger_messageToString(value) +function _Browser_visibilityInfo() { - if (typeof value === 'boolean') - { - return value ? 'True' : 'False'; - } - - if (typeof value === 'number') - { - return value + ''; - } - - if (typeof value === 'string') - { - return '"' + _Debugger_addSlashes(value, false) + '"'; - } + return (typeof _VirtualDom_doc.hidden !== 'undefined') + ? { e5: 'hidden', eM: 'visibilitychange' } + : + (typeof _VirtualDom_doc.mozHidden !== 'undefined') + ? { e5: 'mozHidden', eM: 'mozvisibilitychange' } + : + (typeof _VirtualDom_doc.msHidden !== 'undefined') + ? { e5: 'msHidden', eM: 'msvisibilitychange' } + : + (typeof _VirtualDom_doc.webkitHidden !== 'undefined') + ? { e5: 'webkitHidden', eM: 'webkitvisibilitychange' } + : { e5: 'hidden', eM: 'visibilitychange' }; +} - if (value instanceof String) - { - return "'" + _Debugger_addSlashes(value, true) + "'"; - } - if (typeof value !== 'object' || value === null || !('$' in value)) - { - return '…'; - } - if (typeof value.$ === 'number') - { - return '…'; - } +// ANIMATION FRAMES - var code = value.$.charCodeAt(0); - if (code === 0x23 /* # */ || /* a */ 0x61 <= code && code <= 0x7A /* z */) - { - return '…'; - } - if (['Array_elm_builtin', 'Set_elm_builtin', 'RBNode_elm_builtin', 'RBEmpty_elm_builtin'].indexOf(value.$) >= 0) +function _Browser_rAF() +{ + return _Scheduler_binding(function(callback) { - return '…'; - } + var id = _Browser_requestAnimationFrame(function() { + callback(_Scheduler_succeed(Date.now())); + }); - var keys = Object.keys(value); - switch (keys.length) - { - case 1: - return value.$; - case 2: - return value.$ + ' ' + _Debugger_messageToString(value.a); - default: - return value.$ + ' … ' + _Debugger_messageToString(value[keys[keys.length - 1]]); - } + return function() { + _Browser_cancelAnimationFrame(id); + }; + }); } -function _Debugger_init(value) +function _Browser_now() { - if (typeof value === 'boolean') + return _Scheduler_binding(function(callback) { - return A3($elm$browser$Debugger$Expando$Constructor, $elm$core$Maybe$Just(value ? 'True' : 'False'), true, _List_Nil); - } + callback(_Scheduler_succeed(Date.now())); + }); +} - if (typeof value === 'number') - { - return $elm$browser$Debugger$Expando$Primitive(value + ''); - } - if (typeof value === 'string') - { - return $elm$browser$Debugger$Expando$S('"' + _Debugger_addSlashes(value, false) + '"'); - } - if (value instanceof String) +// DOM STUFF + + +function _Browser_withNode(id, doStuff) +{ + return _Scheduler_binding(function(callback) { - return $elm$browser$Debugger$Expando$S("'" + _Debugger_addSlashes(value, true) + "'"); - } + _Browser_requestAnimationFrame(function() { + var node = document.getElementById(id); + callback(node + ? _Scheduler_succeed(doStuff(node)) + : _Scheduler_fail($elm$browser$Browser$Dom$NotFound(id)) + ); + }); + }); +} - if (typeof value === 'object' && '$' in value) + +function _Browser_withWindow(doStuff) +{ + return _Scheduler_binding(function(callback) { - var tag = value.$; + _Browser_requestAnimationFrame(function() { + callback(_Scheduler_succeed(doStuff())); + }); + }); +} - if (tag === '::' || tag === '[]') - { - return A3($elm$browser$Debugger$Expando$Sequence, $elm$browser$Debugger$Expando$ListSeq, true, - A2($elm$core$List$map, _Debugger_init, value) - ); - } - if (tag === 'Set_elm_builtin') - { - return A3($elm$browser$Debugger$Expando$Sequence, $elm$browser$Debugger$Expando$SetSeq, true, - A3($elm$core$Set$foldr, _Debugger_initCons, _List_Nil, value) - ); - } +// FOCUS and BLUR - if (tag === 'RBNode_elm_builtin' || tag == 'RBEmpty_elm_builtin') - { - return A2($elm$browser$Debugger$Expando$Dictionary, true, - A3($elm$core$Dict$foldr, _Debugger_initKeyValueCons, _List_Nil, value) - ); - } - if (tag === 'Array_elm_builtin') - { - return A3($elm$browser$Debugger$Expando$Sequence, $elm$browser$Debugger$Expando$ArraySeq, true, - A3($elm$core$Array$foldr, _Debugger_initCons, _List_Nil, value) - ); - } +var _Browser_call = F2(function(functionName, id) +{ + return _Browser_withNode(id, function(node) { + node[functionName](); + return _Utils_Tuple0; + }); +}); - if (typeof tag === 'number') - { - return $elm$browser$Debugger$Expando$Primitive(''); - } - var char = tag.charCodeAt(0); - if (char === 35 || 65 <= char && char <= 90) - { - var list = _List_Nil; - for (var i in value) - { - if (i === '$') continue; - list = _List_Cons(_Debugger_init(value[i]), list); - } - return A3($elm$browser$Debugger$Expando$Constructor, char === 35 ? $elm$core$Maybe$Nothing : $elm$core$Maybe$Just(tag), true, $elm$core$List$reverse(list)); - } - return $elm$browser$Debugger$Expando$Primitive(''); - } +// WINDOW VIEWPORT - if (typeof value === 'object') - { - var dict = $elm$core$Dict$empty; - for (var i in value) - { - dict = A3($elm$core$Dict$insert, i, _Debugger_init(value[i]), dict); - } - return A2($elm$browser$Debugger$Expando$Record, true, dict); - } - return $elm$browser$Debugger$Expando$Primitive(''); +function _Browser_getViewport() +{ + return { + ec: _Browser_getScene(), + eA: { + eC: _Browser_window.pageXOffset, + eD: _Browser_window.pageYOffset, + eB: _Browser_doc.documentElement.clientWidth, + dz: _Browser_doc.documentElement.clientHeight + } + }; } -var _Debugger_initCons = F2(function initConsHelp(value, list) +function _Browser_getScene() { - return _List_Cons(_Debugger_init(value), list); -}); + var body = _Browser_doc.body; + var elem = _Browser_doc.documentElement; + return { + eB: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth), + dz: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight) + }; +} -var _Debugger_initKeyValueCons = F3(function(key, value, list) +var _Browser_setViewport = F2(function(x, y) { - return _List_Cons( - _Utils_Tuple2(_Debugger_init(key), _Debugger_init(value)), - list - ); + return _Browser_withWindow(function() + { + _Browser_window.scroll(x, y); + return _Utils_Tuple0; + }); }); -function _Debugger_addSlashes(str, isChar) + + +// ELEMENT VIEWPORT + + +function _Browser_getViewportOf(id) { - var s = str - .replace(/\\/g, '\\\\') - .replace(/\n/g, '\\n') - .replace(/\t/g, '\\t') - .replace(/\r/g, '\\r') - .replace(/\v/g, '\\v') - .replace(/\0/g, '\\0'); - if (isChar) - { - return s.replace(/\'/g, '\\\''); - } - else + return _Browser_withNode(id, function(node) { - return s.replace(/\"/g, '\\"'); - } + return { + ec: { + eB: node.scrollWidth, + dz: node.scrollHeight + }, + eA: { + eC: node.scrollLeft, + eD: node.scrollTop, + eB: node.clientWidth, + dz: node.clientHeight + } + }; + }); } - -// BLOCK EVENTS +var _Browser_setViewportOf = F3(function(id, x, y) +{ + return _Browser_withNode(id, function(node) + { + node.scrollLeft = x; + node.scrollTop = y; + return _Utils_Tuple0; + }); +}); -function _Debugger_updateBlocker(oldBlocker, newBlocker) -{ - if (oldBlocker === newBlocker) return; - var oldEvents = _Debugger_blockerToEvents(oldBlocker); - var newEvents = _Debugger_blockerToEvents(newBlocker); +// ELEMENT - // remove old blockers - for (var i = 0; i < oldEvents.length; i++) - { - document.removeEventListener(oldEvents[i], _Debugger_blocker, true); - } - // add new blockers - for (var i = 0; i < newEvents.length; i++) +function _Browser_getElement(id) +{ + return _Browser_withNode(id, function(node) { - document.addEventListener(newEvents[i], _Debugger_blocker, true); - } + var rect = node.getBoundingClientRect(); + var x = _Browser_window.pageXOffset; + var y = _Browser_window.pageYOffset; + return { + ec: _Browser_getScene(), + eA: { + eC: x, + eD: y, + eB: _Browser_doc.documentElement.clientWidth, + dz: _Browser_doc.documentElement.clientHeight + }, + eU: { + eC: x + rect.left, + eD: y + rect.top, + eB: rect.width, + dz: rect.height + } + }; + }); } -function _Debugger_blocker(event) + +// LOAD and RELOAD + + +function _Browser_reload(skipCache) { - if (event.type === 'keydown' && event.metaKey && event.which === 82) + return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback) { - return; - } + _VirtualDom_doc.location.reload(skipCache); + })); +} - var isScroll = event.type === 'scroll' || event.type === 'wheel'; - for (var node = event.target; node; node = node.parentNode) +function _Browser_load(url) +{ + return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback) { - if (isScroll ? node.id === 'elm-debugger-details' : node.id === 'elm-debugger-overlay') + try { - return; + _Browser_window.location = url; } - } + catch(err) + { + // Only Firefox can throw a NS_ERROR_MALFORMED_URI exception here. + // Other browsers reload the page, so let's be consistent about that. + _VirtualDom_doc.location.reload(false); + } + })); +} + - event.stopPropagation(); - event.preventDefault(); +function _Url_percentEncode(string) +{ + return encodeURIComponent(string); } -function _Debugger_blockerToEvents(blocker) +function _Url_percentDecode(string) { - return blocker === $elm$browser$Debugger$Overlay$BlockNone - ? [] - : blocker === $elm$browser$Debugger$Overlay$BlockMost - ? _Debugger_mostEvents - : _Debugger_allEvents; + try + { + return $elm$core$Maybe$Just(decodeURIComponent(string)); + } + catch (e) + { + return $elm$core$Maybe$Nothing; + } } -var _Debugger_mostEvents = [ - 'click', 'dblclick', 'mousemove', - 'mouseup', 'mousedown', 'mouseenter', 'mouseleave', - 'touchstart', 'touchend', 'touchcancel', 'touchmove', - 'pointerdown', 'pointerup', 'pointerover', 'pointerout', - 'pointerenter', 'pointerleave', 'pointermove', 'pointercancel', - 'dragstart', 'drag', 'dragend', 'dragenter', 'dragover', 'dragleave', 'drop', - 'keyup', 'keydown', 'keypress', - 'input', 'change', - 'focus', 'blur' -]; -var _Debugger_allEvents = _Debugger_mostEvents.concat('wheel', 'scroll'); +// SEND REQUEST + +var _Http_toTask = F3(function(router, toTask, request) +{ + return _Scheduler_binding(function(callback) + { + function done(response) { + callback(toTask(request.eX.a(response))); + } + + var xhr = new XMLHttpRequest(); + xhr.addEventListener('error', function() { done($elm$http$Http$NetworkError_); }); + xhr.addEventListener('timeout', function() { done($elm$http$Http$Timeout_); }); + xhr.addEventListener('load', function() { done(_Http_toResponse(request.eX.b, xhr)); }); + $elm$core$Maybe$isJust(request.fY) && _Http_track(router, xhr, request.fY.a); + try { + xhr.open(request.fh, request.f_, true); + } catch (e) { + return done($elm$http$Http$BadUrl_(request.f_)); + } + _Http_configureRequest(xhr, request); + request.eJ.a && xhr.setRequestHeader('Content-Type', request.eJ.a); + xhr.send(request.eJ.b); -// ELEMENT + return function() { xhr.c = true; xhr.abort(); }; + }); +}); -var _Debugger_element; +// CONFIGURE -var _Browser_element = _Debugger_element || F4(function(impl, flagDecoder, debugMetadata, args) +function _Http_configureRequest(xhr, request) { - return _Platform_initialize( - flagDecoder, - args, - impl.init, - impl.update, - impl.subscriptions, - function(sendToApp, initialModel) { - var view = impl.view; - /**_UNUSED/ - var domNode = args['node']; - //*/ - /**/ - var domNode = args && args['node'] ? args['node'] : _Debug_crash(0); - //*/ - var currNode = _VirtualDom_virtualize(domNode); - - return _Browser_makeAnimator(initialModel, function(model) - { - var nextNode = view(model); - var patches = _VirtualDom_diff(currNode, nextNode); - domNode = _VirtualDom_applyPatches(domNode, currNode, patches, sendToApp); - currNode = nextNode; - }); - } - ); -}); - - - -// DOCUMENT + for (var headers = request.e3; headers.b; headers = headers.b) // WHILE_CONS + { + xhr.setRequestHeader(headers.a.a, headers.a.b); + } + xhr.timeout = request.fQ.a || 0; + xhr.responseType = request.eX.d; + xhr.withCredentials = request.eH; +} -var _Debugger_document; +// RESPONSES -var _Browser_document = _Debugger_document || F4(function(impl, flagDecoder, debugMetadata, args) +function _Http_toResponse(toBody, xhr) { - return _Platform_initialize( - flagDecoder, - args, - impl.init, - impl.update, - impl.subscriptions, - function(sendToApp, initialModel) { - var divertHrefToApp = impl.setup && impl.setup(sendToApp) - var view = impl.view; - var title = _VirtualDom_doc.title; - var bodyNode = _VirtualDom_doc.body; - var currNode = _VirtualDom_virtualize(bodyNode); - return _Browser_makeAnimator(initialModel, function(model) - { - _VirtualDom_divertHrefToApp = divertHrefToApp; - var doc = view(model); - var nextNode = _VirtualDom_node('body')(_List_Nil)(doc.body); - var patches = _VirtualDom_diff(currNode, nextNode); - bodyNode = _VirtualDom_applyPatches(bodyNode, currNode, patches, sendToApp); - currNode = nextNode; - _VirtualDom_divertHrefToApp = 0; - (title !== doc.title) && (_VirtualDom_doc.title = title = doc.title); - }); - } + return A2( + 200 <= xhr.status && xhr.status < 300 ? $elm$http$Http$GoodStatus_ : $elm$http$Http$BadStatus_, + _Http_toMetadata(xhr), + toBody(xhr.response) ); -}); - - +} -// ANIMATION +// METADATA -var _Browser_cancelAnimationFrame = - typeof cancelAnimationFrame !== 'undefined' - ? cancelAnimationFrame - : function(id) { clearTimeout(id); }; +function _Http_toMetadata(xhr) +{ + return { + f_: xhr.responseURL, + fL: xhr.status, + fM: xhr.statusText, + e3: _Http_parseHeaders(xhr.getAllResponseHeaders()) + }; +} -var _Browser_requestAnimationFrame = - typeof requestAnimationFrame !== 'undefined' - ? requestAnimationFrame - : function(callback) { return setTimeout(callback, 1000 / 60); }; +// HEADERS -function _Browser_makeAnimator(model, draw) +function _Http_parseHeaders(rawHeaders) { - draw(model); - - var state = 0; - - function updateIfNeeded() + if (!rawHeaders) { - state = state === 1 - ? 0 - : ( _Browser_requestAnimationFrame(updateIfNeeded), draw(model), 1 ); + return $elm$core$Dict$empty; } - return function(nextModel, isSync) + var headers = $elm$core$Dict$empty; + var headerPairs = rawHeaders.split('\r\n'); + for (var i = headerPairs.length; i--; ) { - model = nextModel; + var headerPair = headerPairs[i]; + var index = headerPair.indexOf(': '); + if (index > 0) + { + var key = headerPair.substring(0, index); + var value = headerPair.substring(index + 2); - isSync - ? ( draw(model), - state === 2 && (state = 1) - ) - : ( state === 0 && _Browser_requestAnimationFrame(updateIfNeeded), - state = 2 + headers = A3($elm$core$Dict$update, key, function(oldValue) { + return $elm$core$Maybe$Just($elm$core$Maybe$isJust(oldValue) + ? value + ', ' + oldValue.a + : value ); - }; + }, headers); + } + } + return headers; } +// EXPECT -// APPLICATION - - -function _Browser_application(impl) -{ - var onUrlChange = impl.onUrlChange; - var onUrlRequest = impl.onUrlRequest; - var key = function() { key.a(onUrlChange(_Browser_getUrl())); }; - - return _Browser_document({ - setup: function(sendToApp) - { - key.a = sendToApp; - _Browser_window.addEventListener('popstate', key); - _Browser_window.navigator.userAgent.indexOf('Trident') < 0 || _Browser_window.addEventListener('hashchange', key); - - return F2(function(domNode, event) - { - if (!event.ctrlKey && !event.metaKey && !event.shiftKey && event.button < 1 && !domNode.target && !domNode.hasAttribute('download')) - { - event.preventDefault(); - var href = domNode.href; - var curr = _Browser_getUrl(); - var next = $elm$url$Url$fromString(href).a; - sendToApp(onUrlRequest( - (next - && curr.protocol === next.protocol - && curr.host === next.host - && curr.port_.a === next.port_.a - ) - ? $elm$browser$Browser$Internal(next) - : $elm$browser$Browser$External(href) - )); - } - }); - }, - init: function(flags) - { - return A3(impl.init, flags, _Browser_getUrl(), key); - }, - view: impl.view, - update: impl.update, - subscriptions: impl.subscriptions - }); -} - -function _Browser_getUrl() -{ - return $elm$url$Url$fromString(_VirtualDom_doc.location.href).a || _Debug_crash(1); -} - -var _Browser_go = F2(function(key, n) +var _Http_expect = F3(function(type, toBody, toValue) { - return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() { - n && history.go(n); - key(); - })); + return { + $: 0, + d: type, + b: toBody, + a: toValue + }; }); -var _Browser_pushUrl = F2(function(key, url) +var _Http_mapExpect = F2(function(func, expect) { - return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() { - history.pushState({}, '', url); - key(); - })); + return { + $: 0, + d: expect.d, + b: expect.b, + a: function(x) { return func(expect.a(x)); } + }; }); -var _Browser_replaceUrl = F2(function(key, url) +function _Http_toDataView(arrayBuffer) { - return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() { - history.replaceState({}, '', url); - key(); - })); -}); - - + return new DataView(arrayBuffer); +} -// GLOBAL EVENTS +// BODY and PARTS -var _Browser_fakeNode = { addEventListener: function() {}, removeEventListener: function() {} }; -var _Browser_doc = typeof document !== 'undefined' ? document : _Browser_fakeNode; -var _Browser_window = typeof window !== 'undefined' ? window : _Browser_fakeNode; +var _Http_emptyBody = { $: 0 }; +var _Http_pair = F2(function(a, b) { return { $: 0, a: a, b: b }; }); -var _Browser_on = F3(function(node, eventName, sendToSelf) +function _Http_toFormData(parts) { - return _Scheduler_spawn(_Scheduler_binding(function(callback) + for (var formData = new FormData(); parts.b; parts = parts.b) // WHILE_CONS { - function handler(event) { _Scheduler_rawSpawn(sendToSelf(event)); } - node.addEventListener(eventName, handler, _VirtualDom_passiveSupported && { passive: true }); - return function() { node.removeEventListener(eventName, handler); }; - })); -}); + var part = parts.a; + formData.append(part.a, part.b); + } + return formData; +} -var _Browser_decodeEvent = F2(function(decoder, event) +var _Http_bytesToBlob = F2(function(mime, bytes) { - var result = _Json_runHelp(decoder, event); - return $elm$core$Result$isOk(result) ? $elm$core$Maybe$Just(result.a) : $elm$core$Maybe$Nothing; + return new Blob([bytes], { type: mime }); }); +// PROGRESS -// PAGE VISIBILITY - - -function _Browser_visibilityInfo() -{ - return (typeof _VirtualDom_doc.hidden !== 'undefined') - ? { hidden: 'hidden', change: 'visibilitychange' } - : - (typeof _VirtualDom_doc.mozHidden !== 'undefined') - ? { hidden: 'mozHidden', change: 'mozvisibilitychange' } - : - (typeof _VirtualDom_doc.msHidden !== 'undefined') - ? { hidden: 'msHidden', change: 'msvisibilitychange' } - : - (typeof _VirtualDom_doc.webkitHidden !== 'undefined') - ? { hidden: 'webkitHidden', change: 'webkitvisibilitychange' } - : { hidden: 'hidden', change: 'visibilitychange' }; -} - - - -// ANIMATION FRAMES - - -function _Browser_rAF() +function _Http_track(router, xhr, tracker) { - return _Scheduler_binding(function(callback) - { - var id = _Browser_requestAnimationFrame(function() { - callback(_Scheduler_succeed(Date.now())); - }); - - return function() { - _Browser_cancelAnimationFrame(id); - }; - }); -} - + // TODO check out lengthComputable on loadstart event -function _Browser_now() -{ - return _Scheduler_binding(function(callback) - { - callback(_Scheduler_succeed(Date.now())); + xhr.upload.addEventListener('progress', function(event) { + if (xhr.c) { return; } + _Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Sending({ + fK: event.loaded, + eg: event.total + })))); }); -} - - - -// DOM STUFF - - -function _Browser_withNode(id, doStuff) -{ - return _Scheduler_binding(function(callback) - { - _Browser_requestAnimationFrame(function() { - var node = document.getElementById(id); - callback(node - ? _Scheduler_succeed(doStuff(node)) - : _Scheduler_fail($elm$browser$Browser$Dom$NotFound(id)) - ); - }); - }); -} - - -function _Browser_withWindow(doStuff) -{ - return _Scheduler_binding(function(callback) - { - _Browser_requestAnimationFrame(function() { - callback(_Scheduler_succeed(doStuff())); - }); - }); -} - - -// FOCUS and BLUR - - -var _Browser_call = F2(function(functionName, id) -{ - return _Browser_withNode(id, function(node) { - node[functionName](); - return _Utils_Tuple0; - }); -}); - - - -// WINDOW VIEWPORT - - -function _Browser_getViewport() -{ - return { - scene: _Browser_getScene(), - viewport: { - x: _Browser_window.pageXOffset, - y: _Browser_window.pageYOffset, - width: _Browser_doc.documentElement.clientWidth, - height: _Browser_doc.documentElement.clientHeight - } - }; -} - -function _Browser_getScene() -{ - var body = _Browser_doc.body; - var elem = _Browser_doc.documentElement; - return { - width: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth), - height: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight) - }; -} - -var _Browser_setViewport = F2(function(x, y) -{ - return _Browser_withWindow(function() - { - _Browser_window.scroll(x, y); - return _Utils_Tuple0; - }); -}); - - - -// ELEMENT VIEWPORT - - -function _Browser_getViewportOf(id) -{ - return _Browser_withNode(id, function(node) - { - return { - scene: { - width: node.scrollWidth, - height: node.scrollHeight - }, - viewport: { - x: node.scrollLeft, - y: node.scrollTop, - width: node.clientWidth, - height: node.clientHeight - } - }; - }); -} - - -var _Browser_setViewportOf = F3(function(id, x, y) -{ - return _Browser_withNode(id, function(node) - { - node.scrollLeft = x; - node.scrollTop = y; - return _Utils_Tuple0; - }); -}); - - - -// ELEMENT - - -function _Browser_getElement(id) -{ - return _Browser_withNode(id, function(node) - { - var rect = node.getBoundingClientRect(); - var x = _Browser_window.pageXOffset; - var y = _Browser_window.pageYOffset; - return { - scene: _Browser_getScene(), - viewport: { - x: x, - y: y, - width: _Browser_doc.documentElement.clientWidth, - height: _Browser_doc.documentElement.clientHeight - }, - element: { - x: x + rect.left, - y: y + rect.top, - width: rect.width, - height: rect.height - } - }; - }); -} - - - -// LOAD and RELOAD - - -function _Browser_reload(skipCache) -{ - return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback) - { - _VirtualDom_doc.location.reload(skipCache); - })); -} - -function _Browser_load(url) -{ - return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback) - { - try - { - _Browser_window.location = url; - } - catch(err) - { - // Only Firefox can throw a NS_ERROR_MALFORMED_URI exception here. - // Other browsers reload the page, so let's be consistent about that. - _VirtualDom_doc.location.reload(false); - } - })); -} - - -function _Url_percentEncode(string) -{ - return encodeURIComponent(string); -} - -function _Url_percentDecode(string) -{ - try - { - return $elm$core$Maybe$Just(decodeURIComponent(string)); - } - catch (e) - { - return $elm$core$Maybe$Nothing; - } -} - - -// SEND REQUEST - -var _Http_toTask = F3(function(router, toTask, request) -{ - return _Scheduler_binding(function(callback) - { - function done(response) { - callback(toTask(request.expect.a(response))); - } - - var xhr = new XMLHttpRequest(); - xhr.addEventListener('error', function() { done($elm$http$Http$NetworkError_); }); - xhr.addEventListener('timeout', function() { done($elm$http$Http$Timeout_); }); - xhr.addEventListener('load', function() { done(_Http_toResponse(request.expect.b, xhr)); }); - $elm$core$Maybe$isJust(request.tracker) && _Http_track(router, xhr, request.tracker.a); - - try { - xhr.open(request.method, request.url, true); - } catch (e) { - return done($elm$http$Http$BadUrl_(request.url)); - } - - _Http_configureRequest(xhr, request); - - request.body.a && xhr.setRequestHeader('Content-Type', request.body.a); - xhr.send(request.body.b); - - return function() { xhr.c = true; xhr.abort(); }; - }); -}); - - -// CONFIGURE - -function _Http_configureRequest(xhr, request) -{ - for (var headers = request.headers; headers.b; headers = headers.b) // WHILE_CONS - { - xhr.setRequestHeader(headers.a.a, headers.a.b); - } - xhr.timeout = request.timeout.a || 0; - xhr.responseType = request.expect.d; - xhr.withCredentials = request.allowCookiesFromOtherDomains; -} - - -// RESPONSES - -function _Http_toResponse(toBody, xhr) -{ - return A2( - 200 <= xhr.status && xhr.status < 300 ? $elm$http$Http$GoodStatus_ : $elm$http$Http$BadStatus_, - _Http_toMetadata(xhr), - toBody(xhr.response) - ); -} - - -// METADATA - -function _Http_toMetadata(xhr) -{ - return { - url: xhr.responseURL, - statusCode: xhr.status, - statusText: xhr.statusText, - headers: _Http_parseHeaders(xhr.getAllResponseHeaders()) - }; -} - - -// HEADERS - -function _Http_parseHeaders(rawHeaders) -{ - if (!rawHeaders) - { - return $elm$core$Dict$empty; - } - - var headers = $elm$core$Dict$empty; - var headerPairs = rawHeaders.split('\r\n'); - for (var i = headerPairs.length; i--; ) - { - var headerPair = headerPairs[i]; - var index = headerPair.indexOf(': '); - if (index > 0) - { - var key = headerPair.substring(0, index); - var value = headerPair.substring(index + 2); - - headers = A3($elm$core$Dict$update, key, function(oldValue) { - return $elm$core$Maybe$Just($elm$core$Maybe$isJust(oldValue) - ? value + ', ' + oldValue.a - : value - ); - }, headers); - } - } - return headers; -} - - -// EXPECT - -var _Http_expect = F3(function(type, toBody, toValue) -{ - return { - $: 0, - d: type, - b: toBody, - a: toValue - }; -}); - -var _Http_mapExpect = F2(function(func, expect) -{ - return { - $: 0, - d: expect.d, - b: expect.b, - a: function(x) { return func(expect.a(x)); } - }; -}); - -function _Http_toDataView(arrayBuffer) -{ - return new DataView(arrayBuffer); -} - - -// BODY and PARTS - -var _Http_emptyBody = { $: 0 }; -var _Http_pair = F2(function(a, b) { return { $: 0, a: a, b: b }; }); - -function _Http_toFormData(parts) -{ - for (var formData = new FormData(); parts.b; parts = parts.b) // WHILE_CONS - { - var part = parts.a; - formData.append(part.a, part.b); - } - return formData; -} - -var _Http_bytesToBlob = F2(function(mime, bytes) -{ - return new Blob([bytes], { type: mime }); -}); - - -// PROGRESS - -function _Http_track(router, xhr, tracker) -{ - // TODO check out lengthComputable on loadstart event - - xhr.upload.addEventListener('progress', function(event) { - if (xhr.c) { return; } - _Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Sending({ - sent: event.loaded, - size: event.total - })))); - }); - xhr.addEventListener('progress', function(event) { - if (xhr.c) { return; } - _Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Receiving({ - received: event.loaded, - size: event.lengthComputable ? $elm$core$Maybe$Just(event.total) : $elm$core$Maybe$Nothing - })))); - }); -}var $author$project$Main$LinkClicked = function (a) { - return {$: 'LinkClicked', a: a}; -}; -var $author$project$Main$UrlChanged = function (a) { - return {$: 'UrlChanged', a: a}; -}; -var $elm$core$Basics$EQ = {$: 'EQ'}; -var $elm$core$Basics$GT = {$: 'GT'}; -var $elm$core$Basics$LT = {$: 'LT'}; -var $elm$core$List$cons = _List_cons; -var $elm$core$Dict$foldr = F3( - function (func, acc, t) { - foldr: - while (true) { - if (t.$ === 'RBEmpty_elm_builtin') { - return acc; - } else { - var key = t.b; - var value = t.c; - var left = t.d; - var right = t.e; - var $temp$func = func, - $temp$acc = A3( - func, - key, - value, - A3($elm$core$Dict$foldr, func, acc, right)), - $temp$t = left; - func = $temp$func; - acc = $temp$acc; - t = $temp$t; - continue foldr; - } - } - }); -var $elm$core$Dict$toList = function (dict) { - return A3( - $elm$core$Dict$foldr, - F3( - function (key, value, list) { - return A2( - $elm$core$List$cons, - _Utils_Tuple2(key, value), - list); - }), - _List_Nil, - dict); -}; -var $elm$core$Dict$keys = function (dict) { - return A3( - $elm$core$Dict$foldr, - F3( - function (key, value, keyList) { - return A2($elm$core$List$cons, key, keyList); - }), - _List_Nil, - dict); -}; -var $elm$core$Set$toList = function (_v0) { - var dict = _v0.a; - return $elm$core$Dict$keys(dict); -}; -var $elm$core$Elm$JsArray$foldr = _JsArray_foldr; -var $elm$core$Array$foldr = F3( - function (func, baseCase, _v0) { - var tree = _v0.c; - var tail = _v0.d; - var helper = F2( - function (node, acc) { - if (node.$ === 'SubTree') { - var subTree = node.a; - return A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree); - } else { - var values = node.a; - return A3($elm$core$Elm$JsArray$foldr, func, acc, values); - } - }); - return A3( - $elm$core$Elm$JsArray$foldr, - helper, - A3($elm$core$Elm$JsArray$foldr, func, baseCase, tail), - tree); - }); -var $elm$core$Array$toList = function (array) { - return A3($elm$core$Array$foldr, $elm$core$List$cons, _List_Nil, array); -}; -var $elm$core$Result$Err = function (a) { - return {$: 'Err', a: a}; -}; -var $elm$json$Json$Decode$Failure = F2( - function (a, b) { - return {$: 'Failure', a: a, b: b}; - }); -var $elm$json$Json$Decode$Field = F2( - function (a, b) { - return {$: 'Field', a: a, b: b}; - }); -var $elm$json$Json$Decode$Index = F2( - function (a, b) { - return {$: 'Index', a: a, b: b}; - }); -var $elm$core$Result$Ok = function (a) { - return {$: 'Ok', a: a}; -}; -var $elm$json$Json$Decode$OneOf = function (a) { - return {$: 'OneOf', a: a}; -}; -var $elm$core$Basics$False = {$: 'False'}; -var $elm$core$Basics$add = _Basics_add; -var $elm$core$Maybe$Just = function (a) { - return {$: 'Just', a: a}; -}; -var $elm$core$Maybe$Nothing = {$: 'Nothing'}; -var $elm$core$String$all = _String_all; -var $elm$core$Basics$and = _Basics_and; -var $elm$core$Basics$append = _Utils_append; -var $elm$json$Json$Encode$encode = _Json_encode; -var $elm$core$String$fromInt = _String_fromNumber; -var $elm$core$String$join = F2( - function (sep, chunks) { - return A2( - _String_join, - sep, - _List_toArray(chunks)); - }); -var $elm$core$String$split = F2( - function (sep, string) { - return _List_fromArray( - A2(_String_split, sep, string)); - }); -var $elm$json$Json$Decode$indent = function (str) { - return A2( - $elm$core$String$join, - '\n ', - A2($elm$core$String$split, '\n', str)); -}; -var $elm$core$List$foldl = F3( - function (func, acc, list) { - foldl: - while (true) { - if (!list.b) { - return acc; - } else { - var x = list.a; - var xs = list.b; - var $temp$func = func, - $temp$acc = A2(func, x, acc), - $temp$list = xs; - func = $temp$func; - acc = $temp$acc; - list = $temp$list; - continue foldl; - } - } - }); -var $elm$core$List$length = function (xs) { - return A3( - $elm$core$List$foldl, - F2( - function (_v0, i) { - return i + 1; - }), - 0, - xs); -}; -var $elm$core$List$map2 = _List_map2; -var $elm$core$Basics$le = _Utils_le; -var $elm$core$Basics$sub = _Basics_sub; -var $elm$core$List$rangeHelp = F3( - function (lo, hi, list) { - rangeHelp: - while (true) { - if (_Utils_cmp(lo, hi) < 1) { - var $temp$lo = lo, - $temp$hi = hi - 1, - $temp$list = A2($elm$core$List$cons, hi, list); - lo = $temp$lo; - hi = $temp$hi; - list = $temp$list; - continue rangeHelp; - } else { - return list; - } - } - }); -var $elm$core$List$range = F2( - function (lo, hi) { - return A3($elm$core$List$rangeHelp, lo, hi, _List_Nil); - }); -var $elm$core$List$indexedMap = F2( - function (f, xs) { - return A3( - $elm$core$List$map2, - f, - A2( - $elm$core$List$range, - 0, - $elm$core$List$length(xs) - 1), - xs); - }); -var $elm$core$Char$toCode = _Char_toCode; -var $elm$core$Char$isLower = function (_char) { - var code = $elm$core$Char$toCode(_char); - return (97 <= code) && (code <= 122); -}; -var $elm$core$Char$isUpper = function (_char) { - var code = $elm$core$Char$toCode(_char); - return (code <= 90) && (65 <= code); -}; -var $elm$core$Basics$or = _Basics_or; -var $elm$core$Char$isAlpha = function (_char) { - return $elm$core$Char$isLower(_char) || $elm$core$Char$isUpper(_char); -}; -var $elm$core$Char$isDigit = function (_char) { - var code = $elm$core$Char$toCode(_char); - return (code <= 57) && (48 <= code); -}; -var $elm$core$Char$isAlphaNum = function (_char) { - return $elm$core$Char$isLower(_char) || ($elm$core$Char$isUpper(_char) || $elm$core$Char$isDigit(_char)); -}; -var $elm$core$List$reverse = function (list) { - return A3($elm$core$List$foldl, $elm$core$List$cons, _List_Nil, list); -}; -var $elm$core$String$uncons = _String_uncons; -var $elm$json$Json$Decode$errorOneOf = F2( - function (i, error) { - return '\n\n(' + ($elm$core$String$fromInt(i + 1) + (') ' + $elm$json$Json$Decode$indent( - $elm$json$Json$Decode$errorToString(error)))); - }); -var $elm$json$Json$Decode$errorToString = function (error) { - return A2($elm$json$Json$Decode$errorToStringHelp, error, _List_Nil); -}; -var $elm$json$Json$Decode$errorToStringHelp = F2( - function (error, context) { - errorToStringHelp: - while (true) { - switch (error.$) { - case 'Field': - var f = error.a; - var err = error.b; - var isSimple = function () { - var _v1 = $elm$core$String$uncons(f); - if (_v1.$ === 'Nothing') { - return false; - } else { - var _v2 = _v1.a; - var _char = _v2.a; - var rest = _v2.b; - return $elm$core$Char$isAlpha(_char) && A2($elm$core$String$all, $elm$core$Char$isAlphaNum, rest); - } - }(); - var fieldName = isSimple ? ('.' + f) : ('[\'' + (f + '\']')); - var $temp$error = err, - $temp$context = A2($elm$core$List$cons, fieldName, context); - error = $temp$error; - context = $temp$context; - continue errorToStringHelp; - case 'Index': - var i = error.a; - var err = error.b; - var indexName = '[' + ($elm$core$String$fromInt(i) + ']'); - var $temp$error = err, - $temp$context = A2($elm$core$List$cons, indexName, context); - error = $temp$error; - context = $temp$context; - continue errorToStringHelp; - case 'OneOf': - var errors = error.a; - if (!errors.b) { - return 'Ran into a Json.Decode.oneOf with no possibilities' + function () { - if (!context.b) { - return '!'; - } else { - return ' at json' + A2( - $elm$core$String$join, - '', - $elm$core$List$reverse(context)); - } - }(); - } else { - if (!errors.b.b) { - var err = errors.a; - var $temp$error = err, - $temp$context = context; - error = $temp$error; - context = $temp$context; - continue errorToStringHelp; - } else { - var starter = function () { - if (!context.b) { - return 'Json.Decode.oneOf'; - } else { - return 'The Json.Decode.oneOf at json' + A2( - $elm$core$String$join, - '', - $elm$core$List$reverse(context)); - } - }(); - var introduction = starter + (' failed in the following ' + ($elm$core$String$fromInt( - $elm$core$List$length(errors)) + ' ways:')); - return A2( - $elm$core$String$join, - '\n\n', - A2( - $elm$core$List$cons, - introduction, - A2($elm$core$List$indexedMap, $elm$json$Json$Decode$errorOneOf, errors))); - } - } - default: - var msg = error.a; - var json = error.b; - var introduction = function () { - if (!context.b) { - return 'Problem with the given value:\n\n'; - } else { - return 'Problem with the value at json' + (A2( - $elm$core$String$join, - '', - $elm$core$List$reverse(context)) + ':\n\n '); - } - }(); - return introduction + ($elm$json$Json$Decode$indent( - A2($elm$json$Json$Encode$encode, 4, json)) + ('\n\n' + msg)); - } - } - }); -var $elm$core$Array$branchFactor = 32; -var $elm$core$Array$Array_elm_builtin = F4( - function (a, b, c, d) { - return {$: 'Array_elm_builtin', a: a, b: b, c: c, d: d}; - }); -var $elm$core$Elm$JsArray$empty = _JsArray_empty; -var $elm$core$Basics$ceiling = _Basics_ceiling; -var $elm$core$Basics$fdiv = _Basics_fdiv; -var $elm$core$Basics$logBase = F2( - function (base, number) { - return _Basics_log(number) / _Basics_log(base); - }); -var $elm$core$Basics$toFloat = _Basics_toFloat; -var $elm$core$Array$shiftStep = $elm$core$Basics$ceiling( - A2($elm$core$Basics$logBase, 2, $elm$core$Array$branchFactor)); -var $elm$core$Array$empty = A4($elm$core$Array$Array_elm_builtin, 0, $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, $elm$core$Elm$JsArray$empty); -var $elm$core$Elm$JsArray$initialize = _JsArray_initialize; -var $elm$core$Array$Leaf = function (a) { - return {$: 'Leaf', a: a}; -}; -var $elm$core$Basics$apL = F2( - function (f, x) { - return f(x); - }); -var $elm$core$Basics$apR = F2( - function (x, f) { - return f(x); - }); -var $elm$core$Basics$eq = _Utils_equal; -var $elm$core$Basics$floor = _Basics_floor; -var $elm$core$Elm$JsArray$length = _JsArray_length; -var $elm$core$Basics$gt = _Utils_gt; -var $elm$core$Basics$max = F2( - function (x, y) { - return (_Utils_cmp(x, y) > 0) ? x : y; - }); -var $elm$core$Basics$mul = _Basics_mul; -var $elm$core$Array$SubTree = function (a) { - return {$: 'SubTree', a: a}; -}; -var $elm$core$Elm$JsArray$initializeFromList = _JsArray_initializeFromList; -var $elm$core$Array$compressNodes = F2( - function (nodes, acc) { - compressNodes: - while (true) { - var _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodes); - var node = _v0.a; - var remainingNodes = _v0.b; - var newAcc = A2( - $elm$core$List$cons, - $elm$core$Array$SubTree(node), - acc); - if (!remainingNodes.b) { - return $elm$core$List$reverse(newAcc); - } else { - var $temp$nodes = remainingNodes, - $temp$acc = newAcc; - nodes = $temp$nodes; - acc = $temp$acc; - continue compressNodes; - } - } - }); -var $elm$core$Tuple$first = function (_v0) { - var x = _v0.a; - return x; -}; -var $elm$core$Array$treeFromBuilder = F2( - function (nodeList, nodeListSize) { - treeFromBuilder: - while (true) { - var newNodeSize = $elm$core$Basics$ceiling(nodeListSize / $elm$core$Array$branchFactor); - if (newNodeSize === 1) { - return A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodeList).a; - } else { - var $temp$nodeList = A2($elm$core$Array$compressNodes, nodeList, _List_Nil), - $temp$nodeListSize = newNodeSize; - nodeList = $temp$nodeList; - nodeListSize = $temp$nodeListSize; - continue treeFromBuilder; - } - } - }); -var $elm$core$Array$builderToArray = F2( - function (reverseNodeList, builder) { - if (!builder.nodeListSize) { - return A4( - $elm$core$Array$Array_elm_builtin, - $elm$core$Elm$JsArray$length(builder.tail), - $elm$core$Array$shiftStep, - $elm$core$Elm$JsArray$empty, - builder.tail); - } else { - var treeLen = builder.nodeListSize * $elm$core$Array$branchFactor; - var depth = $elm$core$Basics$floor( - A2($elm$core$Basics$logBase, $elm$core$Array$branchFactor, treeLen - 1)); - var correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.nodeList) : builder.nodeList; - var tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.nodeListSize); - return A4( - $elm$core$Array$Array_elm_builtin, - $elm$core$Elm$JsArray$length(builder.tail) + treeLen, - A2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep), - tree, - builder.tail); - } - }); -var $elm$core$Basics$idiv = _Basics_idiv; -var $elm$core$Basics$lt = _Utils_lt; -var $elm$core$Array$initializeHelp = F5( - function (fn, fromIndex, len, nodeList, tail) { - initializeHelp: - while (true) { - if (fromIndex < 0) { - return A2( - $elm$core$Array$builderToArray, - false, - {nodeList: nodeList, nodeListSize: (len / $elm$core$Array$branchFactor) | 0, tail: tail}); - } else { - var leaf = $elm$core$Array$Leaf( - A3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn)); - var $temp$fn = fn, - $temp$fromIndex = fromIndex - $elm$core$Array$branchFactor, - $temp$len = len, - $temp$nodeList = A2($elm$core$List$cons, leaf, nodeList), - $temp$tail = tail; - fn = $temp$fn; - fromIndex = $temp$fromIndex; - len = $temp$len; - nodeList = $temp$nodeList; - tail = $temp$tail; - continue initializeHelp; - } - } - }); -var $elm$core$Basics$remainderBy = _Basics_remainderBy; -var $elm$core$Array$initialize = F2( - function (len, fn) { - if (len <= 0) { - return $elm$core$Array$empty; - } else { - var tailLen = len % $elm$core$Array$branchFactor; - var tail = A3($elm$core$Elm$JsArray$initialize, tailLen, len - tailLen, fn); - var initialFromIndex = (len - tailLen) - $elm$core$Array$branchFactor; - return A5($elm$core$Array$initializeHelp, fn, initialFromIndex, len, _List_Nil, tail); - } - }); -var $elm$core$Basics$True = {$: 'True'}; -var $elm$core$Result$isOk = function (result) { - if (result.$ === 'Ok') { - return true; - } else { - return false; - } -}; -var $elm$json$Json$Decode$map = _Json_map1; -var $elm$json$Json$Decode$map2 = _Json_map2; -var $elm$json$Json$Decode$succeed = _Json_succeed; -var $elm$virtual_dom$VirtualDom$toHandlerInt = function (handler) { - switch (handler.$) { - case 'Normal': - return 0; - case 'MayStopPropagation': - return 1; - case 'MayPreventDefault': - return 2; - default: - return 3; - } -}; -var $elm$browser$Debugger$Expando$ArraySeq = {$: 'ArraySeq'}; -var $elm$browser$Debugger$Overlay$BlockMost = {$: 'BlockMost'}; -var $elm$browser$Debugger$Overlay$BlockNone = {$: 'BlockNone'}; -var $elm$browser$Debugger$Expando$Constructor = F3( - function (a, b, c) { - return {$: 'Constructor', a: a, b: b, c: c}; - }); -var $elm$browser$Debugger$Expando$Dictionary = F2( - function (a, b) { - return {$: 'Dictionary', a: a, b: b}; - }); -var $elm$browser$Debugger$Main$Down = {$: 'Down'}; -var $elm$browser$Debugger$Expando$ListSeq = {$: 'ListSeq'}; -var $elm$browser$Debugger$Main$NoOp = {$: 'NoOp'}; -var $elm$browser$Debugger$Expando$Primitive = function (a) { - return {$: 'Primitive', a: a}; -}; -var $elm$browser$Debugger$Expando$Record = F2( - function (a, b) { - return {$: 'Record', a: a, b: b}; - }); -var $elm$browser$Debugger$Expando$S = function (a) { - return {$: 'S', a: a}; -}; -var $elm$browser$Debugger$Expando$Sequence = F3( - function (a, b, c) { - return {$: 'Sequence', a: a, b: b, c: c}; - }); -var $elm$browser$Debugger$Expando$SetSeq = {$: 'SetSeq'}; -var $elm$browser$Debugger$Main$Up = {$: 'Up'}; -var $elm$browser$Debugger$Main$UserMsg = function (a) { - return {$: 'UserMsg', a: a}; -}; -var $elm$browser$Debugger$Main$Export = {$: 'Export'}; -var $elm$browser$Debugger$Main$Import = {$: 'Import'}; -var $elm$browser$Debugger$Main$Open = {$: 'Open'}; -var $elm$browser$Debugger$Main$OverlayMsg = function (a) { - return {$: 'OverlayMsg', a: a}; -}; -var $elm$browser$Debugger$Main$Resume = {$: 'Resume'}; -var $elm$browser$Debugger$Main$isPaused = function (state) { - if (state.$ === 'Running') { - return false; - } else { - return true; - } -}; -var $elm$browser$Debugger$History$size = function (history) { - return history.numMessages; -}; -var $elm$browser$Debugger$Overlay$Accept = function (a) { - return {$: 'Accept', a: a}; -}; -var $elm$browser$Debugger$Overlay$Choose = F2( - function (a, b) { - return {$: 'Choose', a: a, b: b}; - }); -var $elm$html$Html$div = _VirtualDom_node('div'); -var $elm$json$Json$Encode$string = _Json_wrap; -var $elm$html$Html$Attributes$stringProperty = F2( - function (key, string) { - return A2( - _VirtualDom_property, - key, - $elm$json$Json$Encode$string(string)); - }); -var $elm$html$Html$Attributes$id = $elm$html$Html$Attributes$stringProperty('id'); -var $elm$virtual_dom$VirtualDom$Normal = function (a) { - return {$: 'Normal', a: a}; -}; -var $elm$virtual_dom$VirtualDom$on = _VirtualDom_on; -var $elm$html$Html$Events$on = F2( - function (event, decoder) { - return A2( - $elm$virtual_dom$VirtualDom$on, - event, - $elm$virtual_dom$VirtualDom$Normal(decoder)); - }); -var $elm$html$Html$Events$onClick = function (msg) { - return A2( - $elm$html$Html$Events$on, - 'click', - $elm$json$Json$Decode$succeed(msg)); -}; -var $elm$html$Html$span = _VirtualDom_node('span'); -var $elm$virtual_dom$VirtualDom$style = _VirtualDom_style; -var $elm$html$Html$Attributes$style = $elm$virtual_dom$VirtualDom$style; -var $elm$virtual_dom$VirtualDom$text = _VirtualDom_text; -var $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text; -var $elm$html$Html$a = _VirtualDom_node('a'); -var $elm$browser$Debugger$Overlay$goodNews1 = '\nThe good news is that having values like this in your message type is not\nso great in the long run. You are better off using simpler data, like\n'; -var $elm$browser$Debugger$Overlay$goodNews2 = '\nfunction can pattern match on that data and call whatever functions, JSON\ndecoders, etc. you need. This makes the code much more explicit and easy to\nfollow for other readers (or you in a few months!)\n'; -var $elm$html$Html$Attributes$href = function (url) { - return A2( - $elm$html$Html$Attributes$stringProperty, - 'href', - _VirtualDom_noJavaScriptUri(url)); -}; -var $elm$core$List$foldrHelper = F4( - function (fn, acc, ctr, ls) { - if (!ls.b) { - return acc; - } else { - var a = ls.a; - var r1 = ls.b; - if (!r1.b) { - return A2(fn, a, acc); - } else { - var b = r1.a; - var r2 = r1.b; - if (!r2.b) { - return A2( - fn, - a, - A2(fn, b, acc)); - } else { - var c = r2.a; - var r3 = r2.b; - if (!r3.b) { - return A2( - fn, - a, - A2( - fn, - b, - A2(fn, c, acc))); - } else { - var d = r3.a; - var r4 = r3.b; - var res = (ctr > 500) ? A3( - $elm$core$List$foldl, - fn, - acc, - $elm$core$List$reverse(r4)) : A4($elm$core$List$foldrHelper, fn, acc, ctr + 1, r4); - return A2( - fn, - a, - A2( - fn, - b, - A2( - fn, - c, - A2(fn, d, res)))); - } - } - } - } - }); -var $elm$core$List$foldr = F3( - function (fn, acc, ls) { - return A4($elm$core$List$foldrHelper, fn, acc, 0, ls); - }); -var $elm$core$List$map = F2( - function (f, xs) { - return A3( - $elm$core$List$foldr, - F2( - function (x, acc) { - return A2( - $elm$core$List$cons, - f(x), - acc); - }), - _List_Nil, - xs); - }); -var $elm$html$Html$p = _VirtualDom_node('p'); -var $elm$html$Html$ul = _VirtualDom_node('ul'); -var $elm$html$Html$code = _VirtualDom_node('code'); -var $elm$browser$Debugger$Overlay$viewCode = function (name) { - return A2( - $elm$html$Html$code, - _List_Nil, - _List_fromArray( - [ - $elm$html$Html$text(name) - ])); -}; -var $elm$browser$Debugger$Overlay$addCommas = function (items) { - if (!items.b) { - return ''; - } else { - if (!items.b.b) { - var item = items.a; - return item; - } else { - if (!items.b.b.b) { - var item1 = items.a; - var _v1 = items.b; - var item2 = _v1.a; - return item1 + (' and ' + item2); - } else { - var lastItem = items.a; - var otherItems = items.b; - return A2( - $elm$core$String$join, - ', ', - _Utils_ap( - otherItems, - _List_fromArray( - [' and ' + lastItem]))); - } - } - } -}; -var $elm$html$Html$li = _VirtualDom_node('li'); -var $elm$browser$Debugger$Overlay$problemToString = function (problem) { - switch (problem.$) { - case 'Function': - return 'functions'; - case 'Decoder': - return 'JSON decoders'; - case 'Task': - return 'tasks'; - case 'Process': - return 'processes'; - case 'Socket': - return 'web sockets'; - case 'Request': - return 'HTTP requests'; - case 'Program': - return 'programs'; - default: - return 'virtual DOM values'; - } -}; -var $elm$browser$Debugger$Overlay$viewProblemType = function (_v0) { - var name = _v0.name; - var problems = _v0.problems; - return A2( - $elm$html$Html$li, - _List_Nil, - _List_fromArray( - [ - $elm$browser$Debugger$Overlay$viewCode(name), - $elm$html$Html$text( - ' can contain ' + ($elm$browser$Debugger$Overlay$addCommas( - A2($elm$core$List$map, $elm$browser$Debugger$Overlay$problemToString, problems)) + '.')) - ])); -}; -var $elm$browser$Debugger$Overlay$viewBadMetadata = function (_v0) { - var message = _v0.message; - var problems = _v0.problems; - return _List_fromArray( - [ - A2( - $elm$html$Html$p, - _List_Nil, - _List_fromArray( - [ - $elm$html$Html$text('The '), - $elm$browser$Debugger$Overlay$viewCode(message), - $elm$html$Html$text(' type of your program cannot be reliably serialized for history files.') - ])), - A2( - $elm$html$Html$p, - _List_Nil, - _List_fromArray( - [ - $elm$html$Html$text('Functions cannot be serialized, nor can values that contain functions. This is a problem in these places:') - ])), - A2( - $elm$html$Html$ul, - _List_Nil, - A2($elm$core$List$map, $elm$browser$Debugger$Overlay$viewProblemType, problems)), - A2( - $elm$html$Html$p, - _List_Nil, - _List_fromArray( - [ - $elm$html$Html$text($elm$browser$Debugger$Overlay$goodNews1), - A2( - $elm$html$Html$a, - _List_fromArray( - [ - $elm$html$Html$Attributes$href('https://guide.elm-lang.org/types/custom_types.html') - ]), - _List_fromArray( - [ - $elm$html$Html$text('custom types') - ])), - $elm$html$Html$text(', in your messages. From there, your '), - $elm$browser$Debugger$Overlay$viewCode('update'), - $elm$html$Html$text($elm$browser$Debugger$Overlay$goodNews2) - ])) - ]); -}; -var $elm$virtual_dom$VirtualDom$map = _VirtualDom_map; -var $elm$html$Html$map = $elm$virtual_dom$VirtualDom$map; -var $elm$browser$Debugger$Overlay$Cancel = {$: 'Cancel'}; -var $elm$browser$Debugger$Overlay$Proceed = {$: 'Proceed'}; -var $elm$html$Html$button = _VirtualDom_node('button'); -var $elm$browser$Debugger$Overlay$viewButtons = function (buttons) { - var btn = F2( - function (msg, string) { - return A2( - $elm$html$Html$button, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'margin-right', '20px'), - $elm$html$Html$Events$onClick(msg) - ]), - _List_fromArray( - [ - $elm$html$Html$text(string) - ])); - }); - var buttonNodes = function () { - if (buttons.$ === 'Accept') { - var proceed = buttons.a; - return _List_fromArray( - [ - A2(btn, $elm$browser$Debugger$Overlay$Proceed, proceed) - ]); - } else { - var cancel = buttons.a; - var proceed = buttons.b; - return _List_fromArray( - [ - A2(btn, $elm$browser$Debugger$Overlay$Cancel, cancel), - A2(btn, $elm$browser$Debugger$Overlay$Proceed, proceed) - ]); - } - }(); - return A2( - $elm$html$Html$div, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'height', '60px'), - A2($elm$html$Html$Attributes$style, 'line-height', '60px'), - A2($elm$html$Html$Attributes$style, 'text-align', 'right'), - A2($elm$html$Html$Attributes$style, 'background-color', 'rgb(50, 50, 50)') - ]), - buttonNodes); -}; -var $elm$browser$Debugger$Overlay$viewMessage = F4( - function (config, title, details, buttons) { - return A2( - $elm$html$Html$div, - _List_fromArray( - [ - $elm$html$Html$Attributes$id('elm-debugger-overlay'), - A2($elm$html$Html$Attributes$style, 'position', 'fixed'), - A2($elm$html$Html$Attributes$style, 'top', '0'), - A2($elm$html$Html$Attributes$style, 'left', '0'), - A2($elm$html$Html$Attributes$style, 'width', '100vw'), - A2($elm$html$Html$Attributes$style, 'height', '100vh'), - A2($elm$html$Html$Attributes$style, 'color', 'white'), - A2($elm$html$Html$Attributes$style, 'pointer-events', 'none'), - A2($elm$html$Html$Attributes$style, 'font-family', '\'Trebuchet MS\', \'Lucida Grande\', \'Bitstream Vera Sans\', \'Helvetica Neue\', sans-serif'), - A2($elm$html$Html$Attributes$style, 'z-index', '2147483647') - ]), - _List_fromArray( - [ - A2( - $elm$html$Html$div, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'position', 'absolute'), - A2($elm$html$Html$Attributes$style, 'width', '600px'), - A2($elm$html$Html$Attributes$style, 'height', '100vh'), - A2($elm$html$Html$Attributes$style, 'padding-left', 'calc(50% - 300px)'), - A2($elm$html$Html$Attributes$style, 'padding-right', 'calc(50% - 300px)'), - A2($elm$html$Html$Attributes$style, 'background-color', 'rgba(200, 200, 200, 0.7)'), - A2($elm$html$Html$Attributes$style, 'pointer-events', 'auto') - ]), - _List_fromArray( - [ - A2( - $elm$html$Html$div, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'font-size', '36px'), - A2($elm$html$Html$Attributes$style, 'height', '80px'), - A2($elm$html$Html$Attributes$style, 'background-color', 'rgb(50, 50, 50)'), - A2($elm$html$Html$Attributes$style, 'padding-left', '22px'), - A2($elm$html$Html$Attributes$style, 'vertical-align', 'middle'), - A2($elm$html$Html$Attributes$style, 'line-height', '80px') - ]), - _List_fromArray( - [ - $elm$html$Html$text(title) - ])), - A2( - $elm$html$Html$div, - _List_fromArray( - [ - $elm$html$Html$Attributes$id('elm-debugger-details'), - A2($elm$html$Html$Attributes$style, 'padding', ' 8px 20px'), - A2($elm$html$Html$Attributes$style, 'overflow-y', 'auto'), - A2($elm$html$Html$Attributes$style, 'max-height', 'calc(100vh - 156px)'), - A2($elm$html$Html$Attributes$style, 'background-color', 'rgb(61, 61, 61)') - ]), - details), - A2( - $elm$html$Html$map, - config.wrap, - $elm$browser$Debugger$Overlay$viewButtons(buttons)) - ])) - ])); - }); -var $elm$virtual_dom$VirtualDom$attribute = F2( - function (key, value) { - return A2( - _VirtualDom_attribute, - _VirtualDom_noOnOrFormAction(key), - _VirtualDom_noJavaScriptOrHtmlUri(value)); - }); -var $elm$core$Basics$negate = function (n) { - return -n; -}; -var $elm$virtual_dom$VirtualDom$nodeNS = function (tag) { - return _VirtualDom_nodeNS( - _VirtualDom_noScript(tag)); -}; -var $elm$core$String$fromFloat = _String_fromNumber; -var $elm$browser$Debugger$Overlay$viewShape = F4( - function (x, y, angle, coordinates) { - return A4( - $elm$virtual_dom$VirtualDom$nodeNS, - 'http://www.w3.org/2000/svg', - 'polygon', - _List_fromArray( - [ - A2($elm$virtual_dom$VirtualDom$attribute, 'points', coordinates), - A2( - $elm$virtual_dom$VirtualDom$attribute, - 'transform', - 'translate(' + ($elm$core$String$fromFloat(x) + (' ' + ($elm$core$String$fromFloat(y) + (') rotate(' + ($elm$core$String$fromFloat(-angle) + ')')))))) - ]), - _List_Nil); - }); -var $elm$browser$Debugger$Overlay$elmLogo = A4( - $elm$virtual_dom$VirtualDom$nodeNS, - 'http://www.w3.org/2000/svg', - 'svg', - _List_fromArray( - [ - A2($elm$virtual_dom$VirtualDom$attribute, 'viewBox', '-300 -300 600 600'), - A2($elm$virtual_dom$VirtualDom$attribute, 'xmlns', 'http://www.w3.org/2000/svg'), - A2($elm$virtual_dom$VirtualDom$attribute, 'fill', 'currentColor'), - A2($elm$virtual_dom$VirtualDom$attribute, 'width', '24px'), - A2($elm$virtual_dom$VirtualDom$attribute, 'height', '24px') - ]), - _List_fromArray( - [ - A4( - $elm$virtual_dom$VirtualDom$nodeNS, - 'http://www.w3.org/2000/svg', - 'g', - _List_fromArray( - [ - A2($elm$virtual_dom$VirtualDom$attribute, 'transform', 'scale(1 -1)') - ]), - _List_fromArray( - [ - A4($elm$browser$Debugger$Overlay$viewShape, 0, -210, 0, '-280,-90 0,190 280,-90'), - A4($elm$browser$Debugger$Overlay$viewShape, -210, 0, 90, '-280,-90 0,190 280,-90'), - A4($elm$browser$Debugger$Overlay$viewShape, 207, 207, 45, '-198,-66 0,132 198,-66'), - A4($elm$browser$Debugger$Overlay$viewShape, 150, 0, 0, '-130,0 0,-130 130,0 0,130'), - A4($elm$browser$Debugger$Overlay$viewShape, -89, 239, 0, '-191,61 69,61 191,-61 -69,-61'), - A4($elm$browser$Debugger$Overlay$viewShape, 0, 106, 180, '-130,-44 0,86 130,-44'), - A4($elm$browser$Debugger$Overlay$viewShape, 256, -150, 270, '-130,-44 0,86 130,-44') - ])) - ])); -var $elm$core$String$length = _String_length; -var $elm$browser$Debugger$Overlay$viewMiniControls = F2( - function (config, numMsgs) { - var string = $elm$core$String$fromInt(numMsgs); - var width = $elm$core$String$fromInt( - 2 + $elm$core$String$length(string)); - return A2( - $elm$html$Html$div, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'position', 'fixed'), - A2($elm$html$Html$Attributes$style, 'bottom', '2em'), - A2($elm$html$Html$Attributes$style, 'right', '2em'), - A2($elm$html$Html$Attributes$style, 'width', 'calc(42px + ' + (width + 'ch)')), - A2($elm$html$Html$Attributes$style, 'height', '36px'), - A2($elm$html$Html$Attributes$style, 'background-color', '#1293D8'), - A2($elm$html$Html$Attributes$style, 'color', 'white'), - A2($elm$html$Html$Attributes$style, 'font-family', 'monospace'), - A2($elm$html$Html$Attributes$style, 'pointer-events', 'auto'), - A2($elm$html$Html$Attributes$style, 'z-index', '2147483647'), - A2($elm$html$Html$Attributes$style, 'display', 'flex'), - A2($elm$html$Html$Attributes$style, 'justify-content', 'center'), - A2($elm$html$Html$Attributes$style, 'align-items', 'center'), - A2($elm$html$Html$Attributes$style, 'cursor', 'pointer'), - $elm$html$Html$Events$onClick(config.open) - ]), - _List_fromArray( - [ - $elm$browser$Debugger$Overlay$elmLogo, - A2( - $elm$html$Html$span, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'padding-left', 'calc(1ch + 6px)'), - A2($elm$html$Html$Attributes$style, 'padding-right', '1ch') - ]), - _List_fromArray( - [ - $elm$html$Html$text(string) - ])) - ])); - }); -var $elm$browser$Debugger$Overlay$explanationBad = '\nThe messages in this history do not match the messages handled by your\nprogram. I noticed changes in the following types:\n'; -var $elm$browser$Debugger$Overlay$explanationRisky = '\nThis history seems old. It will work with this program, but some\nmessages have been added since the history was created:\n'; -var $elm$core$List$intersperse = F2( - function (sep, xs) { - if (!xs.b) { - return _List_Nil; - } else { - var hd = xs.a; - var tl = xs.b; - var step = F2( - function (x, rest) { - return A2( - $elm$core$List$cons, - sep, - A2($elm$core$List$cons, x, rest)); - }); - var spersed = A3($elm$core$List$foldr, step, _List_Nil, tl); - return A2($elm$core$List$cons, hd, spersed); - } - }); -var $elm$browser$Debugger$Overlay$viewMention = F2( - function (tags, verbed) { - var _v0 = A2( - $elm$core$List$map, - $elm$browser$Debugger$Overlay$viewCode, - $elm$core$List$reverse(tags)); - if (!_v0.b) { - return $elm$html$Html$text(''); - } else { - if (!_v0.b.b) { - var tag = _v0.a; - return A2( - $elm$html$Html$li, - _List_Nil, - _List_fromArray( - [ - $elm$html$Html$text(verbed), - tag, - $elm$html$Html$text('.') - ])); - } else { - if (!_v0.b.b.b) { - var tag2 = _v0.a; - var _v1 = _v0.b; - var tag1 = _v1.a; - return A2( - $elm$html$Html$li, - _List_Nil, - _List_fromArray( - [ - $elm$html$Html$text(verbed), - tag1, - $elm$html$Html$text(' and '), - tag2, - $elm$html$Html$text('.') - ])); - } else { - var lastTag = _v0.a; - var otherTags = _v0.b; - return A2( - $elm$html$Html$li, - _List_Nil, - A2( - $elm$core$List$cons, - $elm$html$Html$text(verbed), - _Utils_ap( - A2( - $elm$core$List$intersperse, - $elm$html$Html$text(', '), - $elm$core$List$reverse(otherTags)), - _List_fromArray( - [ - $elm$html$Html$text(', and '), - lastTag, - $elm$html$Html$text('.') - ])))); - } - } - } - }); -var $elm$browser$Debugger$Overlay$viewChange = function (change) { - return A2( - $elm$html$Html$li, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'margin', '8px 0') - ]), - function () { - if (change.$ === 'AliasChange') { - var name = change.a; - return _List_fromArray( - [ - A2( - $elm$html$Html$span, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'font-size', '1.5em') - ]), - _List_fromArray( - [ - $elm$browser$Debugger$Overlay$viewCode(name) - ])) - ]); - } else { - var name = change.a; - var removed = change.b.removed; - var changed = change.b.changed; - var added = change.b.added; - var argsMatch = change.b.argsMatch; - return _List_fromArray( - [ - A2( - $elm$html$Html$span, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'font-size', '1.5em') - ]), - _List_fromArray( - [ - $elm$browser$Debugger$Overlay$viewCode(name) - ])), - A2( - $elm$html$Html$ul, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'list-style-type', 'disc'), - A2($elm$html$Html$Attributes$style, 'padding-left', '2em') - ]), - _List_fromArray( - [ - A2($elm$browser$Debugger$Overlay$viewMention, removed, 'Removed '), - A2($elm$browser$Debugger$Overlay$viewMention, changed, 'Changed '), - A2($elm$browser$Debugger$Overlay$viewMention, added, 'Added ') - ])), - argsMatch ? $elm$html$Html$text('') : $elm$html$Html$text('This may be due to the fact that the type variable names changed.') - ]); - } - }()); -}; -var $elm$browser$Debugger$Overlay$viewReport = F2( - function (isBad, report) { - switch (report.$) { - case 'CorruptHistory': - return _List_fromArray( - [ - $elm$html$Html$text('Looks like this history file is corrupt. I cannot understand it.') - ]); - case 'VersionChanged': - var old = report.a; - var _new = report.b; - return _List_fromArray( - [ - $elm$html$Html$text('This history was created with Elm ' + (old + (', but you are using Elm ' + (_new + ' right now.')))) - ]); - case 'MessageChanged': - var old = report.a; - var _new = report.b; - return _List_fromArray( - [ - $elm$html$Html$text('To import some other history, the overall message type must' + ' be the same. The old history has '), - $elm$browser$Debugger$Overlay$viewCode(old), - $elm$html$Html$text(' messages, but the new program works with '), - $elm$browser$Debugger$Overlay$viewCode(_new), - $elm$html$Html$text(' messages.') - ]); - default: - var changes = report.a; - return _List_fromArray( - [ - A2( - $elm$html$Html$p, - _List_Nil, - _List_fromArray( - [ - $elm$html$Html$text( - isBad ? $elm$browser$Debugger$Overlay$explanationBad : $elm$browser$Debugger$Overlay$explanationRisky) - ])), - A2( - $elm$html$Html$ul, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'list-style-type', 'none'), - A2($elm$html$Html$Attributes$style, 'padding-left', '20px') - ]), - A2($elm$core$List$map, $elm$browser$Debugger$Overlay$viewChange, changes)) - ]); - } - }); -var $elm$browser$Debugger$Overlay$view = F5( - function (config, isPaused, isOpen, numMsgs, state) { - switch (state.$) { - case 'None': - return isOpen ? $elm$html$Html$text('') : (isPaused ? A2( - $elm$html$Html$div, - _List_fromArray( - [ - $elm$html$Html$Attributes$id('elm-debugger-overlay'), - A2($elm$html$Html$Attributes$style, 'position', 'fixed'), - A2($elm$html$Html$Attributes$style, 'top', '0'), - A2($elm$html$Html$Attributes$style, 'left', '0'), - A2($elm$html$Html$Attributes$style, 'width', '100vw'), - A2($elm$html$Html$Attributes$style, 'height', '100vh'), - A2($elm$html$Html$Attributes$style, 'cursor', 'pointer'), - A2($elm$html$Html$Attributes$style, 'display', 'flex'), - A2($elm$html$Html$Attributes$style, 'align-items', 'center'), - A2($elm$html$Html$Attributes$style, 'justify-content', 'center'), - A2($elm$html$Html$Attributes$style, 'pointer-events', 'auto'), - A2($elm$html$Html$Attributes$style, 'background-color', 'rgba(200, 200, 200, 0.7)'), - A2($elm$html$Html$Attributes$style, 'color', 'white'), - A2($elm$html$Html$Attributes$style, 'font-family', '\'Trebuchet MS\', \'Lucida Grande\', \'Bitstream Vera Sans\', \'Helvetica Neue\', sans-serif'), - A2($elm$html$Html$Attributes$style, 'z-index', '2147483646'), - $elm$html$Html$Events$onClick(config.resume) - ]), - _List_fromArray( - [ - A2( - $elm$html$Html$span, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'font-size', '80px') - ]), - _List_fromArray( - [ - $elm$html$Html$text('Click to Resume') - ])), - A2($elm$browser$Debugger$Overlay$viewMiniControls, config, numMsgs) - ])) : A2($elm$browser$Debugger$Overlay$viewMiniControls, config, numMsgs)); - case 'BadMetadata': - var badMetadata_ = state.a; - return A4( - $elm$browser$Debugger$Overlay$viewMessage, - config, - 'Cannot use Import or Export', - $elm$browser$Debugger$Overlay$viewBadMetadata(badMetadata_), - $elm$browser$Debugger$Overlay$Accept('Ok')); - case 'BadImport': - var report = state.a; - return A4( - $elm$browser$Debugger$Overlay$viewMessage, - config, - 'Cannot Import History', - A2($elm$browser$Debugger$Overlay$viewReport, true, report), - $elm$browser$Debugger$Overlay$Accept('Ok')); - default: - var report = state.a; - return A4( - $elm$browser$Debugger$Overlay$viewMessage, - config, - 'Warning', - A2($elm$browser$Debugger$Overlay$viewReport, false, report), - A2($elm$browser$Debugger$Overlay$Choose, 'Cancel', 'Import Anyway')); - } - }); -var $elm$browser$Debugger$Main$cornerView = function (model) { - return A5( - $elm$browser$Debugger$Overlay$view, - {exportHistory: $elm$browser$Debugger$Main$Export, importHistory: $elm$browser$Debugger$Main$Import, open: $elm$browser$Debugger$Main$Open, resume: $elm$browser$Debugger$Main$Resume, wrap: $elm$browser$Debugger$Main$OverlayMsg}, - $elm$browser$Debugger$Main$isPaused(model.state), - _Debugger_isOpen(model.popout), - $elm$browser$Debugger$History$size(model.history), - model.overlay); -}; -var $elm$core$Dict$RBEmpty_elm_builtin = {$: 'RBEmpty_elm_builtin'}; -var $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin; -var $elm$core$Set$foldr = F3( - function (func, initialState, _v0) { - var dict = _v0.a; - return A3( - $elm$core$Dict$foldr, - F3( - function (key, _v1, state) { - return A2(func, key, state); - }), - initialState, - dict); - }); -var $elm$browser$Debugger$Main$getCurrentModel = function (state) { - if (state.$ === 'Running') { - var model = state.a; - return model; - } else { - var model = state.b; - return model; - } -}; -var $elm$browser$Debugger$Main$getUserModel = function (model) { - return $elm$browser$Debugger$Main$getCurrentModel(model.state); -}; -var $elm$browser$Debugger$Main$initialWindowHeight = 420; -var $elm$browser$Debugger$Main$initialWindowWidth = 900; -var $elm$core$Dict$Black = {$: 'Black'}; -var $elm$core$Dict$RBNode_elm_builtin = F5( - function (a, b, c, d, e) { - return {$: 'RBNode_elm_builtin', a: a, b: b, c: c, d: d, e: e}; - }); -var $elm$core$Dict$Red = {$: 'Red'}; -var $elm$core$Dict$balance = F5( - function (color, key, value, left, right) { - if ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Red')) { - var _v1 = right.a; - var rK = right.b; - var rV = right.c; - var rLeft = right.d; - var rRight = right.e; - if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) { - var _v3 = left.a; - var lK = left.b; - var lV = left.c; - var lLeft = left.d; - var lRight = left.e; - return A5( - $elm$core$Dict$RBNode_elm_builtin, - $elm$core$Dict$Red, - key, - value, - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, lK, lV, lLeft, lRight), - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rLeft, rRight)); - } else { - return A5( - $elm$core$Dict$RBNode_elm_builtin, - color, - rK, - rV, - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, left, rLeft), - rRight); - } - } else { - if ((((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) && (left.d.$ === 'RBNode_elm_builtin')) && (left.d.a.$ === 'Red')) { - var _v5 = left.a; - var lK = left.b; - var lV = left.c; - var _v6 = left.d; - var _v7 = _v6.a; - var llK = _v6.b; - var llV = _v6.c; - var llLeft = _v6.d; - var llRight = _v6.e; - var lRight = left.e; - return A5( - $elm$core$Dict$RBNode_elm_builtin, - $elm$core$Dict$Red, - lK, - lV, - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight), - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, key, value, lRight, right)); - } else { - return A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right); - } - } - }); -var $elm$core$Basics$compare = _Utils_compare; -var $elm$core$Dict$insertHelp = F3( - function (key, value, dict) { - if (dict.$ === 'RBEmpty_elm_builtin') { - return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin); - } else { - var nColor = dict.a; - var nKey = dict.b; - var nValue = dict.c; - var nLeft = dict.d; - var nRight = dict.e; - var _v1 = A2($elm$core$Basics$compare, key, nKey); - switch (_v1.$) { - case 'LT': - return A5( - $elm$core$Dict$balance, - nColor, - nKey, - nValue, - A3($elm$core$Dict$insertHelp, key, value, nLeft), - nRight); - case 'EQ': - return A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight); - default: - return A5( - $elm$core$Dict$balance, - nColor, - nKey, - nValue, - nLeft, - A3($elm$core$Dict$insertHelp, key, value, nRight)); - } - } - }); -var $elm$core$Dict$insert = F3( - function (key, value, dict) { - var _v0 = A3($elm$core$Dict$insertHelp, key, value, dict); - if ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) { - var _v1 = _v0.a; - var k = _v0.b; - var v = _v0.c; - var l = _v0.d; - var r = _v0.e; - return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r); - } else { - var x = _v0; - return x; - } - }); -var $elm$browser$Debugger$Main$cachedHistory = function (model) { - var _v0 = model.state; - if (_v0.$ === 'Running') { - return model.history; - } else { - var history = _v0.e; - return history; - } -}; -var $elm$virtual_dom$VirtualDom$node = function (tag) { - return _VirtualDom_node( - _VirtualDom_noScript(tag)); -}; -var $elm$html$Html$node = $elm$virtual_dom$VirtualDom$node; -var $elm$browser$Debugger$Main$DragEnd = {$: 'DragEnd'}; -var $elm$browser$Debugger$Main$getDragStatus = function (layout) { - if (layout.$ === 'Horizontal') { - var status = layout.a; - return status; - } else { - var status = layout.a; - return status; - } -}; -var $elm$browser$Debugger$Main$Drag = function (a) { - return {$: 'Drag', a: a}; -}; -var $elm$browser$Debugger$Main$DragInfo = F5( - function (x, y, down, width, height) { - return {down: down, height: height, width: width, x: x, y: y}; - }); -var $elm$json$Json$Decode$field = _Json_decodeField; -var $elm$json$Json$Decode$at = F2( - function (fields, decoder) { - return A3($elm$core$List$foldr, $elm$json$Json$Decode$field, decoder, fields); - }); -var $elm$json$Json$Decode$float = _Json_decodeFloat; -var $elm$browser$Debugger$Main$decodeDimension = function (field) { - return A2( - $elm$json$Json$Decode$at, - _List_fromArray( - ['currentTarget', 'ownerDocument', 'defaultView', field]), - $elm$json$Json$Decode$float); -}; -var $elm$json$Json$Decode$int = _Json_decodeInt; -var $elm$json$Json$Decode$map5 = _Json_map5; -var $elm$browser$Debugger$Main$onMouseMove = A2( - $elm$html$Html$Events$on, - 'mousemove', - A2( - $elm$json$Json$Decode$map, - $elm$browser$Debugger$Main$Drag, - A6( - $elm$json$Json$Decode$map5, - $elm$browser$Debugger$Main$DragInfo, - A2($elm$json$Json$Decode$field, 'pageX', $elm$json$Json$Decode$float), - A2($elm$json$Json$Decode$field, 'pageY', $elm$json$Json$Decode$float), - A2( - $elm$json$Json$Decode$field, - 'buttons', - A2( - $elm$json$Json$Decode$map, - function (v) { - return v === 1; - }, - $elm$json$Json$Decode$int)), - $elm$browser$Debugger$Main$decodeDimension('innerWidth'), - $elm$browser$Debugger$Main$decodeDimension('innerHeight')))); -var $elm$html$Html$Events$onMouseUp = function (msg) { - return A2( - $elm$html$Html$Events$on, - 'mouseup', - $elm$json$Json$Decode$succeed(msg)); -}; -var $elm$browser$Debugger$Main$toDragListeners = function (layout) { - var _v0 = $elm$browser$Debugger$Main$getDragStatus(layout); - if (_v0.$ === 'Static') { - return _List_Nil; - } else { - return _List_fromArray( - [ - $elm$browser$Debugger$Main$onMouseMove, - $elm$html$Html$Events$onMouseUp($elm$browser$Debugger$Main$DragEnd) - ]); - } -}; -var $elm$browser$Debugger$Main$toFlexDirection = function (layout) { - if (layout.$ === 'Horizontal') { - return 'row'; - } else { - return 'column-reverse'; - } -}; -var $elm$browser$Debugger$Main$DragStart = {$: 'DragStart'}; -var $elm$html$Html$Events$onMouseDown = function (msg) { - return A2( - $elm$html$Html$Events$on, - 'mousedown', - $elm$json$Json$Decode$succeed(msg)); -}; -var $elm$browser$Debugger$Main$toPercent = function (fraction) { - return $elm$core$String$fromFloat(100 * fraction) + '%'; -}; -var $elm$browser$Debugger$Main$viewDragZone = function (layout) { - if (layout.$ === 'Horizontal') { - var x = layout.b; - return A2( - $elm$html$Html$div, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'position', 'absolute'), - A2($elm$html$Html$Attributes$style, 'top', '0'), - A2( - $elm$html$Html$Attributes$style, - 'left', - $elm$browser$Debugger$Main$toPercent(x)), - A2($elm$html$Html$Attributes$style, 'margin-left', '-5px'), - A2($elm$html$Html$Attributes$style, 'width', '10px'), - A2($elm$html$Html$Attributes$style, 'height', '100%'), - A2($elm$html$Html$Attributes$style, 'cursor', 'col-resize'), - $elm$html$Html$Events$onMouseDown($elm$browser$Debugger$Main$DragStart) - ]), - _List_Nil); - } else { - var y = layout.c; - return A2( - $elm$html$Html$div, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'position', 'absolute'), - A2( - $elm$html$Html$Attributes$style, - 'top', - $elm$browser$Debugger$Main$toPercent(y)), - A2($elm$html$Html$Attributes$style, 'left', '0'), - A2($elm$html$Html$Attributes$style, 'margin-top', '-5px'), - A2($elm$html$Html$Attributes$style, 'width', '100%'), - A2($elm$html$Html$Attributes$style, 'height', '10px'), - A2($elm$html$Html$Attributes$style, 'cursor', 'row-resize'), - $elm$html$Html$Events$onMouseDown($elm$browser$Debugger$Main$DragStart) - ]), - _List_Nil); - } -}; -var $elm$browser$Debugger$Main$TweakExpandoModel = function (a) { - return {$: 'TweakExpandoModel', a: a}; -}; -var $elm$browser$Debugger$Main$TweakExpandoMsg = function (a) { - return {$: 'TweakExpandoMsg', a: a}; -}; -var $elm$browser$Debugger$Main$toExpandoPercents = function (layout) { - if (layout.$ === 'Horizontal') { - var x = layout.b; - return _Utils_Tuple2( - $elm$browser$Debugger$Main$toPercent(1 - x), - '100%'); - } else { - var y = layout.c; - return _Utils_Tuple2( - '100%', - $elm$browser$Debugger$Main$toPercent(y)); - } -}; -var $elm$browser$Debugger$Main$toMouseBlocker = function (layout) { - var _v0 = $elm$browser$Debugger$Main$getDragStatus(layout); - if (_v0.$ === 'Static') { - return 'auto'; - } else { - return 'none'; - } -}; -var $elm$browser$Debugger$Expando$Field = F2( - function (a, b) { - return {$: 'Field', a: a, b: b}; - }); -var $elm$browser$Debugger$Expando$Index = F3( - function (a, b, c) { - return {$: 'Index', a: a, b: b, c: c}; - }); -var $elm$browser$Debugger$Expando$Key = {$: 'Key'}; -var $elm$browser$Debugger$Expando$None = {$: 'None'}; -var $elm$browser$Debugger$Expando$Toggle = {$: 'Toggle'}; -var $elm$browser$Debugger$Expando$Value = {$: 'Value'}; -var $elm$browser$Debugger$Expando$blue = A2($elm$html$Html$Attributes$style, 'color', 'rgb(28, 0, 207)'); -var $elm$core$Basics$composeL = F3( - function (g, f, x) { - return g( - f(x)); - }); -var $elm$browser$Debugger$Expando$leftPad = function (maybeKey) { - if (maybeKey.$ === 'Nothing') { - return _List_Nil; - } else { - return _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'padding-left', '4ch') - ]); - } -}; -var $elm$browser$Debugger$Expando$makeArrow = function (arrow) { - return A2( - $elm$html$Html$span, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'color', '#777'), - A2($elm$html$Html$Attributes$style, 'padding-left', '2ch'), - A2($elm$html$Html$Attributes$style, 'width', '2ch'), - A2($elm$html$Html$Attributes$style, 'display', 'inline-block') - ]), - _List_fromArray( - [ - $elm$html$Html$text(arrow) - ])); -}; -var $elm$browser$Debugger$Expando$purple = A2($elm$html$Html$Attributes$style, 'color', 'rgb(136, 19, 145)'); -var $elm$browser$Debugger$Expando$lineStarter = F3( - function (maybeKey, maybeIsClosed, description) { - var arrow = function () { - if (maybeIsClosed.$ === 'Nothing') { - return $elm$browser$Debugger$Expando$makeArrow(''); - } else { - if (maybeIsClosed.a) { - return $elm$browser$Debugger$Expando$makeArrow('▸'); - } else { - return $elm$browser$Debugger$Expando$makeArrow('▾'); - } - } - }(); - if (maybeKey.$ === 'Nothing') { - return A2($elm$core$List$cons, arrow, description); - } else { - var key = maybeKey.a; - return A2( - $elm$core$List$cons, - arrow, - A2( - $elm$core$List$cons, - A2( - $elm$html$Html$span, - _List_fromArray( - [$elm$browser$Debugger$Expando$purple]), - _List_fromArray( - [ - $elm$html$Html$text(key) - ])), - A2( - $elm$core$List$cons, - $elm$html$Html$text(' = '), - description))); - } - }); -var $elm$browser$Debugger$Expando$red = A2($elm$html$Html$Attributes$style, 'color', 'rgb(196, 26, 22)'); -var $elm$core$Tuple$second = function (_v0) { - var y = _v0.b; - return y; -}; -var $elm$browser$Debugger$Expando$seqTypeToString = F2( - function (n, seqType) { - switch (seqType.$) { - case 'ListSeq': - return 'List(' + ($elm$core$String$fromInt(n) + ')'); - case 'SetSeq': - return 'Set(' + ($elm$core$String$fromInt(n) + ')'); - default: - return 'Array(' + ($elm$core$String$fromInt(n) + ')'); - } - }); -var $elm$core$String$slice = _String_slice; -var $elm$core$String$left = F2( - function (n, string) { - return (n < 1) ? '' : A3($elm$core$String$slice, 0, n, string); - }); -var $elm$core$String$right = F2( - function (n, string) { - return (n < 1) ? '' : A3( - $elm$core$String$slice, - -n, - $elm$core$String$length(string), - string); - }); -var $elm$browser$Debugger$Expando$elideMiddle = function (str) { - return ($elm$core$String$length(str) <= 18) ? str : (A2($elm$core$String$left, 8, str) + ('...' + A2($elm$core$String$right, 8, str))); -}; -var $elm$core$Dict$isEmpty = function (dict) { - if (dict.$ === 'RBEmpty_elm_builtin') { - return true; - } else { - return false; - } -}; -var $elm$browser$Debugger$Expando$viewExtraTinyRecord = F3( - function (length, starter, entries) { - if (!entries.b) { - return _Utils_Tuple2( - length + 1, - _List_fromArray( - [ - $elm$html$Html$text('}') - ])); - } else { - var field = entries.a; - var rest = entries.b; - var nextLength = (length + $elm$core$String$length(field)) + 1; - if (nextLength > 18) { - return _Utils_Tuple2( - length + 2, - _List_fromArray( - [ - $elm$html$Html$text('…}') - ])); - } else { - var _v1 = A3($elm$browser$Debugger$Expando$viewExtraTinyRecord, nextLength, ',', rest); - var finalLength = _v1.a; - var otherHtmls = _v1.b; - return _Utils_Tuple2( - finalLength, - A2( - $elm$core$List$cons, - $elm$html$Html$text(starter), - A2( - $elm$core$List$cons, - A2( - $elm$html$Html$span, - _List_fromArray( - [$elm$browser$Debugger$Expando$purple]), - _List_fromArray( - [ - $elm$html$Html$text(field) - ])), - otherHtmls))); - } - } - }); -var $elm$browser$Debugger$Expando$viewTinyHelp = function (str) { - return _Utils_Tuple2( - $elm$core$String$length(str), - _List_fromArray( - [ - $elm$html$Html$text(str) - ])); -}; -var $elm$core$Maybe$withDefault = F2( - function (_default, maybe) { - if (maybe.$ === 'Just') { - var value = maybe.a; - return value; - } else { - return _default; - } - }); -var $elm$browser$Debugger$Expando$viewExtraTiny = function (value) { - if (value.$ === 'Record') { - var record = value.b; - return A3( - $elm$browser$Debugger$Expando$viewExtraTinyRecord, - 0, - '{', - $elm$core$Dict$keys(record)); - } else { - return $elm$browser$Debugger$Expando$viewTiny(value); - } -}; -var $elm$browser$Debugger$Expando$viewTiny = function (value) { - switch (value.$) { - case 'S': - var stringRep = value.a; - var str = $elm$browser$Debugger$Expando$elideMiddle(stringRep); - return _Utils_Tuple2( - $elm$core$String$length(str), - _List_fromArray( - [ - A2( - $elm$html$Html$span, - _List_fromArray( - [$elm$browser$Debugger$Expando$red]), - _List_fromArray( - [ - $elm$html$Html$text(str) - ])) - ])); - case 'Primitive': - var stringRep = value.a; - return _Utils_Tuple2( - $elm$core$String$length(stringRep), - _List_fromArray( - [ - A2( - $elm$html$Html$span, - _List_fromArray( - [$elm$browser$Debugger$Expando$blue]), - _List_fromArray( - [ - $elm$html$Html$text(stringRep) - ])) - ])); - case 'Sequence': - var seqType = value.a; - var valueList = value.c; - return $elm$browser$Debugger$Expando$viewTinyHelp( - A2( - $elm$browser$Debugger$Expando$seqTypeToString, - $elm$core$List$length(valueList), - seqType)); - case 'Dictionary': - var keyValuePairs = value.b; - return $elm$browser$Debugger$Expando$viewTinyHelp( - 'Dict(' + ($elm$core$String$fromInt( - $elm$core$List$length(keyValuePairs)) + ')')); - case 'Record': - var record = value.b; - return $elm$browser$Debugger$Expando$viewTinyRecord(record); - default: - if (!value.c.b) { - var maybeName = value.a; - return $elm$browser$Debugger$Expando$viewTinyHelp( - A2($elm$core$Maybe$withDefault, 'Unit', maybeName)); - } else { - var maybeName = value.a; - var valueList = value.c; - return $elm$browser$Debugger$Expando$viewTinyHelp( - function () { - if (maybeName.$ === 'Nothing') { - return 'Tuple(' + ($elm$core$String$fromInt( - $elm$core$List$length(valueList)) + ')'); - } else { - var name = maybeName.a; - return name + ' …'; - } - }()); - } - } -}; -var $elm$browser$Debugger$Expando$viewTinyRecord = function (record) { - return $elm$core$Dict$isEmpty(record) ? _Utils_Tuple2( - 2, - _List_fromArray( - [ - $elm$html$Html$text('{}') - ])) : A3( - $elm$browser$Debugger$Expando$viewTinyRecordHelp, - 0, - '{ ', - $elm$core$Dict$toList(record)); -}; -var $elm$browser$Debugger$Expando$viewTinyRecordHelp = F3( - function (length, starter, entries) { - if (!entries.b) { - return _Utils_Tuple2( - length + 2, - _List_fromArray( - [ - $elm$html$Html$text(' }') - ])); - } else { - var _v1 = entries.a; - var field = _v1.a; - var value = _v1.b; - var rest = entries.b; - var fieldLen = $elm$core$String$length(field); - var _v2 = $elm$browser$Debugger$Expando$viewExtraTiny(value); - var valueLen = _v2.a; - var valueHtmls = _v2.b; - var newLength = ((length + fieldLen) + valueLen) + 5; - if (newLength > 60) { - return _Utils_Tuple2( - length + 4, - _List_fromArray( - [ - $elm$html$Html$text(', … }') - ])); - } else { - var _v3 = A3($elm$browser$Debugger$Expando$viewTinyRecordHelp, newLength, ', ', rest); - var finalLength = _v3.a; - var otherHtmls = _v3.b; - return _Utils_Tuple2( - finalLength, - A2( - $elm$core$List$cons, - $elm$html$Html$text(starter), - A2( - $elm$core$List$cons, - A2( - $elm$html$Html$span, - _List_fromArray( - [$elm$browser$Debugger$Expando$purple]), - _List_fromArray( - [ - $elm$html$Html$text(field) - ])), - A2( - $elm$core$List$cons, - $elm$html$Html$text(' = '), - A2( - $elm$core$List$cons, - A2($elm$html$Html$span, _List_Nil, valueHtmls), - otherHtmls))))); - } - } - }); -var $elm$browser$Debugger$Expando$view = F2( - function (maybeKey, expando) { - switch (expando.$) { - case 'S': - var stringRep = expando.a; - return A2( - $elm$html$Html$div, - $elm$browser$Debugger$Expando$leftPad(maybeKey), - A3( - $elm$browser$Debugger$Expando$lineStarter, - maybeKey, - $elm$core$Maybe$Nothing, - _List_fromArray( - [ - A2( - $elm$html$Html$span, - _List_fromArray( - [$elm$browser$Debugger$Expando$red]), - _List_fromArray( - [ - $elm$html$Html$text(stringRep) - ])) - ]))); - case 'Primitive': - var stringRep = expando.a; - return A2( - $elm$html$Html$div, - $elm$browser$Debugger$Expando$leftPad(maybeKey), - A3( - $elm$browser$Debugger$Expando$lineStarter, - maybeKey, - $elm$core$Maybe$Nothing, - _List_fromArray( - [ - A2( - $elm$html$Html$span, - _List_fromArray( - [$elm$browser$Debugger$Expando$blue]), - _List_fromArray( - [ - $elm$html$Html$text(stringRep) - ])) - ]))); - case 'Sequence': - var seqType = expando.a; - var isClosed = expando.b; - var valueList = expando.c; - return A4($elm$browser$Debugger$Expando$viewSequence, maybeKey, seqType, isClosed, valueList); - case 'Dictionary': - var isClosed = expando.a; - var keyValuePairs = expando.b; - return A3($elm$browser$Debugger$Expando$viewDictionary, maybeKey, isClosed, keyValuePairs); - case 'Record': - var isClosed = expando.a; - var valueDict = expando.b; - return A3($elm$browser$Debugger$Expando$viewRecord, maybeKey, isClosed, valueDict); - default: - var maybeName = expando.a; - var isClosed = expando.b; - var valueList = expando.c; - return A4($elm$browser$Debugger$Expando$viewConstructor, maybeKey, maybeName, isClosed, valueList); - } - }); -var $elm$browser$Debugger$Expando$viewConstructor = F4( - function (maybeKey, maybeName, isClosed, valueList) { - var tinyArgs = A2( - $elm$core$List$map, - A2($elm$core$Basics$composeL, $elm$core$Tuple$second, $elm$browser$Debugger$Expando$viewExtraTiny), - valueList); - var description = function () { - var _v7 = _Utils_Tuple2(maybeName, tinyArgs); - if (_v7.a.$ === 'Nothing') { - if (!_v7.b.b) { - var _v8 = _v7.a; - return _List_fromArray( - [ - $elm$html$Html$text('()') - ]); - } else { - var _v9 = _v7.a; - var _v10 = _v7.b; - var x = _v10.a; - var xs = _v10.b; - return A2( - $elm$core$List$cons, - $elm$html$Html$text('( '), - A2( - $elm$core$List$cons, - A2($elm$html$Html$span, _List_Nil, x), - A3( - $elm$core$List$foldr, - F2( - function (args, rest) { - return A2( - $elm$core$List$cons, - $elm$html$Html$text(', '), - A2( - $elm$core$List$cons, - A2($elm$html$Html$span, _List_Nil, args), - rest)); - }), - _List_fromArray( - [ - $elm$html$Html$text(' )') - ]), - xs))); - } - } else { - if (!_v7.b.b) { - var name = _v7.a.a; - return _List_fromArray( - [ - $elm$html$Html$text(name) - ]); - } else { - var name = _v7.a.a; - var _v11 = _v7.b; - var x = _v11.a; - var xs = _v11.b; - return A2( - $elm$core$List$cons, - $elm$html$Html$text(name + ' '), - A2( - $elm$core$List$cons, - A2($elm$html$Html$span, _List_Nil, x), - A3( - $elm$core$List$foldr, - F2( - function (args, rest) { - return A2( - $elm$core$List$cons, - $elm$html$Html$text(' '), - A2( - $elm$core$List$cons, - A2($elm$html$Html$span, _List_Nil, args), - rest)); - }), - _List_Nil, - xs))); - } - } - }(); - var _v4 = function () { - if (!valueList.b) { - return _Utils_Tuple2( - $elm$core$Maybe$Nothing, - A2($elm$html$Html$div, _List_Nil, _List_Nil)); - } else { - if (!valueList.b.b) { - var entry = valueList.a; - switch (entry.$) { - case 'S': - return _Utils_Tuple2( - $elm$core$Maybe$Nothing, - A2($elm$html$Html$div, _List_Nil, _List_Nil)); - case 'Primitive': - return _Utils_Tuple2( - $elm$core$Maybe$Nothing, - A2($elm$html$Html$div, _List_Nil, _List_Nil)); - case 'Sequence': - var subValueList = entry.c; - return _Utils_Tuple2( - $elm$core$Maybe$Just(isClosed), - isClosed ? A2($elm$html$Html$div, _List_Nil, _List_Nil) : A2( - $elm$html$Html$map, - A2($elm$browser$Debugger$Expando$Index, $elm$browser$Debugger$Expando$None, 0), - $elm$browser$Debugger$Expando$viewSequenceOpen(subValueList))); - case 'Dictionary': - var keyValuePairs = entry.b; - return _Utils_Tuple2( - $elm$core$Maybe$Just(isClosed), - isClosed ? A2($elm$html$Html$div, _List_Nil, _List_Nil) : A2( - $elm$html$Html$map, - A2($elm$browser$Debugger$Expando$Index, $elm$browser$Debugger$Expando$None, 0), - $elm$browser$Debugger$Expando$viewDictionaryOpen(keyValuePairs))); - case 'Record': - var record = entry.b; - return _Utils_Tuple2( - $elm$core$Maybe$Just(isClosed), - isClosed ? A2($elm$html$Html$div, _List_Nil, _List_Nil) : A2( - $elm$html$Html$map, - A2($elm$browser$Debugger$Expando$Index, $elm$browser$Debugger$Expando$None, 0), - $elm$browser$Debugger$Expando$viewRecordOpen(record))); - default: - var subValueList = entry.c; - return _Utils_Tuple2( - $elm$core$Maybe$Just(isClosed), - isClosed ? A2($elm$html$Html$div, _List_Nil, _List_Nil) : A2( - $elm$html$Html$map, - A2($elm$browser$Debugger$Expando$Index, $elm$browser$Debugger$Expando$None, 0), - $elm$browser$Debugger$Expando$viewConstructorOpen(subValueList))); - } - } else { - return _Utils_Tuple2( - $elm$core$Maybe$Just(isClosed), - isClosed ? A2($elm$html$Html$div, _List_Nil, _List_Nil) : $elm$browser$Debugger$Expando$viewConstructorOpen(valueList)); - } - } - }(); - var maybeIsClosed = _v4.a; - var openHtml = _v4.b; - return A2( - $elm$html$Html$div, - $elm$browser$Debugger$Expando$leftPad(maybeKey), - _List_fromArray( - [ - A2( - $elm$html$Html$div, - _List_fromArray( - [ - $elm$html$Html$Events$onClick($elm$browser$Debugger$Expando$Toggle) - ]), - A3($elm$browser$Debugger$Expando$lineStarter, maybeKey, maybeIsClosed, description)), - openHtml - ])); - }); -var $elm$browser$Debugger$Expando$viewConstructorEntry = F2( - function (index, value) { - return A2( - $elm$html$Html$map, - A2($elm$browser$Debugger$Expando$Index, $elm$browser$Debugger$Expando$None, index), - A2( - $elm$browser$Debugger$Expando$view, - $elm$core$Maybe$Just( - $elm$core$String$fromInt(index)), - value)); - }); -var $elm$browser$Debugger$Expando$viewConstructorOpen = function (valueList) { - return A2( - $elm$html$Html$div, - _List_Nil, - A2($elm$core$List$indexedMap, $elm$browser$Debugger$Expando$viewConstructorEntry, valueList)); -}; -var $elm$browser$Debugger$Expando$viewDictionary = F3( - function (maybeKey, isClosed, keyValuePairs) { - var starter = 'Dict(' + ($elm$core$String$fromInt( - $elm$core$List$length(keyValuePairs)) + ')'); - return A2( - $elm$html$Html$div, - $elm$browser$Debugger$Expando$leftPad(maybeKey), - _List_fromArray( - [ - A2( - $elm$html$Html$div, - _List_fromArray( - [ - $elm$html$Html$Events$onClick($elm$browser$Debugger$Expando$Toggle) - ]), - A3( - $elm$browser$Debugger$Expando$lineStarter, - maybeKey, - $elm$core$Maybe$Just(isClosed), - _List_fromArray( - [ - $elm$html$Html$text(starter) - ]))), - isClosed ? $elm$html$Html$text('') : $elm$browser$Debugger$Expando$viewDictionaryOpen(keyValuePairs) - ])); - }); -var $elm$browser$Debugger$Expando$viewDictionaryEntry = F2( - function (index, _v2) { - var key = _v2.a; - var value = _v2.b; - switch (key.$) { - case 'S': - var stringRep = key.a; - return A2( - $elm$html$Html$map, - A2($elm$browser$Debugger$Expando$Index, $elm$browser$Debugger$Expando$Value, index), - A2( - $elm$browser$Debugger$Expando$view, - $elm$core$Maybe$Just(stringRep), - value)); - case 'Primitive': - var stringRep = key.a; - return A2( - $elm$html$Html$map, - A2($elm$browser$Debugger$Expando$Index, $elm$browser$Debugger$Expando$Value, index), - A2( - $elm$browser$Debugger$Expando$view, - $elm$core$Maybe$Just(stringRep), - value)); - default: - return A2( - $elm$html$Html$div, - _List_Nil, - _List_fromArray( - [ - A2( - $elm$html$Html$map, - A2($elm$browser$Debugger$Expando$Index, $elm$browser$Debugger$Expando$Key, index), - A2( - $elm$browser$Debugger$Expando$view, - $elm$core$Maybe$Just('key'), - key)), - A2( - $elm$html$Html$map, - A2($elm$browser$Debugger$Expando$Index, $elm$browser$Debugger$Expando$Value, index), - A2( - $elm$browser$Debugger$Expando$view, - $elm$core$Maybe$Just('value'), - value)) - ])); - } - }); -var $elm$browser$Debugger$Expando$viewDictionaryOpen = function (keyValuePairs) { - return A2( - $elm$html$Html$div, - _List_Nil, - A2($elm$core$List$indexedMap, $elm$browser$Debugger$Expando$viewDictionaryEntry, keyValuePairs)); -}; -var $elm$browser$Debugger$Expando$viewRecord = F3( - function (maybeKey, isClosed, record) { - var _v1 = isClosed ? _Utils_Tuple3( - $elm$browser$Debugger$Expando$viewTinyRecord(record).b, - $elm$html$Html$text(''), - $elm$html$Html$text('')) : _Utils_Tuple3( - _List_fromArray( - [ - $elm$html$Html$text('{') - ]), - $elm$browser$Debugger$Expando$viewRecordOpen(record), - A2( - $elm$html$Html$div, - $elm$browser$Debugger$Expando$leftPad( - $elm$core$Maybe$Just(_Utils_Tuple0)), - _List_fromArray( - [ - $elm$html$Html$text('}') - ]))); - var start = _v1.a; - var middle = _v1.b; - var end = _v1.c; - return A2( - $elm$html$Html$div, - $elm$browser$Debugger$Expando$leftPad(maybeKey), - _List_fromArray( - [ - A2( - $elm$html$Html$div, - _List_fromArray( - [ - $elm$html$Html$Events$onClick($elm$browser$Debugger$Expando$Toggle) - ]), - A3( - $elm$browser$Debugger$Expando$lineStarter, - maybeKey, - $elm$core$Maybe$Just(isClosed), - start)), - middle, - end - ])); - }); -var $elm$browser$Debugger$Expando$viewRecordEntry = function (_v0) { - var field = _v0.a; - var value = _v0.b; - return A2( - $elm$html$Html$map, - $elm$browser$Debugger$Expando$Field(field), - A2( - $elm$browser$Debugger$Expando$view, - $elm$core$Maybe$Just(field), - value)); -}; -var $elm$browser$Debugger$Expando$viewRecordOpen = function (record) { - return A2( - $elm$html$Html$div, - _List_Nil, - A2( - $elm$core$List$map, - $elm$browser$Debugger$Expando$viewRecordEntry, - $elm$core$Dict$toList(record))); -}; -var $elm$browser$Debugger$Expando$viewSequence = F4( - function (maybeKey, seqType, isClosed, valueList) { - var starter = A2( - $elm$browser$Debugger$Expando$seqTypeToString, - $elm$core$List$length(valueList), - seqType); - return A2( - $elm$html$Html$div, - $elm$browser$Debugger$Expando$leftPad(maybeKey), - _List_fromArray( - [ - A2( - $elm$html$Html$div, - _List_fromArray( - [ - $elm$html$Html$Events$onClick($elm$browser$Debugger$Expando$Toggle) - ]), - A3( - $elm$browser$Debugger$Expando$lineStarter, - maybeKey, - $elm$core$Maybe$Just(isClosed), - _List_fromArray( - [ - $elm$html$Html$text(starter) - ]))), - isClosed ? $elm$html$Html$text('') : $elm$browser$Debugger$Expando$viewSequenceOpen(valueList) - ])); - }); -var $elm$browser$Debugger$Expando$viewSequenceOpen = function (values) { - return A2( - $elm$html$Html$div, - _List_Nil, - A2($elm$core$List$indexedMap, $elm$browser$Debugger$Expando$viewConstructorEntry, values)); -}; -var $elm$browser$Debugger$Main$viewExpando = F3( - function (expandoMsg, expandoModel, layout) { - var block = $elm$browser$Debugger$Main$toMouseBlocker(layout); - var _v0 = $elm$browser$Debugger$Main$toExpandoPercents(layout); - var w = _v0.a; - var h = _v0.b; - return A2( - $elm$html$Html$div, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'display', 'block'), - A2($elm$html$Html$Attributes$style, 'width', 'calc(' + (w + ' - 4em)')), - A2($elm$html$Html$Attributes$style, 'height', 'calc(' + (h + ' - 4em)')), - A2($elm$html$Html$Attributes$style, 'padding', '2em'), - A2($elm$html$Html$Attributes$style, 'margin', '0'), - A2($elm$html$Html$Attributes$style, 'overflow', 'auto'), - A2($elm$html$Html$Attributes$style, 'pointer-events', block), - A2($elm$html$Html$Attributes$style, '-webkit-user-select', block), - A2($elm$html$Html$Attributes$style, '-moz-user-select', block), - A2($elm$html$Html$Attributes$style, '-ms-user-select', block), - A2($elm$html$Html$Attributes$style, 'user-select', block) - ]), - _List_fromArray( - [ - A2( - $elm$html$Html$div, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'color', '#ccc'), - A2($elm$html$Html$Attributes$style, 'padding', '0 0 1em 0') - ]), - _List_fromArray( - [ - $elm$html$Html$text('-- MESSAGE') - ])), - A2( - $elm$html$Html$map, - $elm$browser$Debugger$Main$TweakExpandoMsg, - A2($elm$browser$Debugger$Expando$view, $elm$core$Maybe$Nothing, expandoMsg)), - A2( - $elm$html$Html$div, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'color', '#ccc'), - A2($elm$html$Html$Attributes$style, 'padding', '1em 0') - ]), - _List_fromArray( - [ - $elm$html$Html$text('-- MODEL') - ])), - A2( - $elm$html$Html$map, - $elm$browser$Debugger$Main$TweakExpandoModel, - A2($elm$browser$Debugger$Expando$view, $elm$core$Maybe$Nothing, expandoModel)) - ])); - }); -var $elm$browser$Debugger$Main$Jump = function (a) { - return {$: 'Jump', a: a}; -}; -var $elm$virtual_dom$VirtualDom$lazy = _VirtualDom_lazy; -var $elm$html$Html$Lazy$lazy = $elm$virtual_dom$VirtualDom$lazy; -var $elm$browser$Debugger$Main$toHistoryPercents = function (layout) { - if (layout.$ === 'Horizontal') { - var x = layout.b; - return _Utils_Tuple2( - $elm$browser$Debugger$Main$toPercent(x), - '100%'); - } else { - var y = layout.c; - return _Utils_Tuple2( - '100%', - $elm$browser$Debugger$Main$toPercent(1 - y)); - } -}; -var $elm$virtual_dom$VirtualDom$lazy3 = _VirtualDom_lazy3; -var $elm$html$Html$Lazy$lazy3 = $elm$virtual_dom$VirtualDom$lazy3; -var $elm$html$Html$Attributes$class = $elm$html$Html$Attributes$stringProperty('className'); -var $elm$browser$Debugger$History$idForMessageIndex = function (index) { - return 'msg-' + $elm$core$String$fromInt(index); -}; -var $elm$html$Html$Attributes$title = $elm$html$Html$Attributes$stringProperty('title'); -var $elm$browser$Debugger$History$viewMessage = F3( - function (currentIndex, index, msg) { - var messageName = _Debugger_messageToString(msg); - var className = _Utils_eq(currentIndex, index) ? 'elm-debugger-entry elm-debugger-entry-selected' : 'elm-debugger-entry'; - return A2( - $elm$html$Html$div, - _List_fromArray( - [ - $elm$html$Html$Attributes$id( - $elm$browser$Debugger$History$idForMessageIndex(index)), - $elm$html$Html$Attributes$class(className), - $elm$html$Html$Events$onClick(index) - ]), - _List_fromArray( - [ - A2( - $elm$html$Html$span, - _List_fromArray( - [ - $elm$html$Html$Attributes$title(messageName), - $elm$html$Html$Attributes$class('elm-debugger-entry-content') - ]), - _List_fromArray( - [ - $elm$html$Html$text(messageName) - ])), - A2( - $elm$html$Html$span, - _List_fromArray( - [ - $elm$html$Html$Attributes$class('elm-debugger-entry-index') - ]), - _List_fromArray( - [ - $elm$html$Html$text( - $elm$core$String$fromInt(index)) - ])) - ])); - }); -var $elm$browser$Debugger$History$consMsg = F3( - function (currentIndex, msg, _v0) { - var index = _v0.a; - var rest = _v0.b; - return _Utils_Tuple2( - index + 1, - A2( - $elm$core$List$cons, - _Utils_Tuple2( - $elm$core$String$fromInt(index), - A4($elm$html$Html$Lazy$lazy3, $elm$browser$Debugger$History$viewMessage, currentIndex, index, msg)), - rest)); - }); -var $elm$core$Array$length = function (_v0) { - var len = _v0.a; - return len; -}; -var $elm$core$Basics$neq = _Utils_notEqual; -var $elm$virtual_dom$VirtualDom$keyedNode = function (tag) { - return _VirtualDom_keyedNode( - _VirtualDom_noScript(tag)); -}; -var $elm$html$Html$Keyed$node = $elm$virtual_dom$VirtualDom$keyedNode; -var $elm$browser$Debugger$History$maxSnapshotSize = 31; -var $elm$browser$Debugger$History$showMoreButton = function (numMessages) { - var nextIndex = (numMessages - 1) - ($elm$browser$Debugger$History$maxSnapshotSize * 2); - var labelText = 'View more messages'; - return A2( - $elm$html$Html$div, - _List_fromArray( - [ - $elm$html$Html$Attributes$class('elm-debugger-entry'), - $elm$html$Html$Events$onClick(nextIndex) - ]), - _List_fromArray( - [ - A2( - $elm$html$Html$span, - _List_fromArray( - [ - $elm$html$Html$Attributes$title(labelText), - $elm$html$Html$Attributes$class('elm-debugger-entry-content') - ]), - _List_fromArray( - [ - $elm$html$Html$text(labelText) - ])), - A2( - $elm$html$Html$span, - _List_fromArray( - [ - $elm$html$Html$Attributes$class('elm-debugger-entry-index') - ]), - _List_Nil) - ])); -}; -var $elm$browser$Debugger$History$styles = A3( - $elm$html$Html$node, - 'style', - _List_Nil, - _List_fromArray( - [ - $elm$html$Html$text('\n\n.elm-debugger-entry {\n cursor: pointer;\n width: 100%;\n box-sizing: border-box;\n padding: 8px;\n}\n\n.elm-debugger-entry:hover {\n background-color: rgb(41, 41, 41);\n}\n\n.elm-debugger-entry-selected, .elm-debugger-entry-selected:hover {\n background-color: rgb(10, 10, 10);\n}\n\n.elm-debugger-entry-content {\n width: calc(100% - 40px);\n padding: 0 5px;\n box-sizing: border-box;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n display: inline-block;\n}\n\n.elm-debugger-entry-index {\n color: #666;\n width: 40px;\n text-align: right;\n display: block;\n float: right;\n}\n\n') - ])); -var $elm$core$Basics$ge = _Utils_ge; -var $elm$browser$Debugger$History$viewSnapshot = F3( - function (selectedIndex, index, _v0) { - var messages = _v0.messages; - return A3( - $elm$html$Html$Keyed$node, - 'div', - _List_Nil, - A3( - $elm$core$Array$foldr, - $elm$browser$Debugger$History$consMsg(selectedIndex), - _Utils_Tuple2(index, _List_Nil), - messages).b); - }); -var $elm$browser$Debugger$History$consSnapshot = F3( - function (selectedIndex, snapshot, _v0) { - var index = _v0.a; - var rest = _v0.b; - var nextIndex = index + $elm$core$Array$length(snapshot.messages); - var selectedIndexHelp = ((_Utils_cmp(nextIndex, selectedIndex) > 0) && (_Utils_cmp(selectedIndex, index) > -1)) ? selectedIndex : (-1); - return _Utils_Tuple2( - nextIndex, - A2( - $elm$core$List$cons, - A4($elm$html$Html$Lazy$lazy3, $elm$browser$Debugger$History$viewSnapshot, selectedIndexHelp, index, snapshot), - rest)); - }); -var $elm$core$Elm$JsArray$foldl = _JsArray_foldl; -var $elm$core$Array$foldl = F3( - function (func, baseCase, _v0) { - var tree = _v0.c; - var tail = _v0.d; - var helper = F2( - function (node, acc) { - if (node.$ === 'SubTree') { - var subTree = node.a; - return A3($elm$core$Elm$JsArray$foldl, helper, acc, subTree); - } else { - var values = node.a; - return A3($elm$core$Elm$JsArray$foldl, func, acc, values); - } - }); - return A3( - $elm$core$Elm$JsArray$foldl, - func, - A3($elm$core$Elm$JsArray$foldl, helper, baseCase, tree), - tail); - }); -var $elm$browser$Debugger$History$viewAllSnapshots = F3( - function (selectedIndex, startIndex, snapshots) { - return A2( - $elm$html$Html$div, - _List_Nil, - A3( - $elm$core$Array$foldl, - $elm$browser$Debugger$History$consSnapshot(selectedIndex), - _Utils_Tuple2(startIndex, _List_Nil), - snapshots).b); - }); -var $elm$core$Array$fromListHelp = F3( - function (list, nodeList, nodeListSize) { - fromListHelp: - while (true) { - var _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, list); - var jsArray = _v0.a; - var remainingItems = _v0.b; - if (_Utils_cmp( - $elm$core$Elm$JsArray$length(jsArray), - $elm$core$Array$branchFactor) < 0) { - return A2( - $elm$core$Array$builderToArray, - true, - {nodeList: nodeList, nodeListSize: nodeListSize, tail: jsArray}); - } else { - var $temp$list = remainingItems, - $temp$nodeList = A2( - $elm$core$List$cons, - $elm$core$Array$Leaf(jsArray), - nodeList), - $temp$nodeListSize = nodeListSize + 1; - list = $temp$list; - nodeList = $temp$nodeList; - nodeListSize = $temp$nodeListSize; - continue fromListHelp; - } - } + xhr.addEventListener('progress', function(event) { + if (xhr.c) { return; } + _Scheduler_rawSpawn(A2($elm$core$Platform$sendToSelf, router, _Utils_Tuple2(tracker, $elm$http$Http$Receiving({ + fE: event.loaded, + eg: event.lengthComputable ? $elm$core$Maybe$Just(event.total) : $elm$core$Maybe$Nothing + })))); }); -var $elm$core$Array$fromList = function (list) { - if (!list.b) { - return $elm$core$Array$empty; - } else { - return A3($elm$core$Array$fromListHelp, list, _List_Nil, 0); - } +}var $author$project$Main$LinkClicked = function (a) { + return {$: 0, a: a}; }; -var $elm$core$Bitwise$and = _Bitwise_and; -var $elm$core$Bitwise$shiftRightZfBy = _Bitwise_shiftRightZfBy; -var $elm$core$Array$bitMask = 4294967295 >>> (32 - $elm$core$Array$shiftStep); -var $elm$core$Elm$JsArray$unsafeGet = _JsArray_unsafeGet; -var $elm$core$Array$getHelp = F3( - function (shift, index, tree) { - getHelp: - while (true) { - var pos = $elm$core$Array$bitMask & (index >>> shift); - var _v0 = A2($elm$core$Elm$JsArray$unsafeGet, pos, tree); - if (_v0.$ === 'SubTree') { - var subTree = _v0.a; - var $temp$shift = shift - $elm$core$Array$shiftStep, - $temp$index = index, - $temp$tree = subTree; - shift = $temp$shift; - index = $temp$index; - tree = $temp$tree; - continue getHelp; - } else { - var values = _v0.a; - return A2($elm$core$Elm$JsArray$unsafeGet, $elm$core$Array$bitMask & index, values); - } - } - }); -var $elm$core$Bitwise$shiftLeftBy = _Bitwise_shiftLeftBy; -var $elm$core$Array$tailIndex = function (len) { - return (len >>> 5) << 5; +var $author$project$Main$UrlChanged = function (a) { + return {$: 1, a: a}; }; -var $elm$core$Array$get = F2( - function (index, _v0) { - var len = _v0.a; - var startShift = _v0.b; - var tree = _v0.c; - var tail = _v0.d; - return ((index < 0) || (_Utils_cmp(index, len) > -1)) ? $elm$core$Maybe$Nothing : ((_Utils_cmp( - index, - $elm$core$Array$tailIndex(len)) > -1) ? $elm$core$Maybe$Just( - A2($elm$core$Elm$JsArray$unsafeGet, $elm$core$Array$bitMask & index, tail)) : $elm$core$Maybe$Just( - A3($elm$core$Array$getHelp, startShift, index, tree))); - }); -var $elm$core$Elm$JsArray$appendN = _JsArray_appendN; -var $elm$core$Elm$JsArray$slice = _JsArray_slice; -var $elm$core$Array$appendHelpBuilder = F2( - function (tail, builder) { - var tailLen = $elm$core$Elm$JsArray$length(tail); - var notAppended = ($elm$core$Array$branchFactor - $elm$core$Elm$JsArray$length(builder.tail)) - tailLen; - var appended = A3($elm$core$Elm$JsArray$appendN, $elm$core$Array$branchFactor, builder.tail, tail); - return (notAppended < 0) ? { - nodeList: A2( - $elm$core$List$cons, - $elm$core$Array$Leaf(appended), - builder.nodeList), - nodeListSize: builder.nodeListSize + 1, - tail: A3($elm$core$Elm$JsArray$slice, notAppended, tailLen, tail) - } : ((!notAppended) ? { - nodeList: A2( - $elm$core$List$cons, - $elm$core$Array$Leaf(appended), - builder.nodeList), - nodeListSize: builder.nodeListSize + 1, - tail: $elm$core$Elm$JsArray$empty - } : {nodeList: builder.nodeList, nodeListSize: builder.nodeListSize, tail: appended}); - }); -var $elm$core$List$drop = F2( - function (n, list) { - drop: - while (true) { - if (n <= 0) { - return list; - } else { - if (!list.b) { - return list; - } else { - var x = list.a; - var xs = list.b; - var $temp$n = n - 1, - $temp$list = xs; - n = $temp$n; - list = $temp$list; - continue drop; - } - } - } - }); -var $elm$core$Array$sliceLeft = F2( - function (from, array) { - var len = array.a; - var tree = array.c; - var tail = array.d; - if (!from) { - return array; - } else { - if (_Utils_cmp( - from, - $elm$core$Array$tailIndex(len)) > -1) { - return A4( - $elm$core$Array$Array_elm_builtin, - len - from, - $elm$core$Array$shiftStep, - $elm$core$Elm$JsArray$empty, - A3( - $elm$core$Elm$JsArray$slice, - from - $elm$core$Array$tailIndex(len), - $elm$core$Elm$JsArray$length(tail), - tail)); - } else { - var skipNodes = (from / $elm$core$Array$branchFactor) | 0; - var helper = F2( - function (node, acc) { - if (node.$ === 'SubTree') { - var subTree = node.a; - return A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree); - } else { - var leaf = node.a; - return A2($elm$core$List$cons, leaf, acc); - } - }); - var leafNodes = A3( - $elm$core$Elm$JsArray$foldr, - helper, - _List_fromArray( - [tail]), - tree); - var nodesToInsert = A2($elm$core$List$drop, skipNodes, leafNodes); - if (!nodesToInsert.b) { - return $elm$core$Array$empty; - } else { - var head = nodesToInsert.a; - var rest = nodesToInsert.b; - var firstSlice = from - (skipNodes * $elm$core$Array$branchFactor); - var initialBuilder = { - nodeList: _List_Nil, - nodeListSize: 0, - tail: A3( - $elm$core$Elm$JsArray$slice, - firstSlice, - $elm$core$Elm$JsArray$length(head), - head) - }; - return A2( - $elm$core$Array$builderToArray, - true, - A3($elm$core$List$foldl, $elm$core$Array$appendHelpBuilder, initialBuilder, rest)); - } - } - } - }); -var $elm$core$Array$fetchNewTail = F4( - function (shift, end, treeEnd, tree) { - fetchNewTail: - while (true) { - var pos = $elm$core$Array$bitMask & (treeEnd >>> shift); - var _v0 = A2($elm$core$Elm$JsArray$unsafeGet, pos, tree); - if (_v0.$ === 'SubTree') { - var sub = _v0.a; - var $temp$shift = shift - $elm$core$Array$shiftStep, - $temp$end = end, - $temp$treeEnd = treeEnd, - $temp$tree = sub; - shift = $temp$shift; - end = $temp$end; - treeEnd = $temp$treeEnd; - tree = $temp$tree; - continue fetchNewTail; - } else { - var values = _v0.a; - return A3($elm$core$Elm$JsArray$slice, 0, $elm$core$Array$bitMask & end, values); - } - } - }); -var $elm$core$Array$hoistTree = F3( - function (oldShift, newShift, tree) { - hoistTree: +var $elm$core$Basics$EQ = 1; +var $elm$core$Basics$GT = 2; +var $elm$core$Basics$LT = 0; +var $elm$core$List$cons = _List_cons; +var $elm$core$Dict$foldr = F3( + function (func, acc, t) { + foldr: while (true) { - if ((_Utils_cmp(oldShift, newShift) < 1) || (!$elm$core$Elm$JsArray$length(tree))) { - return tree; - } else { - var _v0 = A2($elm$core$Elm$JsArray$unsafeGet, 0, tree); - if (_v0.$ === 'SubTree') { - var sub = _v0.a; - var $temp$oldShift = oldShift - $elm$core$Array$shiftStep, - $temp$newShift = newShift, - $temp$tree = sub; - oldShift = $temp$oldShift; - newShift = $temp$newShift; - tree = $temp$tree; - continue hoistTree; - } else { - return tree; - } - } - } - }); -var $elm$core$Elm$JsArray$unsafeSet = _JsArray_unsafeSet; -var $elm$core$Array$sliceTree = F3( - function (shift, endIdx, tree) { - var lastPos = $elm$core$Array$bitMask & (endIdx >>> shift); - var _v0 = A2($elm$core$Elm$JsArray$unsafeGet, lastPos, tree); - if (_v0.$ === 'SubTree') { - var sub = _v0.a; - var newSub = A3($elm$core$Array$sliceTree, shift - $elm$core$Array$shiftStep, endIdx, sub); - return (!$elm$core$Elm$JsArray$length(newSub)) ? A3($elm$core$Elm$JsArray$slice, 0, lastPos, tree) : A3( - $elm$core$Elm$JsArray$unsafeSet, - lastPos, - $elm$core$Array$SubTree(newSub), - A3($elm$core$Elm$JsArray$slice, 0, lastPos + 1, tree)); - } else { - return A3($elm$core$Elm$JsArray$slice, 0, lastPos, tree); - } - }); -var $elm$core$Array$sliceRight = F2( - function (end, array) { - var len = array.a; - var startShift = array.b; - var tree = array.c; - var tail = array.d; - if (_Utils_eq(end, len)) { - return array; - } else { - if (_Utils_cmp( - end, - $elm$core$Array$tailIndex(len)) > -1) { - return A4( - $elm$core$Array$Array_elm_builtin, - end, - startShift, - tree, - A3($elm$core$Elm$JsArray$slice, 0, $elm$core$Array$bitMask & end, tail)); + if (t.$ === -2) { + return acc; } else { - var endIdx = $elm$core$Array$tailIndex(end); - var depth = $elm$core$Basics$floor( - A2( - $elm$core$Basics$logBase, - $elm$core$Array$branchFactor, - A2($elm$core$Basics$max, 1, endIdx - 1))); - var newShift = A2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep); - return A4( - $elm$core$Array$Array_elm_builtin, - end, - newShift, - A3( - $elm$core$Array$hoistTree, - startShift, - newShift, - A3($elm$core$Array$sliceTree, startShift, endIdx, tree)), - A4($elm$core$Array$fetchNewTail, startShift, end, endIdx, tree)); + var key = t.b; + var value = t.c; + var left = t.d; + var right = t.e; + var $temp$func = func, + $temp$acc = A3( + func, + key, + value, + A3($elm$core$Dict$foldr, func, acc, right)), + $temp$t = left; + func = $temp$func; + acc = $temp$acc; + t = $temp$t; + continue foldr; } } }); -var $elm$core$Array$translateIndex = F2( - function (index, _v0) { - var len = _v0.a; - var posIndex = (index < 0) ? (len + index) : index; - return (posIndex < 0) ? 0 : ((_Utils_cmp(posIndex, len) > 0) ? len : posIndex); - }); -var $elm$core$Array$slice = F3( - function (from, to, array) { - var correctTo = A2($elm$core$Array$translateIndex, to, array); - var correctFrom = A2($elm$core$Array$translateIndex, from, array); - return (_Utils_cmp(correctFrom, correctTo) > 0) ? $elm$core$Array$empty : A2( - $elm$core$Array$sliceLeft, - correctFrom, - A2($elm$core$Array$sliceRight, correctTo, array)); - }); -var $elm$browser$Debugger$History$viewRecentSnapshots = F3( - function (selectedIndex, recentMessagesNum, snapshots) { - var messagesToFill = $elm$browser$Debugger$History$maxSnapshotSize - recentMessagesNum; - var arrayLength = $elm$core$Array$length(snapshots); - var snapshotsToRender = function () { - var _v0 = _Utils_Tuple2( - A2($elm$core$Array$get, arrayLength - 2, snapshots), - A2($elm$core$Array$get, arrayLength - 1, snapshots)); - if ((_v0.a.$ === 'Just') && (_v0.b.$ === 'Just')) { - var fillerSnapshot = _v0.a.a; - var recentSnapshot = _v0.b.a; - return $elm$core$Array$fromList( - _List_fromArray( - [ - { - messages: A3($elm$core$Array$slice, 0, messagesToFill, fillerSnapshot.messages), - model: fillerSnapshot.model - }, - recentSnapshot - ])); - } else { - return snapshots; - } - }(); - var startingIndex = ((arrayLength * $elm$browser$Debugger$History$maxSnapshotSize) - $elm$browser$Debugger$History$maxSnapshotSize) - messagesToFill; - return A3($elm$browser$Debugger$History$viewAllSnapshots, selectedIndex, startingIndex, snapshotsToRender); - }); -var $elm$browser$Debugger$History$view = F2( - function (maybeIndex, _v0) { - var snapshots = _v0.snapshots; - var recent = _v0.recent; - var numMessages = _v0.numMessages; - var recentMessageStartIndex = numMessages - recent.numMessages; - var index = A2($elm$core$Maybe$withDefault, -1, maybeIndex); - var newStuff = A3( - $elm$html$Html$Keyed$node, - 'div', - _List_Nil, - A3( - $elm$core$List$foldr, - $elm$browser$Debugger$History$consMsg(index), - _Utils_Tuple2(recentMessageStartIndex, _List_Nil), - recent.messages).b); - var onlyRenderRecentMessages = (!_Utils_eq(index, -1)) || ($elm$core$Array$length(snapshots) < 2); - var oldStuff = onlyRenderRecentMessages ? A4($elm$html$Html$Lazy$lazy3, $elm$browser$Debugger$History$viewAllSnapshots, index, 0, snapshots) : A4($elm$html$Html$Lazy$lazy3, $elm$browser$Debugger$History$viewRecentSnapshots, index, recent.numMessages, snapshots); - return A2( - $elm$html$Html$div, - _List_fromArray( - [ - $elm$html$Html$Attributes$id('elm-debugger-sidebar'), - A2($elm$html$Html$Attributes$style, 'width', '100%'), - A2($elm$html$Html$Attributes$style, 'overflow-y', 'auto'), - A2($elm$html$Html$Attributes$style, 'height', 'calc(100% - 72px)') - ]), - A2( - $elm$core$List$cons, - $elm$browser$Debugger$History$styles, - A2( +var $elm$core$Dict$toList = function (dict) { + return A3( + $elm$core$Dict$foldr, + F3( + function (key, value, list) { + return A2( $elm$core$List$cons, - newStuff, - A2( - $elm$core$List$cons, - oldStuff, - onlyRenderRecentMessages ? _List_Nil : _List_fromArray( - [ - $elm$browser$Debugger$History$showMoreButton(numMessages) - ]))))); - }); -var $elm$browser$Debugger$Main$SwapLayout = {$: 'SwapLayout'}; -var $elm$browser$Debugger$Main$toHistoryIcon = function (layout) { - if (layout.$ === 'Horizontal') { - return 'M13 1a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3h-10a3 3 0 0 1-3-3v-8a3 3 0 0 1 3-3z M13 3h-10a1 1 0 0 0-1 1v5h12v-5a1 1 0 0 0-1-1z M14 10h-12v2a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1z'; - } else { - return 'M0 4a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3h-10a3 3 0 0 1-3-3z M2 4v8a1 1 0 0 0 1 1h2v-10h-2a1 1 0 0 0-1 1z M6 3v10h7a1 1 0 0 0 1-1v-8a1 1 0 0 0-1-1z'; - } -}; -var $elm$browser$Debugger$Main$icon = function (path) { - return A4( - $elm$virtual_dom$VirtualDom$nodeNS, - 'http://www.w3.org/2000/svg', - 'svg', - _List_fromArray( - [ - A2($elm$virtual_dom$VirtualDom$attribute, 'viewBox', '0 0 16 16'), - A2($elm$virtual_dom$VirtualDom$attribute, 'xmlns', 'http://www.w3.org/2000/svg'), - A2($elm$virtual_dom$VirtualDom$attribute, 'fill', 'currentColor'), - A2($elm$virtual_dom$VirtualDom$attribute, 'width', '16px'), - A2($elm$virtual_dom$VirtualDom$attribute, 'height', '16px') - ]), - _List_fromArray( - [ - A4( - $elm$virtual_dom$VirtualDom$nodeNS, - 'http://www.w3.org/2000/svg', - 'path', - _List_fromArray( - [ - A2($elm$virtual_dom$VirtualDom$attribute, 'd', path) - ]), - _List_Nil) - ])); -}; -var $elm$browser$Debugger$Main$viewHistoryButton = F3( - function (label, msg, path) { - return A2( - $elm$html$Html$button, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'display', 'flex'), - A2($elm$html$Html$Attributes$style, 'flex-direction', 'row'), - A2($elm$html$Html$Attributes$style, 'align-items', 'center'), - A2($elm$html$Html$Attributes$style, 'background', 'none'), - A2($elm$html$Html$Attributes$style, 'border', 'none'), - A2($elm$html$Html$Attributes$style, 'color', 'inherit'), - A2($elm$html$Html$Attributes$style, 'cursor', 'pointer'), - $elm$html$Html$Events$onClick(msg) - ]), - _List_fromArray( - [ - $elm$browser$Debugger$Main$icon(path), - A2( - $elm$html$Html$span, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'padding-left', '6px') - ]), - _List_fromArray( - [ - $elm$html$Html$text(label) - ])) - ])); - }); -var $elm$browser$Debugger$Main$viewHistoryOptions = function (layout) { - return A2( - $elm$html$Html$div, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'width', '100%'), - A2($elm$html$Html$Attributes$style, 'height', '36px'), - A2($elm$html$Html$Attributes$style, 'display', 'flex'), - A2($elm$html$Html$Attributes$style, 'flex-direction', 'row'), - A2($elm$html$Html$Attributes$style, 'align-items', 'center'), - A2($elm$html$Html$Attributes$style, 'justify-content', 'space-between'), - A2($elm$html$Html$Attributes$style, 'background-color', 'rgb(50, 50, 50)') - ]), - _List_fromArray( - [ - A3( - $elm$browser$Debugger$Main$viewHistoryButton, - 'Swap Layout', - $elm$browser$Debugger$Main$SwapLayout, - $elm$browser$Debugger$Main$toHistoryIcon(layout)), - A2( - $elm$html$Html$div, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'display', 'flex'), - A2($elm$html$Html$Attributes$style, 'flex-direction', 'row'), - A2($elm$html$Html$Attributes$style, 'align-items', 'center'), - A2($elm$html$Html$Attributes$style, 'justify-content', 'space-between') - ]), - _List_fromArray( - [ - A3($elm$browser$Debugger$Main$viewHistoryButton, 'Import', $elm$browser$Debugger$Main$Import, 'M5 1a1 1 0 0 1 0 2h-2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1a1 1 0 0 1 2 0a3 3 0 0 1-3 3h-10a3 3 0 0 1-3-3v-8a3 3 0 0 1 3-3z M10 2a1 1 0 0 0 -2 0v6a1 1 0 0 0 1 1h6a1 1 0 0 0 0-2h-3.586l4.293-4.293a1 1 0 0 0-1.414-1.414l-4.293 4.293z'), - A3($elm$browser$Debugger$Main$viewHistoryButton, 'Export', $elm$browser$Debugger$Main$Export, 'M5 1a1 1 0 0 1 0 2h-2a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1 a1 1 0 0 1 2 0a3 3 0 0 1-3 3h-10a3 3 0 0 1-3-3v-8a3 3 0 0 1 3-3z M9 3a1 1 0 1 1 0-2h6a1 1 0 0 1 1 1v6a1 1 0 1 1-2 0v-3.586l-5.293 5.293 a1 1 0 0 1-1.414-1.414l5.293 -5.293z') - ])) - ])); -}; -var $elm$browser$Debugger$Main$SliderJump = function (a) { - return {$: 'SliderJump', a: a}; -}; -var $elm$core$Basics$composeR = F3( - function (f, g, x) { - return g( - f(x)); - }); -var $elm$html$Html$input = _VirtualDom_node('input'); -var $elm$browser$Debugger$Main$isPlaying = function (maybeIndex) { - if (maybeIndex.$ === 'Nothing') { - return true; - } else { - return false; - } -}; -var $elm$html$Html$Attributes$max = $elm$html$Html$Attributes$stringProperty('max'); -var $elm$html$Html$Attributes$min = $elm$html$Html$Attributes$stringProperty('min'); -var $elm$html$Html$Events$alwaysStop = function (x) { - return _Utils_Tuple2(x, true); -}; -var $elm$virtual_dom$VirtualDom$MayStopPropagation = function (a) { - return {$: 'MayStopPropagation', a: a}; -}; -var $elm$html$Html$Events$stopPropagationOn = F2( - function (event, decoder) { - return A2( - $elm$virtual_dom$VirtualDom$on, - event, - $elm$virtual_dom$VirtualDom$MayStopPropagation(decoder)); - }); -var $elm$json$Json$Decode$string = _Json_decodeString; -var $elm$html$Html$Events$targetValue = A2( - $elm$json$Json$Decode$at, - _List_fromArray( - ['target', 'value']), - $elm$json$Json$Decode$string); -var $elm$html$Html$Events$onInput = function (tagger) { - return A2( - $elm$html$Html$Events$stopPropagationOn, - 'input', - A2( - $elm$json$Json$Decode$map, - $elm$html$Html$Events$alwaysStop, - A2($elm$json$Json$Decode$map, tagger, $elm$html$Html$Events$targetValue))); -}; -var $elm$core$String$toInt = _String_toInt; -var $elm$html$Html$Attributes$type_ = $elm$html$Html$Attributes$stringProperty('type'); -var $elm$html$Html$Attributes$value = $elm$html$Html$Attributes$stringProperty('value'); -var $elm$browser$Debugger$Main$viewPlayButton = function (playing) { - return A2( - $elm$html$Html$button, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'background', '#1293D8'), - A2($elm$html$Html$Attributes$style, 'border', 'none'), - A2($elm$html$Html$Attributes$style, 'color', 'white'), - A2($elm$html$Html$Attributes$style, 'cursor', 'pointer'), - A2($elm$html$Html$Attributes$style, 'width', '36px'), - A2($elm$html$Html$Attributes$style, 'height', '36px'), - $elm$html$Html$Events$onClick($elm$browser$Debugger$Main$Resume) - ]), - _List_fromArray( - [ - playing ? $elm$browser$Debugger$Main$icon('M2 2h4v12h-4v-12z M10 2h4v12h-4v-12z') : $elm$browser$Debugger$Main$icon('M2 2l12 7l-12 7z') - ])); -}; -var $elm$browser$Debugger$Main$viewHistorySlider = F2( - function (history, maybeIndex) { - var lastIndex = $elm$browser$Debugger$History$size(history) - 1; - var selectedIndex = A2($elm$core$Maybe$withDefault, lastIndex, maybeIndex); - return A2( - $elm$html$Html$div, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'display', 'flex'), - A2($elm$html$Html$Attributes$style, 'flex-direction', 'row'), - A2($elm$html$Html$Attributes$style, 'align-items', 'center'), - A2($elm$html$Html$Attributes$style, 'width', '100%'), - A2($elm$html$Html$Attributes$style, 'height', '36px'), - A2($elm$html$Html$Attributes$style, 'background-color', 'rgb(50, 50, 50)') - ]), - _List_fromArray( - [ - A2( - $elm$html$Html$Lazy$lazy, - $elm$browser$Debugger$Main$viewPlayButton, - $elm$browser$Debugger$Main$isPlaying(maybeIndex)), - A2( - $elm$html$Html$input, - _List_fromArray( - [ - $elm$html$Html$Attributes$type_('range'), - A2($elm$html$Html$Attributes$style, 'width', 'calc(100% - 56px)'), - A2($elm$html$Html$Attributes$style, 'height', '36px'), - A2($elm$html$Html$Attributes$style, 'margin', '0 10px'), - $elm$html$Html$Attributes$min('0'), - $elm$html$Html$Attributes$max( - $elm$core$String$fromInt(lastIndex)), - $elm$html$Html$Attributes$value( - $elm$core$String$fromInt(selectedIndex)), - $elm$html$Html$Events$onInput( - A2( - $elm$core$Basics$composeR, - $elm$core$String$toInt, - A2( - $elm$core$Basics$composeR, - $elm$core$Maybe$withDefault(lastIndex), - $elm$browser$Debugger$Main$SliderJump))) - ]), - _List_Nil) - ])); - }); -var $elm$browser$Debugger$Main$viewHistory = F3( - function (maybeIndex, history, layout) { - var block = $elm$browser$Debugger$Main$toMouseBlocker(layout); - var _v0 = $elm$browser$Debugger$Main$toHistoryPercents(layout); - var w = _v0.a; - var h = _v0.b; - return A2( - $elm$html$Html$div, - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'width', w), - A2($elm$html$Html$Attributes$style, 'height', h), - A2($elm$html$Html$Attributes$style, 'display', 'flex'), - A2($elm$html$Html$Attributes$style, 'flex-direction', 'column'), - A2($elm$html$Html$Attributes$style, 'color', '#DDDDDD'), - A2($elm$html$Html$Attributes$style, 'background-color', 'rgb(61, 61, 61)'), - A2($elm$html$Html$Attributes$style, 'pointer-events', block), - A2($elm$html$Html$Attributes$style, 'user-select', block) - ]), - _List_fromArray( - [ - A2($elm$browser$Debugger$Main$viewHistorySlider, history, maybeIndex), - A2( - $elm$html$Html$map, - $elm$browser$Debugger$Main$Jump, - A2($elm$browser$Debugger$History$view, maybeIndex, history)), - A2($elm$html$Html$Lazy$lazy, $elm$browser$Debugger$Main$viewHistoryOptions, layout) - ])); - }); -var $elm$browser$Debugger$Main$popoutView = function (model) { - var maybeIndex = function () { - var _v0 = model.state; - if (_v0.$ === 'Running') { - return $elm$core$Maybe$Nothing; - } else { - var index = _v0.a; - return $elm$core$Maybe$Just(index); - } - }(); - var historyToRender = $elm$browser$Debugger$Main$cachedHistory(model); + _Utils_Tuple2(key, value), + list); + }), + _List_Nil, + dict); +}; +var $elm$core$Dict$keys = function (dict) { return A3( - $elm$html$Html$node, - 'body', - _Utils_ap( - $elm$browser$Debugger$Main$toDragListeners(model.layout), - _List_fromArray( - [ - A2($elm$html$Html$Attributes$style, 'margin', '0'), - A2($elm$html$Html$Attributes$style, 'padding', '0'), - A2($elm$html$Html$Attributes$style, 'width', '100%'), - A2($elm$html$Html$Attributes$style, 'height', '100%'), - A2($elm$html$Html$Attributes$style, 'font-family', 'monospace'), - A2($elm$html$Html$Attributes$style, 'display', 'flex'), - A2( - $elm$html$Html$Attributes$style, - 'flex-direction', - $elm$browser$Debugger$Main$toFlexDirection(model.layout)) - ])), - _List_fromArray( - [ - A3($elm$browser$Debugger$Main$viewHistory, maybeIndex, historyToRender, model.layout), - $elm$browser$Debugger$Main$viewDragZone(model.layout), - A3($elm$browser$Debugger$Main$viewExpando, model.expandoMsg, model.expandoModel, model.layout) - ])); + $elm$core$Dict$foldr, + F3( + function (key, value, keyList) { + return A2($elm$core$List$cons, key, keyList); + }), + _List_Nil, + dict); }; -var $elm$browser$Debugger$Overlay$BlockAll = {$: 'BlockAll'}; -var $elm$browser$Debugger$Overlay$toBlockerType = F2( - function (isPaused, state) { - switch (state.$) { - case 'None': - return isPaused ? $elm$browser$Debugger$Overlay$BlockAll : $elm$browser$Debugger$Overlay$BlockNone; - case 'BadMetadata': - return $elm$browser$Debugger$Overlay$BlockMost; - case 'BadImport': - return $elm$browser$Debugger$Overlay$BlockMost; - default: - return $elm$browser$Debugger$Overlay$BlockMost; - } - }); -var $elm$browser$Debugger$Main$toBlockerType = function (model) { - return A2( - $elm$browser$Debugger$Overlay$toBlockerType, - $elm$browser$Debugger$Main$isPaused(model.state), - model.overlay); +var $elm$core$Set$toList = function (_v0) { + var dict = _v0; + return $elm$core$Dict$keys(dict); }; -var $elm$browser$Debugger$Main$Horizontal = F3( - function (a, b, c) { - return {$: 'Horizontal', a: a, b: b, c: c}; +var $elm$core$Elm$JsArray$foldr = _JsArray_foldr; +var $elm$core$Array$foldr = F3( + function (func, baseCase, _v0) { + var tree = _v0.c; + var tail = _v0.d; + var helper = F2( + function (node, acc) { + if (!node.$) { + var subTree = node.a; + return A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree); + } else { + var values = node.a; + return A3($elm$core$Elm$JsArray$foldr, func, acc, values); + } + }); + return A3( + $elm$core$Elm$JsArray$foldr, + helper, + A3($elm$core$Elm$JsArray$foldr, func, baseCase, tail), + tree); }); -var $elm$browser$Debugger$Main$Running = function (a) { - return {$: 'Running', a: a}; +var $elm$core$Array$toList = function (array) { + return A3($elm$core$Array$foldr, $elm$core$List$cons, _List_Nil, array); +}; +var $elm$core$Result$Err = function (a) { + return {$: 1, a: a}; }; -var $elm$browser$Debugger$Main$Static = {$: 'Static'}; -var $elm$browser$Debugger$Metadata$Error = F2( - function (message, problems) { - return {message: message, problems: problems}; +var $elm$json$Json$Decode$Failure = F2( + function (a, b) { + return {$: 3, a: a, b: b}; }); -var $elm$json$Json$Decode$decodeValue = _Json_run; -var $elm$browser$Debugger$Metadata$Metadata = F2( - function (versions, types) { - return {types: types, versions: versions}; +var $elm$json$Json$Decode$Field = F2( + function (a, b) { + return {$: 0, a: a, b: b}; }); -var $elm$browser$Debugger$Metadata$Types = F3( - function (message, aliases, unions) { - return {aliases: aliases, message: message, unions: unions}; +var $elm$json$Json$Decode$Index = F2( + function (a, b) { + return {$: 1, a: a, b: b}; + }); +var $elm$core$Result$Ok = function (a) { + return {$: 0, a: a}; +}; +var $elm$json$Json$Decode$OneOf = function (a) { + return {$: 2, a: a}; +}; +var $elm$core$Basics$False = 1; +var $elm$core$Basics$add = _Basics_add; +var $elm$core$Maybe$Just = function (a) { + return {$: 0, a: a}; +}; +var $elm$core$Maybe$Nothing = {$: 1}; +var $elm$core$String$all = _String_all; +var $elm$core$Basics$and = _Basics_and; +var $elm$core$Basics$append = _Utils_append; +var $elm$json$Json$Encode$encode = _Json_encode; +var $elm$core$String$fromInt = _String_fromNumber; +var $elm$core$String$join = F2( + function (sep, chunks) { + return A2( + _String_join, + sep, + _List_toArray(chunks)); }); -var $elm$browser$Debugger$Metadata$Alias = F2( - function (args, tipe) { - return {args: args, tipe: tipe}; +var $elm$core$String$split = F2( + function (sep, string) { + return _List_fromArray( + A2(_String_split, sep, string)); }); -var $elm$json$Json$Decode$list = _Json_decodeList; -var $elm$browser$Debugger$Metadata$decodeAlias = A3( - $elm$json$Json$Decode$map2, - $elm$browser$Debugger$Metadata$Alias, - A2( - $elm$json$Json$Decode$field, - 'args', - $elm$json$Json$Decode$list($elm$json$Json$Decode$string)), - A2($elm$json$Json$Decode$field, 'type', $elm$json$Json$Decode$string)); -var $elm$browser$Debugger$Metadata$Union = F2( - function (args, tags) { - return {args: args, tags: tags}; +var $elm$json$Json$Decode$indent = function (str) { + return A2( + $elm$core$String$join, + '\n ', + A2($elm$core$String$split, '\n', str)); +}; +var $elm$core$List$foldl = F3( + function (func, acc, list) { + foldl: + while (true) { + if (!list.b) { + return acc; + } else { + var x = list.a; + var xs = list.b; + var $temp$func = func, + $temp$acc = A2(func, x, acc), + $temp$list = xs; + func = $temp$func; + acc = $temp$acc; + list = $temp$list; + continue foldl; + } + } }); -var $elm$core$Dict$fromList = function (assocs) { +var $elm$core$List$length = function (xs) { return A3( $elm$core$List$foldl, F2( - function (_v0, dict) { - var key = _v0.a; - var value = _v0.b; - return A3($elm$core$Dict$insert, key, value, dict); + function (_v0, i) { + return i + 1; }), - $elm$core$Dict$empty, - assocs); + 0, + xs); }; -var $elm$json$Json$Decode$keyValuePairs = _Json_decodeKeyValuePairs; -var $elm$json$Json$Decode$dict = function (decoder) { - return A2( - $elm$json$Json$Decode$map, - $elm$core$Dict$fromList, - $elm$json$Json$Decode$keyValuePairs(decoder)); +var $elm$core$List$map2 = _List_map2; +var $elm$core$Basics$le = _Utils_le; +var $elm$core$Basics$sub = _Basics_sub; +var $elm$core$List$rangeHelp = F3( + function (lo, hi, list) { + rangeHelp: + while (true) { + if (_Utils_cmp(lo, hi) < 1) { + var $temp$lo = lo, + $temp$hi = hi - 1, + $temp$list = A2($elm$core$List$cons, hi, list); + lo = $temp$lo; + hi = $temp$hi; + list = $temp$list; + continue rangeHelp; + } else { + return list; + } + } + }); +var $elm$core$List$range = F2( + function (lo, hi) { + return A3($elm$core$List$rangeHelp, lo, hi, _List_Nil); + }); +var $elm$core$List$indexedMap = F2( + function (f, xs) { + return A3( + $elm$core$List$map2, + f, + A2( + $elm$core$List$range, + 0, + $elm$core$List$length(xs) - 1), + xs); + }); +var $elm$core$Char$toCode = _Char_toCode; +var $elm$core$Char$isLower = function (_char) { + var code = $elm$core$Char$toCode(_char); + return (97 <= code) && (code <= 122); }; -var $elm$browser$Debugger$Metadata$decodeUnion = A3( - $elm$json$Json$Decode$map2, - $elm$browser$Debugger$Metadata$Union, - A2( - $elm$json$Json$Decode$field, - 'args', - $elm$json$Json$Decode$list($elm$json$Json$Decode$string)), - A2( - $elm$json$Json$Decode$field, - 'tags', - $elm$json$Json$Decode$dict( - $elm$json$Json$Decode$list($elm$json$Json$Decode$string)))); -var $elm$json$Json$Decode$map3 = _Json_map3; -var $elm$browser$Debugger$Metadata$decodeTypes = A4( - $elm$json$Json$Decode$map3, - $elm$browser$Debugger$Metadata$Types, - A2($elm$json$Json$Decode$field, 'message', $elm$json$Json$Decode$string), - A2( - $elm$json$Json$Decode$field, - 'aliases', - $elm$json$Json$Decode$dict($elm$browser$Debugger$Metadata$decodeAlias)), - A2( - $elm$json$Json$Decode$field, - 'unions', - $elm$json$Json$Decode$dict($elm$browser$Debugger$Metadata$decodeUnion))); -var $elm$browser$Debugger$Metadata$Versions = function (elm) { - return {elm: elm}; +var $elm$core$Char$isUpper = function (_char) { + var code = $elm$core$Char$toCode(_char); + return (code <= 90) && (65 <= code); }; -var $elm$browser$Debugger$Metadata$decodeVersions = A2( - $elm$json$Json$Decode$map, - $elm$browser$Debugger$Metadata$Versions, - A2($elm$json$Json$Decode$field, 'elm', $elm$json$Json$Decode$string)); -var $elm$browser$Debugger$Metadata$decoder = A3( - $elm$json$Json$Decode$map2, - $elm$browser$Debugger$Metadata$Metadata, - A2($elm$json$Json$Decode$field, 'versions', $elm$browser$Debugger$Metadata$decodeVersions), - A2($elm$json$Json$Decode$field, 'types', $elm$browser$Debugger$Metadata$decodeTypes)); -var $elm$browser$Debugger$Metadata$ProblemType = F2( - function (name, problems) { - return {name: name, problems: problems}; +var $elm$core$Basics$or = _Basics_or; +var $elm$core$Char$isAlpha = function (_char) { + return $elm$core$Char$isLower(_char) || $elm$core$Char$isUpper(_char); +}; +var $elm$core$Char$isDigit = function (_char) { + var code = $elm$core$Char$toCode(_char); + return (code <= 57) && (48 <= code); +}; +var $elm$core$Char$isAlphaNum = function (_char) { + return $elm$core$Char$isLower(_char) || ($elm$core$Char$isUpper(_char) || $elm$core$Char$isDigit(_char)); +}; +var $elm$core$List$reverse = function (list) { + return A3($elm$core$List$foldl, $elm$core$List$cons, _List_Nil, list); +}; +var $elm$core$String$uncons = _String_uncons; +var $elm$json$Json$Decode$errorOneOf = F2( + function (i, error) { + return '\n\n(' + ($elm$core$String$fromInt(i + 1) + (') ' + $elm$json$Json$Decode$indent( + $elm$json$Json$Decode$errorToString(error)))); }); -var $elm$core$List$maybeCons = F3( - function (f, mx, xs) { - var _v0 = f(mx); - if (_v0.$ === 'Just') { - var x = _v0.a; - return A2($elm$core$List$cons, x, xs); - } else { - return xs; +var $elm$json$Json$Decode$errorToString = function (error) { + return A2($elm$json$Json$Decode$errorToStringHelp, error, _List_Nil); +}; +var $elm$json$Json$Decode$errorToStringHelp = F2( + function (error, context) { + errorToStringHelp: + while (true) { + switch (error.$) { + case 0: + var f = error.a; + var err = error.b; + var isSimple = function () { + var _v1 = $elm$core$String$uncons(f); + if (_v1.$ === 1) { + return false; + } else { + var _v2 = _v1.a; + var _char = _v2.a; + var rest = _v2.b; + return $elm$core$Char$isAlpha(_char) && A2($elm$core$String$all, $elm$core$Char$isAlphaNum, rest); + } + }(); + var fieldName = isSimple ? ('.' + f) : ('[\'' + (f + '\']')); + var $temp$error = err, + $temp$context = A2($elm$core$List$cons, fieldName, context); + error = $temp$error; + context = $temp$context; + continue errorToStringHelp; + case 1: + var i = error.a; + var err = error.b; + var indexName = '[' + ($elm$core$String$fromInt(i) + ']'); + var $temp$error = err, + $temp$context = A2($elm$core$List$cons, indexName, context); + error = $temp$error; + context = $temp$context; + continue errorToStringHelp; + case 2: + var errors = error.a; + if (!errors.b) { + return 'Ran into a Json.Decode.oneOf with no possibilities' + function () { + if (!context.b) { + return '!'; + } else { + return ' at json' + A2( + $elm$core$String$join, + '', + $elm$core$List$reverse(context)); + } + }(); + } else { + if (!errors.b.b) { + var err = errors.a; + var $temp$error = err, + $temp$context = context; + error = $temp$error; + context = $temp$context; + continue errorToStringHelp; + } else { + var starter = function () { + if (!context.b) { + return 'Json.Decode.oneOf'; + } else { + return 'The Json.Decode.oneOf at json' + A2( + $elm$core$String$join, + '', + $elm$core$List$reverse(context)); + } + }(); + var introduction = starter + (' failed in the following ' + ($elm$core$String$fromInt( + $elm$core$List$length(errors)) + ' ways:')); + return A2( + $elm$core$String$join, + '\n\n', + A2( + $elm$core$List$cons, + introduction, + A2($elm$core$List$indexedMap, $elm$json$Json$Decode$errorOneOf, errors))); + } + } + default: + var msg = error.a; + var json = error.b; + var introduction = function () { + if (!context.b) { + return 'Problem with the given value:\n\n'; + } else { + return 'Problem with the value at json' + (A2( + $elm$core$String$join, + '', + $elm$core$List$reverse(context)) + ':\n\n '); + } + }(); + return introduction + ($elm$json$Json$Decode$indent( + A2($elm$json$Json$Encode$encode, 4, json)) + ('\n\n' + msg)); + } } }); -var $elm$core$List$filterMap = F2( - function (f, xs) { - return A3( - $elm$core$List$foldr, - $elm$core$List$maybeCons(f), - _List_Nil, - xs); - }); -var $elm$core$String$contains = _String_contains; -var $elm$browser$Debugger$Metadata$hasProblem = F2( - function (tipe, _v0) { - var problem = _v0.a; - var token = _v0.b; - return A2($elm$core$String$contains, token, tipe) ? $elm$core$Maybe$Just(problem) : $elm$core$Maybe$Nothing; - }); -var $elm$browser$Debugger$Metadata$Decoder = {$: 'Decoder'}; -var $elm$browser$Debugger$Metadata$Function = {$: 'Function'}; -var $elm$browser$Debugger$Metadata$Process = {$: 'Process'}; -var $elm$browser$Debugger$Metadata$Program = {$: 'Program'}; -var $elm$browser$Debugger$Metadata$Request = {$: 'Request'}; -var $elm$browser$Debugger$Metadata$Socket = {$: 'Socket'}; -var $elm$browser$Debugger$Metadata$Task = {$: 'Task'}; -var $elm$browser$Debugger$Metadata$VirtualDom = {$: 'VirtualDom'}; -var $elm$browser$Debugger$Metadata$problemTable = _List_fromArray( - [ - _Utils_Tuple2($elm$browser$Debugger$Metadata$Function, '->'), - _Utils_Tuple2($elm$browser$Debugger$Metadata$Decoder, 'Json.Decode.Decoder'), - _Utils_Tuple2($elm$browser$Debugger$Metadata$Task, 'Task.Task'), - _Utils_Tuple2($elm$browser$Debugger$Metadata$Process, 'Process.Id'), - _Utils_Tuple2($elm$browser$Debugger$Metadata$Socket, 'WebSocket.LowLevel.WebSocket'), - _Utils_Tuple2($elm$browser$Debugger$Metadata$Request, 'Http.Request'), - _Utils_Tuple2($elm$browser$Debugger$Metadata$Program, 'Platform.Program'), - _Utils_Tuple2($elm$browser$Debugger$Metadata$VirtualDom, 'VirtualDom.Node'), - _Utils_Tuple2($elm$browser$Debugger$Metadata$VirtualDom, 'VirtualDom.Attribute') - ]); -var $elm$browser$Debugger$Metadata$findProblems = function (tipe) { - return A2( - $elm$core$List$filterMap, - $elm$browser$Debugger$Metadata$hasProblem(tipe), - $elm$browser$Debugger$Metadata$problemTable); -}; -var $elm$browser$Debugger$Metadata$collectBadAliases = F3( - function (name, _v0, list) { - var tipe = _v0.tipe; - var _v1 = $elm$browser$Debugger$Metadata$findProblems(tipe); - if (!_v1.b) { - return list; - } else { - var problems = _v1; - return A2( - $elm$core$List$cons, - A2($elm$browser$Debugger$Metadata$ProblemType, name, problems), - list); - } +var $elm$core$Array$branchFactor = 32; +var $elm$core$Array$Array_elm_builtin = F4( + function (a, b, c, d) { + return {$: 0, a: a, b: b, c: c, d: d}; }); -var $elm$core$List$append = F2( - function (xs, ys) { - if (!ys.b) { - return xs; - } else { - return A3($elm$core$List$foldr, $elm$core$List$cons, ys, xs); - } +var $elm$core$Elm$JsArray$empty = _JsArray_empty; +var $elm$core$Basics$ceiling = _Basics_ceiling; +var $elm$core$Basics$fdiv = _Basics_fdiv; +var $elm$core$Basics$logBase = F2( + function (base, number) { + return _Basics_log(number) / _Basics_log(base); }); -var $elm$core$List$concat = function (lists) { - return A3($elm$core$List$foldr, $elm$core$List$append, _List_Nil, lists); +var $elm$core$Basics$toFloat = _Basics_toFloat; +var $elm$core$Array$shiftStep = $elm$core$Basics$ceiling( + A2($elm$core$Basics$logBase, 2, $elm$core$Array$branchFactor)); +var $elm$core$Array$empty = A4($elm$core$Array$Array_elm_builtin, 0, $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, $elm$core$Elm$JsArray$empty); +var $elm$core$Elm$JsArray$initialize = _JsArray_initialize; +var $elm$core$Array$Leaf = function (a) { + return {$: 1, a: a}; }; -var $elm$core$List$concatMap = F2( - function (f, list) { - return $elm$core$List$concat( - A2($elm$core$List$map, f, list)); +var $elm$core$Basics$apL = F2( + function (f, x) { + return f(x); }); -var $elm$core$Dict$values = function (dict) { - return A3( - $elm$core$Dict$foldr, - F3( - function (key, value, valueList) { - return A2($elm$core$List$cons, value, valueList); - }), - _List_Nil, - dict); -}; -var $elm$browser$Debugger$Metadata$collectBadUnions = F3( - function (name, _v0, list) { - var tags = _v0.tags; - var _v1 = A2( - $elm$core$List$concatMap, - $elm$browser$Debugger$Metadata$findProblems, - $elm$core$List$concat( - $elm$core$Dict$values(tags))); - if (!_v1.b) { - return list; - } else { - var problems = _v1; - return A2( - $elm$core$List$cons, - A2($elm$browser$Debugger$Metadata$ProblemType, name, problems), - list); - } +var $elm$core$Basics$apR = F2( + function (x, f) { + return f(x); }); -var $elm$core$Dict$foldl = F3( - function (func, acc, dict) { - foldl: +var $elm$core$Basics$eq = _Utils_equal; +var $elm$core$Basics$floor = _Basics_floor; +var $elm$core$Elm$JsArray$length = _JsArray_length; +var $elm$core$Basics$gt = _Utils_gt; +var $elm$core$Basics$max = F2( + function (x, y) { + return (_Utils_cmp(x, y) > 0) ? x : y; + }); +var $elm$core$Basics$mul = _Basics_mul; +var $elm$core$Array$SubTree = function (a) { + return {$: 0, a: a}; +}; +var $elm$core$Elm$JsArray$initializeFromList = _JsArray_initializeFromList; +var $elm$core$Array$compressNodes = F2( + function (nodes, acc) { + compressNodes: while (true) { - if (dict.$ === 'RBEmpty_elm_builtin') { - return acc; + var _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodes); + var node = _v0.a; + var remainingNodes = _v0.b; + var newAcc = A2( + $elm$core$List$cons, + $elm$core$Array$SubTree(node), + acc); + if (!remainingNodes.b) { + return $elm$core$List$reverse(newAcc); } else { - var key = dict.b; - var value = dict.c; - var left = dict.d; - var right = dict.e; - var $temp$func = func, - $temp$acc = A3( - func, - key, - value, - A3($elm$core$Dict$foldl, func, acc, left)), - $temp$dict = right; - func = $temp$func; + var $temp$nodes = remainingNodes, + $temp$acc = newAcc; + nodes = $temp$nodes; acc = $temp$acc; - dict = $temp$dict; - continue foldl; + continue compressNodes; } } }); -var $elm$browser$Debugger$Metadata$isPortable = function (_v0) { - var types = _v0.types; - var badAliases = A3($elm$core$Dict$foldl, $elm$browser$Debugger$Metadata$collectBadAliases, _List_Nil, types.aliases); - var _v1 = A3($elm$core$Dict$foldl, $elm$browser$Debugger$Metadata$collectBadUnions, badAliases, types.unions); - if (!_v1.b) { - return $elm$core$Maybe$Nothing; - } else { - var problems = _v1; - return $elm$core$Maybe$Just( - A2($elm$browser$Debugger$Metadata$Error, types.message, problems)); - } -}; -var $elm$browser$Debugger$Metadata$decode = function (value) { - var _v0 = A2($elm$json$Json$Decode$decodeValue, $elm$browser$Debugger$Metadata$decoder, value); - if (_v0.$ === 'Err') { - return $elm$core$Result$Err( - A2($elm$browser$Debugger$Metadata$Error, 'The compiler is generating bad metadata. This is a compiler bug!', _List_Nil)); - } else { - var metadata = _v0.a; - var _v1 = $elm$browser$Debugger$Metadata$isPortable(metadata); - if (_v1.$ === 'Nothing') { - return $elm$core$Result$Ok(metadata); - } else { - var error = _v1.a; - return $elm$core$Result$Err(error); - } - } +var $elm$core$Tuple$first = function (_v0) { + var x = _v0.a; + return x; }; -var $elm$browser$Debugger$History$History = F3( - function (snapshots, recent, numMessages) { - return {numMessages: numMessages, recent: recent, snapshots: snapshots}; - }); -var $elm$browser$Debugger$History$RecentHistory = F3( - function (model, messages, numMessages) { - return {messages: messages, model: model, numMessages: numMessages}; - }); -var $elm$browser$Debugger$History$empty = function (model) { - return A3( - $elm$browser$Debugger$History$History, - $elm$core$Array$empty, - A3($elm$browser$Debugger$History$RecentHistory, model, _List_Nil, 0), - 0); -}; -var $elm$core$Dict$map = F2( - function (func, dict) { - if (dict.$ === 'RBEmpty_elm_builtin') { - return $elm$core$Dict$RBEmpty_elm_builtin; - } else { - var color = dict.a; - var key = dict.b; - var value = dict.c; - var left = dict.d; - var right = dict.e; - return A5( - $elm$core$Dict$RBNode_elm_builtin, - color, - key, - A2(func, key, value), - A2($elm$core$Dict$map, func, left), - A2($elm$core$Dict$map, func, right)); - } - }); -var $elm$core$Dict$sizeHelp = F2( - function (n, dict) { - sizeHelp: +var $elm$core$Array$treeFromBuilder = F2( + function (nodeList, nodeListSize) { + treeFromBuilder: while (true) { - if (dict.$ === 'RBEmpty_elm_builtin') { - return n; + var newNodeSize = $elm$core$Basics$ceiling(nodeListSize / $elm$core$Array$branchFactor); + if (newNodeSize === 1) { + return A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodeList).a; } else { - var left = dict.d; - var right = dict.e; - var $temp$n = A2($elm$core$Dict$sizeHelp, n + 1, right), - $temp$dict = left; - n = $temp$n; - dict = $temp$dict; - continue sizeHelp; + var $temp$nodeList = A2($elm$core$Array$compressNodes, nodeList, _List_Nil), + $temp$nodeListSize = newNodeSize; + nodeList = $temp$nodeList; + nodeListSize = $temp$nodeListSize; + continue treeFromBuilder; } } }); -var $elm$core$Dict$size = function (dict) { - return A2($elm$core$Dict$sizeHelp, 0, dict); -}; -var $elm$browser$Debugger$Expando$initHelp = F2( - function (isOuter, expando) { - switch (expando.$) { - case 'S': - return expando; - case 'Primitive': - return expando; - case 'Sequence': - var seqType = expando.a; - var isClosed = expando.b; - var items = expando.c; - return isOuter ? A3( - $elm$browser$Debugger$Expando$Sequence, - seqType, - false, - A2( - $elm$core$List$map, - $elm$browser$Debugger$Expando$initHelp(false), - items)) : (($elm$core$List$length(items) <= 8) ? A3($elm$browser$Debugger$Expando$Sequence, seqType, false, items) : expando); - case 'Dictionary': - var isClosed = expando.a; - var keyValuePairs = expando.b; - return isOuter ? A2( - $elm$browser$Debugger$Expando$Dictionary, - false, - A2( - $elm$core$List$map, - function (_v1) { - var k = _v1.a; - var v = _v1.b; - return _Utils_Tuple2( - k, - A2($elm$browser$Debugger$Expando$initHelp, false, v)); - }, - keyValuePairs)) : (($elm$core$List$length(keyValuePairs) <= 8) ? A2($elm$browser$Debugger$Expando$Dictionary, false, keyValuePairs) : expando); - case 'Record': - var isClosed = expando.a; - var entries = expando.b; - return isOuter ? A2( - $elm$browser$Debugger$Expando$Record, - false, - A2( - $elm$core$Dict$map, - F2( - function (_v2, v) { - return A2($elm$browser$Debugger$Expando$initHelp, false, v); - }), - entries)) : (($elm$core$Dict$size(entries) <= 4) ? A2($elm$browser$Debugger$Expando$Record, false, entries) : expando); - default: - var maybeName = expando.a; - var isClosed = expando.b; - var args = expando.c; - return isOuter ? A3( - $elm$browser$Debugger$Expando$Constructor, - maybeName, - false, - A2( - $elm$core$List$map, - $elm$browser$Debugger$Expando$initHelp(false), - args)) : (($elm$core$List$length(args) <= 4) ? A3($elm$browser$Debugger$Expando$Constructor, maybeName, false, args) : expando); - } - }); -var $elm$browser$Debugger$Expando$init = function (value) { - return A2( - $elm$browser$Debugger$Expando$initHelp, - true, - _Debugger_init(value)); -}; -var $elm$core$Platform$Cmd$map = _Platform_map; -var $elm$browser$Debugger$Overlay$None = {$: 'None'}; -var $elm$browser$Debugger$Overlay$none = $elm$browser$Debugger$Overlay$None; -var $elm$browser$Debugger$Main$wrapInit = F4( - function (metadata, popout, init, flags) { - var _v0 = init(flags); - var userModel = _v0.a; - var userCommands = _v0.b; - return _Utils_Tuple2( - { - expandoModel: $elm$browser$Debugger$Expando$init(userModel), - expandoMsg: $elm$browser$Debugger$Expando$init(_Utils_Tuple0), - history: $elm$browser$Debugger$History$empty(userModel), - layout: A3($elm$browser$Debugger$Main$Horizontal, $elm$browser$Debugger$Main$Static, 0.3, 0.5), - metadata: $elm$browser$Debugger$Metadata$decode(metadata), - overlay: $elm$browser$Debugger$Overlay$none, - popout: popout, - state: $elm$browser$Debugger$Main$Running(userModel) - }, - A2($elm$core$Platform$Cmd$map, $elm$browser$Debugger$Main$UserMsg, userCommands)); - }); -var $elm$browser$Debugger$Main$getLatestModel = function (state) { - if (state.$ === 'Running') { - var model = state.a; - return model; - } else { - var model = state.c; - return model; - } -}; -var $elm$core$Platform$Sub$map = _Platform_map; -var $elm$browser$Debugger$Main$wrapSubs = F2( - function (subscriptions, model) { - return A2( - $elm$core$Platform$Sub$map, - $elm$browser$Debugger$Main$UserMsg, - subscriptions( - $elm$browser$Debugger$Main$getLatestModel(model.state))); - }); -var $elm$browser$Debugger$Main$Moving = {$: 'Moving'}; -var $elm$browser$Debugger$Main$Paused = F5( - function (a, b, c, d, e) { - return {$: 'Paused', a: a, b: b, c: c, d: d, e: e}; - }); -var $elm$browser$Debugger$History$Snapshot = F2( - function (model, messages) { - return {messages: messages, model: model}; - }); -var $elm$browser$Debugger$History$addRecent = F3( - function (msg, newModel, _v0) { - var model = _v0.model; - var messages = _v0.messages; - var numMessages = _v0.numMessages; - return _Utils_eq(numMessages, $elm$browser$Debugger$History$maxSnapshotSize) ? _Utils_Tuple2( - $elm$core$Maybe$Just( - A2( - $elm$browser$Debugger$History$Snapshot, - model, - $elm$core$Array$fromList(messages))), - A3( - $elm$browser$Debugger$History$RecentHistory, - newModel, - _List_fromArray( - [msg]), - 1)) : _Utils_Tuple2( - $elm$core$Maybe$Nothing, - A3( - $elm$browser$Debugger$History$RecentHistory, - model, - A2($elm$core$List$cons, msg, messages), - numMessages + 1)); - }); -var $elm$core$Elm$JsArray$push = _JsArray_push; -var $elm$core$Elm$JsArray$singleton = _JsArray_singleton; -var $elm$core$Array$insertTailInTree = F4( - function (shift, index, tail, tree) { - var pos = $elm$core$Array$bitMask & (index >>> shift); - if (_Utils_cmp( - pos, - $elm$core$Elm$JsArray$length(tree)) > -1) { - if (shift === 5) { - return A2( - $elm$core$Elm$JsArray$push, - $elm$core$Array$Leaf(tail), - tree); - } else { - var newSub = $elm$core$Array$SubTree( - A4($elm$core$Array$insertTailInTree, shift - $elm$core$Array$shiftStep, index, tail, $elm$core$Elm$JsArray$empty)); - return A2($elm$core$Elm$JsArray$push, newSub, tree); - } +var $elm$core$Array$builderToArray = F2( + function (reverseNodeList, builder) { + if (!builder.g) { + return A4( + $elm$core$Array$Array_elm_builtin, + $elm$core$Elm$JsArray$length(builder.h), + $elm$core$Array$shiftStep, + $elm$core$Elm$JsArray$empty, + builder.h); } else { - var value = A2($elm$core$Elm$JsArray$unsafeGet, pos, tree); - if (value.$ === 'SubTree') { - var subTree = value.a; - var newSub = $elm$core$Array$SubTree( - A4($elm$core$Array$insertTailInTree, shift - $elm$core$Array$shiftStep, index, tail, subTree)); - return A3($elm$core$Elm$JsArray$unsafeSet, pos, newSub, tree); - } else { - var newSub = $elm$core$Array$SubTree( - A4( - $elm$core$Array$insertTailInTree, - shift - $elm$core$Array$shiftStep, - index, - tail, - $elm$core$Elm$JsArray$singleton(value))); - return A3($elm$core$Elm$JsArray$unsafeSet, pos, newSub, tree); - } + var treeLen = builder.g * $elm$core$Array$branchFactor; + var depth = $elm$core$Basics$floor( + A2($elm$core$Basics$logBase, $elm$core$Array$branchFactor, treeLen - 1)); + var correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.i) : builder.i; + var tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.g); + return A4( + $elm$core$Array$Array_elm_builtin, + $elm$core$Elm$JsArray$length(builder.h) + treeLen, + A2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep), + tree, + builder.h); } }); -var $elm$core$Array$unsafeReplaceTail = F2( - function (newTail, _v0) { - var len = _v0.a; - var startShift = _v0.b; - var tree = _v0.c; - var tail = _v0.d; - var originalTailLen = $elm$core$Elm$JsArray$length(tail); - var newTailLen = $elm$core$Elm$JsArray$length(newTail); - var newArrayLen = len + (newTailLen - originalTailLen); - if (_Utils_eq(newTailLen, $elm$core$Array$branchFactor)) { - var overflow = _Utils_cmp(newArrayLen >>> $elm$core$Array$shiftStep, 1 << startShift) > 0; - if (overflow) { - var newShift = startShift + $elm$core$Array$shiftStep; - var newTree = A4( - $elm$core$Array$insertTailInTree, - newShift, - len, - newTail, - $elm$core$Elm$JsArray$singleton( - $elm$core$Array$SubTree(tree))); - return A4($elm$core$Array$Array_elm_builtin, newArrayLen, newShift, newTree, $elm$core$Elm$JsArray$empty); +var $elm$core$Basics$idiv = _Basics_idiv; +var $elm$core$Basics$lt = _Utils_lt; +var $elm$core$Array$initializeHelp = F5( + function (fn, fromIndex, len, nodeList, tail) { + initializeHelp: + while (true) { + if (fromIndex < 0) { + return A2( + $elm$core$Array$builderToArray, + false, + {i: nodeList, g: (len / $elm$core$Array$branchFactor) | 0, h: tail}); } else { - return A4( - $elm$core$Array$Array_elm_builtin, - newArrayLen, - startShift, - A4($elm$core$Array$insertTailInTree, startShift, len, newTail, tree), - $elm$core$Elm$JsArray$empty); + var leaf = $elm$core$Array$Leaf( + A3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn)); + var $temp$fn = fn, + $temp$fromIndex = fromIndex - $elm$core$Array$branchFactor, + $temp$len = len, + $temp$nodeList = A2($elm$core$List$cons, leaf, nodeList), + $temp$tail = tail; + fn = $temp$fn; + fromIndex = $temp$fromIndex; + len = $temp$len; + nodeList = $temp$nodeList; + tail = $temp$tail; + continue initializeHelp; } - } else { - return A4($elm$core$Array$Array_elm_builtin, newArrayLen, startShift, tree, newTail); } }); -var $elm$core$Array$push = F2( - function (a, array) { - var tail = array.d; - return A2( - $elm$core$Array$unsafeReplaceTail, - A2($elm$core$Elm$JsArray$push, a, tail), - array); - }); -var $elm$browser$Debugger$History$add = F3( - function (msg, model, _v0) { - var snapshots = _v0.snapshots; - var recent = _v0.recent; - var numMessages = _v0.numMessages; - var _v1 = A3($elm$browser$Debugger$History$addRecent, msg, model, recent); - if (_v1.a.$ === 'Just') { - var snapshot = _v1.a.a; - var newRecent = _v1.b; - return A3( - $elm$browser$Debugger$History$History, - A2($elm$core$Array$push, snapshot, snapshots), - newRecent, - numMessages + 1); +var $elm$core$Basics$remainderBy = _Basics_remainderBy; +var $elm$core$Array$initialize = F2( + function (len, fn) { + if (len <= 0) { + return $elm$core$Array$empty; } else { - var _v2 = _v1.a; - var newRecent = _v1.b; - return A3($elm$browser$Debugger$History$History, snapshots, newRecent, numMessages + 1); + var tailLen = len % $elm$core$Array$branchFactor; + var tail = A3($elm$core$Elm$JsArray$initialize, tailLen, len - tailLen, fn); + var initialFromIndex = (len - tailLen) - $elm$core$Array$branchFactor; + return A5($elm$core$Array$initializeHelp, fn, initialFromIndex, len, _List_Nil, tail); } }); -var $elm$core$Basics$always = F2( - function (a, _v0) { - return a; - }); -var $elm$browser$Debugger$Overlay$BadImport = function (a) { - return {$: 'BadImport', a: a}; +var $elm$core$Basics$True = 0; +var $elm$core$Result$isOk = function (result) { + if (!result.$) { + return true; + } else { + return false; + } }; -var $elm$browser$Debugger$Overlay$RiskyImport = F2( - function (a, b) { - return {$: 'RiskyImport', a: a, b: b}; - }); -var $elm$browser$Debugger$Report$VersionChanged = F2( - function (a, b) { - return {$: 'VersionChanged', a: a, b: b}; - }); -var $elm$browser$Debugger$Report$MessageChanged = F2( - function (a, b) { - return {$: 'MessageChanged', a: a, b: b}; - }); -var $elm$browser$Debugger$Report$SomethingChanged = function (a) { - return {$: 'SomethingChanged', a: a}; +var $elm$json$Json$Decode$map = _Json_map1; +var $elm$json$Json$Decode$map2 = _Json_map2; +var $elm$json$Json$Decode$succeed = _Json_succeed; +var $elm$virtual_dom$VirtualDom$toHandlerInt = function (handler) { + switch (handler.$) { + case 0: + return 0; + case 1: + return 1; + case 2: + return 2; + default: + return 3; + } }; -var $elm$browser$Debugger$Report$AliasChange = function (a) { - return {$: 'AliasChange', a: a}; +var $elm$browser$Browser$External = function (a) { + return {$: 1, a: a}; }; -var $elm$browser$Debugger$Metadata$checkAlias = F4( - function (name, old, _new, changes) { - return (_Utils_eq(old.tipe, _new.tipe) && _Utils_eq(old.args, _new.args)) ? changes : A2( - $elm$core$List$cons, - $elm$browser$Debugger$Report$AliasChange(name), - changes); - }); -var $elm$browser$Debugger$Report$UnionChange = F2( - function (a, b) { - return {$: 'UnionChange', a: a, b: b}; +var $elm$browser$Browser$Internal = function (a) { + return {$: 0, a: a}; +}; +var $elm$core$Basics$identity = function (x) { + return x; +}; +var $elm$browser$Browser$Dom$NotFound = $elm$core$Basics$identity; +var $elm$url$Url$Http = 0; +var $elm$url$Url$Https = 1; +var $elm$url$Url$Url = F6( + function (protocol, host, port_, path, query, fragment) { + return {dw: fragment, e6: host, dX: path, dZ: port_, d2: protocol, cS: query}; }); -var $elm$browser$Debugger$Metadata$addTag = F3( - function (tag, _v0, changes) { - return _Utils_update( - changes, - { - added: A2($elm$core$List$cons, tag, changes.added) - }); +var $elm$core$String$contains = _String_contains; +var $elm$core$String$length = _String_length; +var $elm$core$String$slice = _String_slice; +var $elm$core$String$dropLeft = F2( + function (n, string) { + return (n < 1) ? string : A3( + $elm$core$String$slice, + n, + $elm$core$String$length(string), + string); }); -var $elm$browser$Debugger$Metadata$checkTag = F4( - function (tag, old, _new, changes) { - return _Utils_eq(old, _new) ? changes : _Utils_update( - changes, - { - changed: A2($elm$core$List$cons, tag, changes.changed) - }); +var $elm$core$String$indexes = _String_indexes; +var $elm$core$String$isEmpty = function (string) { + return string === ''; +}; +var $elm$core$String$left = F2( + function (n, string) { + return (n < 1) ? '' : A3($elm$core$String$slice, 0, n, string); }); -var $elm$browser$Debugger$Report$TagChanges = F4( - function (removed, changed, added, argsMatch) { - return {added: added, argsMatch: argsMatch, changed: changed, removed: removed}; - }); -var $elm$browser$Debugger$Report$emptyTagChanges = function (argsMatch) { - return A4($elm$browser$Debugger$Report$TagChanges, _List_Nil, _List_Nil, _List_Nil, argsMatch); -}; -var $elm$browser$Debugger$Report$hasTagChanges = function (tagChanges) { - return _Utils_eq( - tagChanges, - A4($elm$browser$Debugger$Report$TagChanges, _List_Nil, _List_Nil, _List_Nil, true)); -}; -var $elm$core$Dict$merge = F6( - function (leftStep, bothStep, rightStep, leftDict, rightDict, initialResult) { - var stepState = F3( - function (rKey, rValue, _v0) { - stepState: - while (true) { - var list = _v0.a; - var result = _v0.b; - if (!list.b) { - return _Utils_Tuple2( - list, - A3(rightStep, rKey, rValue, result)); +var $elm$core$String$toInt = _String_toInt; +var $elm$url$Url$chompBeforePath = F5( + function (protocol, path, params, frag, str) { + if ($elm$core$String$isEmpty(str) || A2($elm$core$String$contains, '@', str)) { + return $elm$core$Maybe$Nothing; + } else { + var _v0 = A2($elm$core$String$indexes, ':', str); + if (!_v0.b) { + return $elm$core$Maybe$Just( + A6($elm$url$Url$Url, protocol, str, $elm$core$Maybe$Nothing, path, params, frag)); + } else { + if (!_v0.b.b) { + var i = _v0.a; + var _v1 = $elm$core$String$toInt( + A2($elm$core$String$dropLeft, i + 1, str)); + if (_v1.$ === 1) { + return $elm$core$Maybe$Nothing; } else { - var _v2 = list.a; - var lKey = _v2.a; - var lValue = _v2.b; - var rest = list.b; - if (_Utils_cmp(lKey, rKey) < 0) { - var $temp$rKey = rKey, - $temp$rValue = rValue, - $temp$_v0 = _Utils_Tuple2( - rest, - A3(leftStep, lKey, lValue, result)); - rKey = $temp$rKey; - rValue = $temp$rValue; - _v0 = $temp$_v0; - continue stepState; - } else { - if (_Utils_cmp(lKey, rKey) > 0) { - return _Utils_Tuple2( - list, - A3(rightStep, rKey, rValue, result)); - } else { - return _Utils_Tuple2( - rest, - A4(bothStep, lKey, lValue, rValue, result)); - } - } + var port_ = _v1; + return $elm$core$Maybe$Just( + A6( + $elm$url$Url$Url, + protocol, + A2($elm$core$String$left, i, str), + port_, + path, + params, + frag)); } + } else { + return $elm$core$Maybe$Nothing; } - }); - var _v3 = A3( - $elm$core$Dict$foldl, - stepState, - _Utils_Tuple2( - $elm$core$Dict$toList(leftDict), - initialResult), - rightDict); - var leftovers = _v3.a; - var intermediateResult = _v3.b; - return A3( - $elm$core$List$foldl, - F2( - function (_v4, result) { - var k = _v4.a; - var v = _v4.b; - return A3(leftStep, k, v, result); - }), - intermediateResult, - leftovers); + } + } }); -var $elm$browser$Debugger$Metadata$removeTag = F3( - function (tag, _v0, changes) { - return _Utils_update( - changes, - { - removed: A2($elm$core$List$cons, tag, changes.removed) - }); +var $elm$url$Url$chompBeforeQuery = F4( + function (protocol, params, frag, str) { + if ($elm$core$String$isEmpty(str)) { + return $elm$core$Maybe$Nothing; + } else { + var _v0 = A2($elm$core$String$indexes, '/', str); + if (!_v0.b) { + return A5($elm$url$Url$chompBeforePath, protocol, '/', params, frag, str); + } else { + var i = _v0.a; + return A5( + $elm$url$Url$chompBeforePath, + protocol, + A2($elm$core$String$dropLeft, i, str), + params, + frag, + A2($elm$core$String$left, i, str)); + } + } }); -var $elm$browser$Debugger$Metadata$checkUnion = F4( - function (name, old, _new, changes) { - var tagChanges = A6( - $elm$core$Dict$merge, - $elm$browser$Debugger$Metadata$removeTag, - $elm$browser$Debugger$Metadata$checkTag, - $elm$browser$Debugger$Metadata$addTag, - old.tags, - _new.tags, - $elm$browser$Debugger$Report$emptyTagChanges( - _Utils_eq(old.args, _new.args))); - return $elm$browser$Debugger$Report$hasTagChanges(tagChanges) ? changes : A2( - $elm$core$List$cons, - A2($elm$browser$Debugger$Report$UnionChange, name, tagChanges), - changes); - }); -var $elm$browser$Debugger$Metadata$ignore = F3( - function (key, value, report) { - return report; - }); -var $elm$browser$Debugger$Metadata$checkTypes = F2( - function (old, _new) { - return (!_Utils_eq(old.message, _new.message)) ? A2($elm$browser$Debugger$Report$MessageChanged, old.message, _new.message) : $elm$browser$Debugger$Report$SomethingChanged( - A6( - $elm$core$Dict$merge, - $elm$browser$Debugger$Metadata$ignore, - $elm$browser$Debugger$Metadata$checkUnion, - $elm$browser$Debugger$Metadata$ignore, - old.unions, - _new.unions, - A6($elm$core$Dict$merge, $elm$browser$Debugger$Metadata$ignore, $elm$browser$Debugger$Metadata$checkAlias, $elm$browser$Debugger$Metadata$ignore, old.aliases, _new.aliases, _List_Nil))); - }); -var $elm$browser$Debugger$Metadata$check = F2( - function (old, _new) { - return (!_Utils_eq(old.versions.elm, _new.versions.elm)) ? A2($elm$browser$Debugger$Report$VersionChanged, old.versions.elm, _new.versions.elm) : A2($elm$browser$Debugger$Metadata$checkTypes, old.types, _new.types); - }); -var $elm$browser$Debugger$Report$CorruptHistory = {$: 'CorruptHistory'}; -var $elm$browser$Debugger$Overlay$corruptImport = $elm$browser$Debugger$Overlay$BadImport($elm$browser$Debugger$Report$CorruptHistory); -var $elm$json$Json$Decode$decodeString = _Json_runOnString; -var $elm$browser$Debugger$Report$Fine = {$: 'Fine'}; -var $elm$browser$Debugger$Report$Impossible = {$: 'Impossible'}; -var $elm$browser$Debugger$Report$Risky = {$: 'Risky'}; -var $elm$core$Basics$not = _Basics_not; -var $elm$core$List$isEmpty = function (xs) { - if (!xs.b) { - return true; - } else { - return false; - } -}; -var $elm$browser$Debugger$Report$some = function (list) { - return !$elm$core$List$isEmpty(list); -}; -var $elm$browser$Debugger$Report$evaluateChange = function (change) { - if (change.$ === 'AliasChange') { - return $elm$browser$Debugger$Report$Impossible; - } else { - var removed = change.b.removed; - var changed = change.b.changed; - var added = change.b.added; - var argsMatch = change.b.argsMatch; - return ((!argsMatch) || ($elm$browser$Debugger$Report$some(changed) || $elm$browser$Debugger$Report$some(removed))) ? $elm$browser$Debugger$Report$Impossible : ($elm$browser$Debugger$Report$some(added) ? $elm$browser$Debugger$Report$Risky : $elm$browser$Debugger$Report$Fine); - } -}; -var $elm$browser$Debugger$Report$worstCase = F2( - function (status, statusList) { - worstCase: - while (true) { - if (!statusList.b) { - return status; +var $elm$url$Url$chompBeforeFragment = F3( + function (protocol, frag, str) { + if ($elm$core$String$isEmpty(str)) { + return $elm$core$Maybe$Nothing; + } else { + var _v0 = A2($elm$core$String$indexes, '?', str); + if (!_v0.b) { + return A4($elm$url$Url$chompBeforeQuery, protocol, $elm$core$Maybe$Nothing, frag, str); } else { - switch (statusList.a.$) { - case 'Impossible': - var _v1 = statusList.a; - return $elm$browser$Debugger$Report$Impossible; - case 'Risky': - var _v2 = statusList.a; - var rest = statusList.b; - var $temp$status = $elm$browser$Debugger$Report$Risky, - $temp$statusList = rest; - status = $temp$status; - statusList = $temp$statusList; - continue worstCase; - default: - var _v3 = statusList.a; - var rest = statusList.b; - var $temp$status = status, - $temp$statusList = rest; - status = $temp$status; - statusList = $temp$statusList; - continue worstCase; - } + var i = _v0.a; + return A4( + $elm$url$Url$chompBeforeQuery, + protocol, + $elm$core$Maybe$Just( + A2($elm$core$String$dropLeft, i + 1, str)), + frag, + A2($elm$core$String$left, i, str)); } } }); -var $elm$browser$Debugger$Report$evaluate = function (report) { - switch (report.$) { - case 'CorruptHistory': - return $elm$browser$Debugger$Report$Impossible; - case 'VersionChanged': - return $elm$browser$Debugger$Report$Impossible; - case 'MessageChanged': - return $elm$browser$Debugger$Report$Impossible; - default: - var changes = report.a; - return A2( - $elm$browser$Debugger$Report$worstCase, - $elm$browser$Debugger$Report$Fine, - A2($elm$core$List$map, $elm$browser$Debugger$Report$evaluateChange, changes)); - } -}; -var $elm$json$Json$Decode$value = _Json_decodeValue; -var $elm$browser$Debugger$Overlay$uploadDecoder = A3( - $elm$json$Json$Decode$map2, - F2( - function (x, y) { - return _Utils_Tuple2(x, y); - }), - A2($elm$json$Json$Decode$field, 'metadata', $elm$browser$Debugger$Metadata$decoder), - A2($elm$json$Json$Decode$field, 'history', $elm$json$Json$Decode$value)); -var $elm$browser$Debugger$Overlay$assessImport = F2( - function (metadata, jsonString) { - var _v0 = A2($elm$json$Json$Decode$decodeString, $elm$browser$Debugger$Overlay$uploadDecoder, jsonString); - if (_v0.$ === 'Err') { - return $elm$core$Result$Err($elm$browser$Debugger$Overlay$corruptImport); +var $elm$url$Url$chompAfterProtocol = F2( + function (protocol, str) { + if ($elm$core$String$isEmpty(str)) { + return $elm$core$Maybe$Nothing; } else { - var _v1 = _v0.a; - var foreignMetadata = _v1.a; - var rawHistory = _v1.b; - var report = A2($elm$browser$Debugger$Metadata$check, foreignMetadata, metadata); - var _v2 = $elm$browser$Debugger$Report$evaluate(report); - switch (_v2.$) { - case 'Impossible': - return $elm$core$Result$Err( - $elm$browser$Debugger$Overlay$BadImport(report)); - case 'Risky': - return $elm$core$Result$Err( - A2($elm$browser$Debugger$Overlay$RiskyImport, report, rawHistory)); - default: - return $elm$core$Result$Ok(rawHistory); + var _v0 = A2($elm$core$String$indexes, '#', str); + if (!_v0.b) { + return A3($elm$url$Url$chompBeforeFragment, protocol, $elm$core$Maybe$Nothing, str); + } else { + var i = _v0.a; + return A3( + $elm$url$Url$chompBeforeFragment, + protocol, + $elm$core$Maybe$Just( + A2($elm$core$String$dropLeft, i + 1, str)), + A2($elm$core$String$left, i, str)); } } }); -var $elm$core$Platform$Cmd$batch = _Platform_batch; -var $elm$browser$Debugger$Overlay$close = F2( - function (msg, state) { - switch (state.$) { - case 'None': - return $elm$core$Maybe$Nothing; - case 'BadMetadata': - return $elm$core$Maybe$Nothing; - case 'BadImport': - return $elm$core$Maybe$Nothing; - default: - var rawHistory = state.b; - if (msg.$ === 'Cancel') { - return $elm$core$Maybe$Nothing; +var $elm$core$String$startsWith = _String_startsWith; +var $elm$url$Url$fromString = function (str) { + return A2($elm$core$String$startsWith, 'http://', str) ? A2( + $elm$url$Url$chompAfterProtocol, + 0, + A2($elm$core$String$dropLeft, 7, str)) : (A2($elm$core$String$startsWith, 'https://', str) ? A2( + $elm$url$Url$chompAfterProtocol, + 1, + A2($elm$core$String$dropLeft, 8, str)) : $elm$core$Maybe$Nothing); +}; +var $elm$core$Basics$never = function (_v0) { + never: + while (true) { + var nvr = _v0; + var $temp$_v0 = nvr; + _v0 = $temp$_v0; + continue never; + } +}; +var $elm$core$Task$Perform = $elm$core$Basics$identity; +var $elm$core$Task$succeed = _Scheduler_succeed; +var $elm$core$Task$init = $elm$core$Task$succeed(0); +var $elm$core$List$foldrHelper = F4( + function (fn, acc, ctr, ls) { + if (!ls.b) { + return acc; + } else { + var a = ls.a; + var r1 = ls.b; + if (!r1.b) { + return A2(fn, a, acc); + } else { + var b = r1.a; + var r2 = r1.b; + if (!r2.b) { + return A2( + fn, + a, + A2(fn, b, acc)); } else { - return $elm$core$Maybe$Just(rawHistory); + var c = r2.a; + var r3 = r2.b; + if (!r3.b) { + return A2( + fn, + a, + A2( + fn, + b, + A2(fn, c, acc))); + } else { + var d = r3.a; + var r4 = r3.b; + var res = (ctr > 500) ? A3( + $elm$core$List$foldl, + fn, + acc, + $elm$core$List$reverse(r4)) : A4($elm$core$List$foldrHelper, fn, acc, ctr + 1, r4); + return A2( + fn, + a, + A2( + fn, + b, + A2( + fn, + c, + A2(fn, d, res)))); + } } + } } }); -var $elm$browser$Debugger$History$elmToJs = A2($elm$core$Basics$composeR, _Json_wrap, _Debugger_unsafeCoerce); -var $elm$browser$Debugger$History$encodeHelp = F2( - function (snapshot, allMessages) { - return A3($elm$core$Array$foldl, $elm$core$List$cons, allMessages, snapshot.messages); - }); -var $elm$json$Json$Encode$list = F2( - function (func, entries) { - return _Json_wrap( - A3( - $elm$core$List$foldl, - _Json_addEntry(func), - _Json_emptyArray(_Utils_Tuple0), - entries)); - }); -var $elm$browser$Debugger$History$encode = function (_v0) { - var snapshots = _v0.snapshots; - var recent = _v0.recent; - return A2( - $elm$json$Json$Encode$list, - $elm$browser$Debugger$History$elmToJs, - A3( - $elm$core$Array$foldr, - $elm$browser$Debugger$History$encodeHelp, - $elm$core$List$reverse(recent.messages), - snapshots)); -}; -var $elm$json$Json$Encode$object = function (pairs) { - return _Json_wrap( - A3( - $elm$core$List$foldl, +var $elm$core$List$foldr = F3( + function (fn, acc, ls) { + return A4($elm$core$List$foldrHelper, fn, acc, 0, ls); + }); +var $elm$core$List$map = F2( + function (f, xs) { + return A3( + $elm$core$List$foldr, F2( - function (_v0, obj) { - var k = _v0.a; - var v = _v0.b; - return A3(_Json_addField, k, v, obj); + function (x, acc) { + return A2( + $elm$core$List$cons, + f(x), + acc); }), - _Json_emptyObject(_Utils_Tuple0), - pairs)); -}; -var $elm$browser$Debugger$Metadata$encodeAlias = function (_v0) { - var args = _v0.args; - var tipe = _v0.tipe; - return $elm$json$Json$Encode$object( - _List_fromArray( - [ - _Utils_Tuple2( - 'args', - A2($elm$json$Json$Encode$list, $elm$json$Json$Encode$string, args)), - _Utils_Tuple2( - 'type', - $elm$json$Json$Encode$string(tipe)) - ])); -}; -var $elm$browser$Debugger$Metadata$encodeDict = F2( - function (f, dict) { - return $elm$json$Json$Encode$object( - $elm$core$Dict$toList( - A2( - $elm$core$Dict$map, - F2( - function (key, value) { - return f(value); - }), - dict))); + _List_Nil, + xs); }); -var $elm$browser$Debugger$Metadata$encodeUnion = function (_v0) { - var args = _v0.args; - var tags = _v0.tags; - return $elm$json$Json$Encode$object( - _List_fromArray( - [ - _Utils_Tuple2( - 'args', - A2($elm$json$Json$Encode$list, $elm$json$Json$Encode$string, args)), - _Utils_Tuple2( - 'tags', - A2( - $elm$browser$Debugger$Metadata$encodeDict, - $elm$json$Json$Encode$list($elm$json$Json$Encode$string), - tags)) - ])); -}; -var $elm$browser$Debugger$Metadata$encodeTypes = function (_v0) { - var message = _v0.message; - var unions = _v0.unions; - var aliases = _v0.aliases; - return $elm$json$Json$Encode$object( - _List_fromArray( - [ - _Utils_Tuple2( - 'message', - $elm$json$Json$Encode$string(message)), - _Utils_Tuple2( - 'aliases', - A2($elm$browser$Debugger$Metadata$encodeDict, $elm$browser$Debugger$Metadata$encodeAlias, aliases)), - _Utils_Tuple2( - 'unions', - A2($elm$browser$Debugger$Metadata$encodeDict, $elm$browser$Debugger$Metadata$encodeUnion, unions)) - ])); -}; -var $elm$browser$Debugger$Metadata$encodeVersions = function (_v0) { - var elm = _v0.elm; - return $elm$json$Json$Encode$object( - _List_fromArray( - [ - _Utils_Tuple2( - 'elm', - $elm$json$Json$Encode$string(elm)) - ])); -}; -var $elm$browser$Debugger$Metadata$encode = function (_v0) { - var versions = _v0.versions; - var types = _v0.types; - return $elm$json$Json$Encode$object( - _List_fromArray( - [ - _Utils_Tuple2( - 'versions', - $elm$browser$Debugger$Metadata$encodeVersions(versions)), - _Utils_Tuple2( - 'types', - $elm$browser$Debugger$Metadata$encodeTypes(types)) - ])); -}; -var $elm$core$Basics$identity = function (x) { - return x; -}; -var $elm$core$Task$Perform = function (a) { - return {$: 'Perform', a: a}; -}; -var $elm$core$Task$succeed = _Scheduler_succeed; -var $elm$core$Task$init = $elm$core$Task$succeed(_Utils_Tuple0); var $elm$core$Task$andThen = _Scheduler_andThen; var $elm$core$Task$map = F2( function (func, taskA) { @@ -9363,7 +5299,7 @@ var $elm$core$Task$sequence = function (tasks) { var $elm$core$Platform$sendToApp = _Platform_sendToApp; var $elm$core$Task$spawnCmd = F2( function (router, _v0) { - var task = _v0.a; + var task = _v0; return _Scheduler_spawn( A2( $elm$core$Task$andThen, @@ -9375,7 +5311,7 @@ var $elm$core$Task$onEffects = F3( return A2( $elm$core$Task$map, function (_v0) { - return _Utils_Tuple0; + return 0; }, $elm$core$Task$sequence( A2( @@ -9384,1433 +5320,619 @@ var $elm$core$Task$onEffects = F3( commands))); }); var $elm$core$Task$onSelfMsg = F3( - function (_v0, _v1, _v2) { - return $elm$core$Task$succeed(_Utils_Tuple0); - }); -var $elm$core$Task$cmdMap = F2( - function (tagger, _v0) { - var task = _v0.a; - return $elm$core$Task$Perform( - A2($elm$core$Task$map, tagger, task)); - }); -_Platform_effectManagers['Task'] = _Platform_createManager($elm$core$Task$init, $elm$core$Task$onEffects, $elm$core$Task$onSelfMsg, $elm$core$Task$cmdMap); -var $elm$core$Task$command = _Platform_leaf('Task'); -var $elm$core$Task$perform = F2( - function (toMessage, task) { - return $elm$core$Task$command( - $elm$core$Task$Perform( - A2($elm$core$Task$map, toMessage, task))); - }); -var $elm$browser$Debugger$Main$download = F2( - function (metadata, history) { - var historyLength = $elm$browser$Debugger$History$size(history); - return A2( - $elm$core$Task$perform, - function (_v0) { - return $elm$browser$Debugger$Main$NoOp; - }, - A2( - _Debugger_download, - historyLength, - _Json_unwrap( - $elm$json$Json$Encode$object( - _List_fromArray( - [ - _Utils_Tuple2( - 'metadata', - $elm$browser$Debugger$Metadata$encode(metadata)), - _Utils_Tuple2( - 'history', - $elm$browser$Debugger$History$encode(history)) - ]))))); - }); -var $elm$browser$Debugger$Main$Vertical = F3( - function (a, b, c) { - return {$: 'Vertical', a: a, b: b, c: c}; - }); -var $elm$browser$Debugger$Main$drag = F2( - function (info, layout) { - if (layout.$ === 'Horizontal') { - var status = layout.a; - var y = layout.c; - return A3($elm$browser$Debugger$Main$Horizontal, status, info.x / info.width, y); - } else { - var status = layout.a; - var x = layout.b; - return A3($elm$browser$Debugger$Main$Vertical, status, x, info.y / info.height); - } - }); -var $elm$browser$Debugger$History$Stepping = F2( - function (a, b) { - return {$: 'Stepping', a: a, b: b}; - }); -var $elm$browser$Debugger$History$Done = F2( - function (a, b) { - return {$: 'Done', a: a, b: b}; - }); -var $elm$browser$Debugger$History$getHelp = F3( - function (update, msg, getResult) { - if (getResult.$ === 'Done') { - return getResult; - } else { - var n = getResult.a; - var model = getResult.b; - return (!n) ? A2( - $elm$browser$Debugger$History$Done, - msg, - A2(update, msg, model).a) : A2( - $elm$browser$Debugger$History$Stepping, - n - 1, - A2(update, msg, model).a); - } - }); -var $elm$browser$Debugger$History$undone = function (getResult) { - undone: - while (true) { - if (getResult.$ === 'Done') { - var msg = getResult.a; - var model = getResult.b; - return _Utils_Tuple2(model, msg); - } else { - var $temp$getResult = getResult; - getResult = $temp$getResult; - continue undone; - } - } -}; -var $elm$browser$Debugger$History$get = F3( - function (update, index, history) { - get: - while (true) { - var recent = history.recent; - var snapshotMax = history.numMessages - recent.numMessages; - if (_Utils_cmp(index, snapshotMax) > -1) { - return $elm$browser$Debugger$History$undone( - A3( - $elm$core$List$foldr, - $elm$browser$Debugger$History$getHelp(update), - A2($elm$browser$Debugger$History$Stepping, index - snapshotMax, recent.model), - recent.messages)); - } else { - var _v0 = A2($elm$core$Array$get, (index / $elm$browser$Debugger$History$maxSnapshotSize) | 0, history.snapshots); - if (_v0.$ === 'Nothing') { - var $temp$update = update, - $temp$index = index, - $temp$history = history; - update = $temp$update; - index = $temp$index; - history = $temp$history; - continue get; - } else { - var model = _v0.a.model; - var messages = _v0.a.messages; - return $elm$browser$Debugger$History$undone( - A3( - $elm$core$Array$foldr, - $elm$browser$Debugger$History$getHelp(update), - A2($elm$browser$Debugger$History$Stepping, index % $elm$browser$Debugger$History$maxSnapshotSize, model), - messages)); - } - } - } - }); -var $elm$browser$Debugger$History$getRecentMsg = function (history) { - getRecentMsg: - while (true) { - var _v0 = history.recent.messages; - if (!_v0.b) { - var $temp$history = history; - history = $temp$history; - continue getRecentMsg; - } else { - var first = _v0.a; - return first; - } - } -}; -var $elm$core$Dict$get = F2( - function (targetKey, dict) { - get: - while (true) { - if (dict.$ === 'RBEmpty_elm_builtin') { - return $elm$core$Maybe$Nothing; - } else { - var key = dict.b; - var value = dict.c; - var left = dict.d; - var right = dict.e; - var _v1 = A2($elm$core$Basics$compare, targetKey, key); - switch (_v1.$) { - case 'LT': - var $temp$targetKey = targetKey, - $temp$dict = left; - targetKey = $temp$targetKey; - dict = $temp$dict; - continue get; - case 'EQ': - return $elm$core$Maybe$Just(value); - default: - var $temp$targetKey = targetKey, - $temp$dict = right; - targetKey = $temp$targetKey; - dict = $temp$dict; - continue get; - } - } - } - }); -var $elm$browser$Debugger$Expando$mergeDictHelp = F3( - function (oldDict, key, value) { - var _v12 = A2($elm$core$Dict$get, key, oldDict); - if (_v12.$ === 'Nothing') { - return value; - } else { - var oldValue = _v12.a; - return A2($elm$browser$Debugger$Expando$mergeHelp, oldValue, value); - } - }); -var $elm$browser$Debugger$Expando$mergeHelp = F2( - function (old, _new) { - var _v3 = _Utils_Tuple2(old, _new); - _v3$6: - while (true) { - switch (_v3.b.$) { - case 'S': - return _new; - case 'Primitive': - return _new; - case 'Sequence': - if (_v3.a.$ === 'Sequence') { - var _v4 = _v3.a; - var isClosed = _v4.b; - var oldValues = _v4.c; - var _v5 = _v3.b; - var seqType = _v5.a; - var newValues = _v5.c; - return A3( - $elm$browser$Debugger$Expando$Sequence, - seqType, - isClosed, - A2($elm$browser$Debugger$Expando$mergeListHelp, oldValues, newValues)); - } else { - break _v3$6; - } - case 'Dictionary': - if (_v3.a.$ === 'Dictionary') { - var _v6 = _v3.a; - var isClosed = _v6.a; - var _v7 = _v3.b; - var keyValuePairs = _v7.b; - return A2($elm$browser$Debugger$Expando$Dictionary, isClosed, keyValuePairs); - } else { - break _v3$6; - } - case 'Record': - if (_v3.a.$ === 'Record') { - var _v8 = _v3.a; - var isClosed = _v8.a; - var oldDict = _v8.b; - var _v9 = _v3.b; - var newDict = _v9.b; - return A2( - $elm$browser$Debugger$Expando$Record, - isClosed, - A2( - $elm$core$Dict$map, - $elm$browser$Debugger$Expando$mergeDictHelp(oldDict), - newDict)); - } else { - break _v3$6; - } - default: - if (_v3.a.$ === 'Constructor') { - var _v10 = _v3.a; - var isClosed = _v10.b; - var oldValues = _v10.c; - var _v11 = _v3.b; - var maybeName = _v11.a; - var newValues = _v11.c; - return A3( - $elm$browser$Debugger$Expando$Constructor, - maybeName, - isClosed, - A2($elm$browser$Debugger$Expando$mergeListHelp, oldValues, newValues)); - } else { - break _v3$6; - } - } - } - return _new; - }); -var $elm$browser$Debugger$Expando$mergeListHelp = F2( - function (olds, news) { - var _v0 = _Utils_Tuple2(olds, news); - if (!_v0.a.b) { - return news; - } else { - if (!_v0.b.b) { - return news; - } else { - var _v1 = _v0.a; - var x = _v1.a; - var xs = _v1.b; - var _v2 = _v0.b; - var y = _v2.a; - var ys = _v2.b; - return A2( - $elm$core$List$cons, - A2($elm$browser$Debugger$Expando$mergeHelp, x, y), - A2($elm$browser$Debugger$Expando$mergeListHelp, xs, ys)); - } - } - }); -var $elm$browser$Debugger$Expando$merge = F2( - function (value, expando) { - return A2( - $elm$browser$Debugger$Expando$mergeHelp, - expando, - _Debugger_init(value)); - }); -var $elm$browser$Debugger$Main$jumpUpdate = F3( - function (update, index, model) { - var history = $elm$browser$Debugger$Main$cachedHistory(model); - var currentMsg = $elm$browser$Debugger$History$getRecentMsg(history); - var currentModel = $elm$browser$Debugger$Main$getLatestModel(model.state); - var _v0 = A3($elm$browser$Debugger$History$get, update, index, history); - var indexModel = _v0.a; - var indexMsg = _v0.b; - return _Utils_update( - model, - { - expandoModel: A2($elm$browser$Debugger$Expando$merge, indexModel, model.expandoModel), - expandoMsg: A2($elm$browser$Debugger$Expando$merge, indexMsg, model.expandoMsg), - state: A5($elm$browser$Debugger$Main$Paused, index, indexModel, currentModel, currentMsg, history) - }); - }); -var $elm$browser$Debugger$History$jsToElm = A2($elm$core$Basics$composeR, _Json_unwrap, _Debugger_unsafeCoerce); -var $elm$browser$Debugger$History$decoder = F2( - function (initialModel, update) { - var addMessage = F2( - function (rawMsg, _v0) { - var model = _v0.a; - var history = _v0.b; - var msg = $elm$browser$Debugger$History$jsToElm(rawMsg); - return _Utils_Tuple2( - A2(update, msg, model), - A3($elm$browser$Debugger$History$add, msg, model, history)); - }); - var updateModel = function (rawMsgs) { - return A3( - $elm$core$List$foldl, - addMessage, - _Utils_Tuple2( - initialModel, - $elm$browser$Debugger$History$empty(initialModel)), - rawMsgs); - }; - return A2( - $elm$json$Json$Decode$map, - updateModel, - $elm$json$Json$Decode$list($elm$json$Json$Decode$value)); - }); -var $elm$browser$Debugger$History$getInitialModel = function (_v0) { - var snapshots = _v0.snapshots; - var recent = _v0.recent; - var _v1 = A2($elm$core$Array$get, 0, snapshots); - if (_v1.$ === 'Just') { - var model = _v1.a.model; - return model; - } else { - return recent.model; - } -}; -var $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil); -var $elm$browser$Debugger$Main$loadNewHistory = F3( - function (rawHistory, update, model) { - var pureUserUpdate = F2( - function (msg, userModel) { - return A2(update, msg, userModel).a; - }); - var initialUserModel = $elm$browser$Debugger$History$getInitialModel(model.history); - var decoder = A2($elm$browser$Debugger$History$decoder, initialUserModel, pureUserUpdate); - var _v0 = A2($elm$json$Json$Decode$decodeValue, decoder, rawHistory); - if (_v0.$ === 'Err') { - return _Utils_Tuple2( - _Utils_update( - model, - {overlay: $elm$browser$Debugger$Overlay$corruptImport}), - $elm$core$Platform$Cmd$none); - } else { - var _v1 = _v0.a; - var latestUserModel = _v1.a; - var newHistory = _v1.b; - return _Utils_Tuple2( - _Utils_update( - model, - { - expandoModel: $elm$browser$Debugger$Expando$init(latestUserModel), - expandoMsg: $elm$browser$Debugger$Expando$init( - $elm$browser$Debugger$History$getRecentMsg(newHistory)), - history: newHistory, - overlay: $elm$browser$Debugger$Overlay$none, - state: $elm$browser$Debugger$Main$Running(latestUserModel) - }), - $elm$core$Platform$Cmd$none); - } - }); -var $elm$browser$Debugger$Main$scroll = function (popout) { - return A2( - $elm$core$Task$perform, - $elm$core$Basics$always($elm$browser$Debugger$Main$NoOp), - _Debugger_scroll(popout)); -}; -var $elm$browser$Debugger$Main$scrollTo = F2( - function (id, popout) { - return A2( - $elm$core$Task$perform, - $elm$core$Basics$always($elm$browser$Debugger$Main$NoOp), - A2(_Debugger_scrollTo, id, popout)); - }); -var $elm$browser$Debugger$Main$setDragStatus = F2( - function (status, layout) { - if (layout.$ === 'Horizontal') { - var x = layout.b; - var y = layout.c; - return A3($elm$browser$Debugger$Main$Horizontal, status, x, y); - } else { - var x = layout.b; - var y = layout.c; - return A3($elm$browser$Debugger$Main$Vertical, status, x, y); - } - }); -var $elm$browser$Debugger$Main$swapLayout = function (layout) { - if (layout.$ === 'Horizontal') { - var s = layout.a; - var x = layout.b; - var y = layout.c; - return A3($elm$browser$Debugger$Main$Vertical, s, x, y); - } else { - var s = layout.a; - var x = layout.b; - var y = layout.c; - return A3($elm$browser$Debugger$Main$Horizontal, s, x, y); - } -}; -var $elm$core$Dict$getMin = function (dict) { - getMin: - while (true) { - if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) { - var left = dict.d; - var $temp$dict = left; - dict = $temp$dict; - continue getMin; - } else { - return dict; - } - } -}; -var $elm$core$Dict$moveRedLeft = function (dict) { - if (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) { - if ((dict.e.d.$ === 'RBNode_elm_builtin') && (dict.e.d.a.$ === 'Red')) { - var clr = dict.a; - var k = dict.b; - var v = dict.c; - var _v1 = dict.d; - var lClr = _v1.a; - var lK = _v1.b; - var lV = _v1.c; - var lLeft = _v1.d; - var lRight = _v1.e; - var _v2 = dict.e; - var rClr = _v2.a; - var rK = _v2.b; - var rV = _v2.c; - var rLeft = _v2.d; - var _v3 = rLeft.a; - var rlK = rLeft.b; - var rlV = rLeft.c; - var rlL = rLeft.d; - var rlR = rLeft.e; - var rRight = _v2.e; - return A5( - $elm$core$Dict$RBNode_elm_builtin, - $elm$core$Dict$Red, - rlK, - rlV, - A5( - $elm$core$Dict$RBNode_elm_builtin, - $elm$core$Dict$Black, - k, - v, - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight), - rlL), - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rlR, rRight)); + function (_v0, _v1, _v2) { + return $elm$core$Task$succeed(0); + }); +var $elm$core$Task$cmdMap = F2( + function (tagger, _v0) { + var task = _v0; + return A2($elm$core$Task$map, tagger, task); + }); +_Platform_effectManagers['Task'] = _Platform_createManager($elm$core$Task$init, $elm$core$Task$onEffects, $elm$core$Task$onSelfMsg, $elm$core$Task$cmdMap); +var $elm$core$Task$command = _Platform_leaf('Task'); +var $elm$core$Task$perform = F2( + function (toMessage, task) { + return $elm$core$Task$command( + A2($elm$core$Task$map, toMessage, task)); + }); +var $elm$browser$Browser$application = _Browser_application; +var $elm$core$Basics$composeR = F3( + function (f, g, x) { + return g( + f(x)); + }); +var $author$project$Main$Model = F2( + function (shared, page) { + return {C: page, x: shared}; + }); +var $author$project$Main$Pages = function (a) { + return {$: 3, a: a}; +}; +var $author$project$Main$Shared = function (a) { + return {$: 2, a: a}; +}; +var $elm$core$Platform$Cmd$batch = _Platform_batch; +var $author$project$Spa$Generated$Route$NotFound = {$: 2}; +var $elm$url$Url$Parser$State = F5( + function (visited, unvisited, params, frag, value) { + return {S: frag, fB: params, N: unvisited, ez: value, W: visited}; + }); +var $elm$url$Url$Parser$getFirstMatch = function (states) { + getFirstMatch: + while (true) { + if (!states.b) { + return $elm$core$Maybe$Nothing; } else { - var clr = dict.a; - var k = dict.b; - var v = dict.c; - var _v4 = dict.d; - var lClr = _v4.a; - var lK = _v4.b; - var lV = _v4.c; - var lLeft = _v4.d; - var lRight = _v4.e; - var _v5 = dict.e; - var rClr = _v5.a; - var rK = _v5.b; - var rV = _v5.c; - var rLeft = _v5.d; - var rRight = _v5.e; - if (clr.$ === 'Black') { - return A5( - $elm$core$Dict$RBNode_elm_builtin, - $elm$core$Dict$Black, - k, - v, - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight), - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)); + var state = states.a; + var rest = states.b; + var _v1 = state.N; + if (!_v1.b) { + return $elm$core$Maybe$Just(state.ez); } else { - return A5( - $elm$core$Dict$RBNode_elm_builtin, - $elm$core$Dict$Black, - k, - v, - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight), - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)); + if ((_v1.a === '') && (!_v1.b.b)) { + return $elm$core$Maybe$Just(state.ez); + } else { + var $temp$states = rest; + states = $temp$states; + continue getFirstMatch; + } } } - } else { - return dict; } }; -var $elm$core$Dict$moveRedRight = function (dict) { - if (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) { - if ((dict.d.d.$ === 'RBNode_elm_builtin') && (dict.d.d.a.$ === 'Red')) { - var clr = dict.a; - var k = dict.b; - var v = dict.c; - var _v1 = dict.d; - var lClr = _v1.a; - var lK = _v1.b; - var lV = _v1.c; - var _v2 = _v1.d; - var _v3 = _v2.a; - var llK = _v2.b; - var llV = _v2.c; - var llLeft = _v2.d; - var llRight = _v2.e; - var lRight = _v1.e; - var _v4 = dict.e; - var rClr = _v4.a; - var rK = _v4.b; - var rV = _v4.c; - var rLeft = _v4.d; - var rRight = _v4.e; - return A5( - $elm$core$Dict$RBNode_elm_builtin, - $elm$core$Dict$Red, - lK, - lV, - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight), - A5( - $elm$core$Dict$RBNode_elm_builtin, - $elm$core$Dict$Black, - k, - v, - lRight, - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight))); +var $elm$url$Url$Parser$removeFinalEmpty = function (segments) { + if (!segments.b) { + return _List_Nil; + } else { + if ((segments.a === '') && (!segments.b.b)) { + return _List_Nil; } else { - var clr = dict.a; - var k = dict.b; - var v = dict.c; - var _v5 = dict.d; - var lClr = _v5.a; - var lK = _v5.b; - var lV = _v5.c; - var lLeft = _v5.d; - var lRight = _v5.e; - var _v6 = dict.e; - var rClr = _v6.a; - var rK = _v6.b; - var rV = _v6.c; - var rLeft = _v6.d; - var rRight = _v6.e; - if (clr.$ === 'Black') { - return A5( - $elm$core$Dict$RBNode_elm_builtin, - $elm$core$Dict$Black, - k, - v, - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight), - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)); - } else { - return A5( - $elm$core$Dict$RBNode_elm_builtin, - $elm$core$Dict$Black, - k, - v, - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight), - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)); - } + var segment = segments.a; + var rest = segments.b; + return A2( + $elm$core$List$cons, + segment, + $elm$url$Url$Parser$removeFinalEmpty(rest)); } + } +}; +var $elm$url$Url$Parser$preparePath = function (path) { + var _v0 = A2($elm$core$String$split, '/', path); + if (_v0.b && (_v0.a === '')) { + var segments = _v0.b; + return $elm$url$Url$Parser$removeFinalEmpty(segments); } else { - return dict; + var segments = _v0; + return $elm$url$Url$Parser$removeFinalEmpty(segments); } }; -var $elm$core$Dict$removeHelpPrepEQGT = F7( - function (targetKey, dict, color, key, value, left, right) { - if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) { - var _v1 = left.a; - var lK = left.b; - var lV = left.c; - var lLeft = left.d; - var lRight = left.e; - return A5( - $elm$core$Dict$RBNode_elm_builtin, - color, - lK, - lV, - lLeft, - A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, lRight, right)); +var $elm$url$Url$Parser$addToParametersHelp = F2( + function (value, maybeList) { + if (maybeList.$ === 1) { + return $elm$core$Maybe$Just( + _List_fromArray( + [value])); } else { - _v2$2: - while (true) { - if ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Black')) { - if (right.d.$ === 'RBNode_elm_builtin') { - if (right.d.a.$ === 'Black') { - var _v3 = right.a; - var _v4 = right.d; - var _v5 = _v4.a; - return $elm$core$Dict$moveRedRight(dict); - } else { - break _v2$2; - } - } else { - var _v6 = right.a; - var _v7 = right.d; - return $elm$core$Dict$moveRedRight(dict); - } - } else { - break _v2$2; + var list = maybeList.a; + return $elm$core$Maybe$Just( + A2($elm$core$List$cons, value, list)); + } + }); +var $elm$url$Url$percentDecode = _Url_percentDecode; +var $elm$core$Basics$compare = _Utils_compare; +var $elm$core$Dict$get = F2( + function (targetKey, dict) { + get: + while (true) { + if (dict.$ === -2) { + return $elm$core$Maybe$Nothing; + } else { + var key = dict.b; + var value = dict.c; + var left = dict.d; + var right = dict.e; + var _v1 = A2($elm$core$Basics$compare, targetKey, key); + switch (_v1) { + case 0: + var $temp$targetKey = targetKey, + $temp$dict = left; + targetKey = $temp$targetKey; + dict = $temp$dict; + continue get; + case 1: + return $elm$core$Maybe$Just(value); + default: + var $temp$targetKey = targetKey, + $temp$dict = right; + targetKey = $temp$targetKey; + dict = $temp$dict; + continue get; } } - return dict; } }); -var $elm$core$Dict$removeMin = function (dict) { - if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) { - var color = dict.a; - var key = dict.b; - var value = dict.c; - var left = dict.d; - var lColor = left.a; - var lLeft = left.d; - var right = dict.e; - if (lColor.$ === 'Black') { - if ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) { - var _v3 = lLeft.a; +var $elm$core$Dict$Black = 1; +var $elm$core$Dict$RBNode_elm_builtin = F5( + function (a, b, c, d, e) { + return {$: -1, a: a, b: b, c: c, d: d, e: e}; + }); +var $elm$core$Dict$RBEmpty_elm_builtin = {$: -2}; +var $elm$core$Dict$Red = 0; +var $elm$core$Dict$balance = F5( + function (color, key, value, left, right) { + if ((right.$ === -1) && (!right.a)) { + var _v1 = right.a; + var rK = right.b; + var rV = right.c; + var rLeft = right.d; + var rRight = right.e; + if ((left.$ === -1) && (!left.a)) { + var _v3 = left.a; + var lK = left.b; + var lV = left.c; + var lLeft = left.d; + var lRight = left.e; return A5( $elm$core$Dict$RBNode_elm_builtin, - color, + 0, key, value, - $elm$core$Dict$removeMin(left), - right); + A5($elm$core$Dict$RBNode_elm_builtin, 1, lK, lV, lLeft, lRight), + A5($elm$core$Dict$RBNode_elm_builtin, 1, rK, rV, rLeft, rRight)); + } else { + return A5( + $elm$core$Dict$RBNode_elm_builtin, + color, + rK, + rV, + A5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, left, rLeft), + rRight); + } + } else { + if ((((left.$ === -1) && (!left.a)) && (left.d.$ === -1)) && (!left.d.a)) { + var _v5 = left.a; + var lK = left.b; + var lV = left.c; + var _v6 = left.d; + var _v7 = _v6.a; + var llK = _v6.b; + var llV = _v6.c; + var llLeft = _v6.d; + var llRight = _v6.e; + var lRight = left.e; + return A5( + $elm$core$Dict$RBNode_elm_builtin, + 0, + lK, + lV, + A5($elm$core$Dict$RBNode_elm_builtin, 1, llK, llV, llLeft, llRight), + A5($elm$core$Dict$RBNode_elm_builtin, 1, key, value, lRight, right)); } else { - var _v4 = $elm$core$Dict$moveRedLeft(dict); - if (_v4.$ === 'RBNode_elm_builtin') { - var nColor = _v4.a; - var nKey = _v4.b; - var nValue = _v4.c; - var nLeft = _v4.d; - var nRight = _v4.e; + return A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right); + } + } + }); +var $elm$core$Dict$insertHelp = F3( + function (key, value, dict) { + if (dict.$ === -2) { + return A5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin); + } else { + var nColor = dict.a; + var nKey = dict.b; + var nValue = dict.c; + var nLeft = dict.d; + var nRight = dict.e; + var _v1 = A2($elm$core$Basics$compare, key, nKey); + switch (_v1) { + case 0: return A5( $elm$core$Dict$balance, nColor, nKey, nValue, - $elm$core$Dict$removeMin(nLeft), + A3($elm$core$Dict$insertHelp, key, value, nLeft), nRight); - } else { - return $elm$core$Dict$RBEmpty_elm_builtin; - } - } - } else { - return A5( - $elm$core$Dict$RBNode_elm_builtin, - color, - key, - value, - $elm$core$Dict$removeMin(left), - right); - } - } else { - return $elm$core$Dict$RBEmpty_elm_builtin; - } -}; -var $elm$core$Dict$removeHelp = F2( - function (targetKey, dict) { - if (dict.$ === 'RBEmpty_elm_builtin') { - return $elm$core$Dict$RBEmpty_elm_builtin; - } else { - var color = dict.a; - var key = dict.b; - var value = dict.c; - var left = dict.d; - var right = dict.e; - if (_Utils_cmp(targetKey, key) < 0) { - if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Black')) { - var _v4 = left.a; - var lLeft = left.d; - if ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) { - var _v6 = lLeft.a; - return A5( - $elm$core$Dict$RBNode_elm_builtin, - color, - key, - value, - A2($elm$core$Dict$removeHelp, targetKey, left), - right); - } else { - var _v7 = $elm$core$Dict$moveRedLeft(dict); - if (_v7.$ === 'RBNode_elm_builtin') { - var nColor = _v7.a; - var nKey = _v7.b; - var nValue = _v7.c; - var nLeft = _v7.d; - var nRight = _v7.e; - return A5( - $elm$core$Dict$balance, - nColor, - nKey, - nValue, - A2($elm$core$Dict$removeHelp, targetKey, nLeft), - nRight); - } else { - return $elm$core$Dict$RBEmpty_elm_builtin; - } - } - } else { - return A5( - $elm$core$Dict$RBNode_elm_builtin, - color, - key, - value, - A2($elm$core$Dict$removeHelp, targetKey, left), - right); - } - } else { - return A2( - $elm$core$Dict$removeHelpEQGT, - targetKey, - A7($elm$core$Dict$removeHelpPrepEQGT, targetKey, dict, color, key, value, left, right)); - } - } - }); -var $elm$core$Dict$removeHelpEQGT = F2( - function (targetKey, dict) { - if (dict.$ === 'RBNode_elm_builtin') { - var color = dict.a; - var key = dict.b; - var value = dict.c; - var left = dict.d; - var right = dict.e; - if (_Utils_eq(targetKey, key)) { - var _v1 = $elm$core$Dict$getMin(right); - if (_v1.$ === 'RBNode_elm_builtin') { - var minKey = _v1.b; - var minValue = _v1.c; + case 1: + return A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight); + default: return A5( $elm$core$Dict$balance, - color, - minKey, - minValue, - left, - $elm$core$Dict$removeMin(right)); - } else { - return $elm$core$Dict$RBEmpty_elm_builtin; - } - } else { - return A5( - $elm$core$Dict$balance, - color, - key, - value, - left, - A2($elm$core$Dict$removeHelp, targetKey, right)); + nColor, + nKey, + nValue, + nLeft, + A3($elm$core$Dict$insertHelp, key, value, nRight)); } - } else { - return $elm$core$Dict$RBEmpty_elm_builtin; } }); -var $elm$core$Dict$remove = F2( - function (key, dict) { - var _v0 = A2($elm$core$Dict$removeHelp, key, dict); - if ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) { +var $elm$core$Dict$insert = F3( + function (key, value, dict) { + var _v0 = A3($elm$core$Dict$insertHelp, key, value, dict); + if ((_v0.$ === -1) && (!_v0.a)) { var _v1 = _v0.a; var k = _v0.b; var v = _v0.c; var l = _v0.d; var r = _v0.e; - return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r); + return A5($elm$core$Dict$RBNode_elm_builtin, 1, k, v, l, r); } else { var x = _v0; return x; } }); -var $elm$core$Dict$update = F3( - function (targetKey, alter, dictionary) { - var _v0 = alter( - A2($elm$core$Dict$get, targetKey, dictionary)); - if (_v0.$ === 'Just') { - var value = _v0.a; - return A3($elm$core$Dict$insert, targetKey, value, dictionary); +var $elm$core$Dict$getMin = function (dict) { + getMin: + while (true) { + if ((dict.$ === -1) && (dict.d.$ === -1)) { + var left = dict.d; + var $temp$dict = left; + dict = $temp$dict; + continue getMin; } else { - return A2($elm$core$Dict$remove, targetKey, dictionary); + return dict; } - }); -var $elm$browser$Debugger$Expando$updateIndex = F3( - function (n, func, list) { - if (!list.b) { - return _List_Nil; + } +}; +var $elm$core$Dict$moveRedLeft = function (dict) { + if (((dict.$ === -1) && (dict.d.$ === -1)) && (dict.e.$ === -1)) { + if ((dict.e.d.$ === -1) && (!dict.e.d.a)) { + var clr = dict.a; + var k = dict.b; + var v = dict.c; + var _v1 = dict.d; + var lClr = _v1.a; + var lK = _v1.b; + var lV = _v1.c; + var lLeft = _v1.d; + var lRight = _v1.e; + var _v2 = dict.e; + var rClr = _v2.a; + var rK = _v2.b; + var rV = _v2.c; + var rLeft = _v2.d; + var _v3 = rLeft.a; + var rlK = rLeft.b; + var rlV = rLeft.c; + var rlL = rLeft.d; + var rlR = rLeft.e; + var rRight = _v2.e; + return A5( + $elm$core$Dict$RBNode_elm_builtin, + 0, + rlK, + rlV, + A5( + $elm$core$Dict$RBNode_elm_builtin, + 1, + k, + v, + A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight), + rlL), + A5($elm$core$Dict$RBNode_elm_builtin, 1, rK, rV, rlR, rRight)); } else { - var x = list.a; - var xs = list.b; - return (n <= 0) ? A2( - $elm$core$List$cons, - func(x), - xs) : A2( - $elm$core$List$cons, - x, - A3($elm$browser$Debugger$Expando$updateIndex, n - 1, func, xs)); - } - }); -var $elm$browser$Debugger$Expando$update = F2( - function (msg, value) { - switch (value.$) { - case 'S': - return value; - case 'Primitive': - return value; - case 'Sequence': - var seqType = value.a; - var isClosed = value.b; - var valueList = value.c; - switch (msg.$) { - case 'Toggle': - return A3($elm$browser$Debugger$Expando$Sequence, seqType, !isClosed, valueList); - case 'Index': - if (msg.a.$ === 'None') { - var _v3 = msg.a; - var index = msg.b; - var subMsg = msg.c; - return A3( - $elm$browser$Debugger$Expando$Sequence, - seqType, - isClosed, - A3( - $elm$browser$Debugger$Expando$updateIndex, - index, - $elm$browser$Debugger$Expando$update(subMsg), - valueList)); - } else { - return value; - } - default: - return value; - } - case 'Dictionary': - var isClosed = value.a; - var keyValuePairs = value.b; - switch (msg.$) { - case 'Toggle': - return A2($elm$browser$Debugger$Expando$Dictionary, !isClosed, keyValuePairs); - case 'Index': - var redirect = msg.a; - var index = msg.b; - var subMsg = msg.c; - switch (redirect.$) { - case 'None': - return value; - case 'Key': - return A2( - $elm$browser$Debugger$Expando$Dictionary, - isClosed, - A3( - $elm$browser$Debugger$Expando$updateIndex, - index, - function (_v6) { - var k = _v6.a; - var v = _v6.b; - return _Utils_Tuple2( - A2($elm$browser$Debugger$Expando$update, subMsg, k), - v); - }, - keyValuePairs)); - default: - return A2( - $elm$browser$Debugger$Expando$Dictionary, - isClosed, - A3( - $elm$browser$Debugger$Expando$updateIndex, - index, - function (_v7) { - var k = _v7.a; - var v = _v7.b; - return _Utils_Tuple2( - k, - A2($elm$browser$Debugger$Expando$update, subMsg, v)); - }, - keyValuePairs)); - } - default: - return value; - } - case 'Record': - var isClosed = value.a; - var valueDict = value.b; - switch (msg.$) { - case 'Toggle': - return A2($elm$browser$Debugger$Expando$Record, !isClosed, valueDict); - case 'Index': - return value; - default: - var field = msg.a; - var subMsg = msg.b; - return A2( - $elm$browser$Debugger$Expando$Record, - isClosed, - A3( - $elm$core$Dict$update, - field, - $elm$browser$Debugger$Expando$updateField(subMsg), - valueDict)); - } - default: - var maybeName = value.a; - var isClosed = value.b; - var valueList = value.c; - switch (msg.$) { - case 'Toggle': - return A3($elm$browser$Debugger$Expando$Constructor, maybeName, !isClosed, valueList); - case 'Index': - if (msg.a.$ === 'None') { - var _v10 = msg.a; - var index = msg.b; - var subMsg = msg.c; - return A3( - $elm$browser$Debugger$Expando$Constructor, - maybeName, - isClosed, - A3( - $elm$browser$Debugger$Expando$updateIndex, - index, - $elm$browser$Debugger$Expando$update(subMsg), - valueList)); - } else { - return value; - } - default: - return value; - } + var clr = dict.a; + var k = dict.b; + var v = dict.c; + var _v4 = dict.d; + var lClr = _v4.a; + var lK = _v4.b; + var lV = _v4.c; + var lLeft = _v4.d; + var lRight = _v4.e; + var _v5 = dict.e; + var rClr = _v5.a; + var rK = _v5.b; + var rV = _v5.c; + var rLeft = _v5.d; + var rRight = _v5.e; + if (clr === 1) { + return A5( + $elm$core$Dict$RBNode_elm_builtin, + 1, + k, + v, + A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight), + A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight)); + } else { + return A5( + $elm$core$Dict$RBNode_elm_builtin, + 1, + k, + v, + A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight), + A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight)); + } } - }); -var $elm$browser$Debugger$Expando$updateField = F2( - function (msg, maybeExpando) { - if (maybeExpando.$ === 'Nothing') { - return maybeExpando; + } else { + return dict; + } +}; +var $elm$core$Dict$moveRedRight = function (dict) { + if (((dict.$ === -1) && (dict.d.$ === -1)) && (dict.e.$ === -1)) { + if ((dict.d.d.$ === -1) && (!dict.d.d.a)) { + var clr = dict.a; + var k = dict.b; + var v = dict.c; + var _v1 = dict.d; + var lClr = _v1.a; + var lK = _v1.b; + var lV = _v1.c; + var _v2 = _v1.d; + var _v3 = _v2.a; + var llK = _v2.b; + var llV = _v2.c; + var llLeft = _v2.d; + var llRight = _v2.e; + var lRight = _v1.e; + var _v4 = dict.e; + var rClr = _v4.a; + var rK = _v4.b; + var rV = _v4.c; + var rLeft = _v4.d; + var rRight = _v4.e; + return A5( + $elm$core$Dict$RBNode_elm_builtin, + 0, + lK, + lV, + A5($elm$core$Dict$RBNode_elm_builtin, 1, llK, llV, llLeft, llRight), + A5( + $elm$core$Dict$RBNode_elm_builtin, + 1, + k, + v, + lRight, + A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight))); } else { - var expando = maybeExpando.a; - return $elm$core$Maybe$Just( - A2($elm$browser$Debugger$Expando$update, msg, expando)); + var clr = dict.a; + var k = dict.b; + var v = dict.c; + var _v5 = dict.d; + var lClr = _v5.a; + var lK = _v5.b; + var lV = _v5.c; + var lLeft = _v5.d; + var lRight = _v5.e; + var _v6 = dict.e; + var rClr = _v6.a; + var rK = _v6.b; + var rV = _v6.c; + var rLeft = _v6.d; + var rRight = _v6.e; + if (clr === 1) { + return A5( + $elm$core$Dict$RBNode_elm_builtin, + 1, + k, + v, + A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight), + A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight)); + } else { + return A5( + $elm$core$Dict$RBNode_elm_builtin, + 1, + k, + v, + A5($elm$core$Dict$RBNode_elm_builtin, 0, lK, lV, lLeft, lRight), + A5($elm$core$Dict$RBNode_elm_builtin, 0, rK, rV, rLeft, rRight)); + } } - }); -var $elm$browser$Debugger$Main$Upload = function (a) { - return {$: 'Upload', a: a}; + } else { + return dict; + } }; -var $elm$browser$Debugger$Main$upload = function (popout) { - return A2( - $elm$core$Task$perform, - $elm$browser$Debugger$Main$Upload, - _Debugger_upload(popout)); -}; -var $elm$browser$Debugger$Overlay$BadMetadata = function (a) { - return {$: 'BadMetadata', a: a}; -}; -var $elm$browser$Debugger$Overlay$badMetadata = $elm$browser$Debugger$Overlay$BadMetadata; -var $elm$browser$Debugger$Main$withGoodMetadata = F2( - function (model, func) { - var _v0 = model.metadata; - if (_v0.$ === 'Ok') { - var metadata = _v0.a; - return func(metadata); +var $elm$core$Dict$removeHelpPrepEQGT = F7( + function (targetKey, dict, color, key, value, left, right) { + if ((left.$ === -1) && (!left.a)) { + var _v1 = left.a; + var lK = left.b; + var lV = left.c; + var lLeft = left.d; + var lRight = left.e; + return A5( + $elm$core$Dict$RBNode_elm_builtin, + color, + lK, + lV, + lLeft, + A5($elm$core$Dict$RBNode_elm_builtin, 0, key, value, lRight, right)); } else { - var error = _v0.a; - return _Utils_Tuple2( - _Utils_update( - model, - { - overlay: $elm$browser$Debugger$Overlay$badMetadata(error) - }), - $elm$core$Platform$Cmd$none); - } - }); -var $elm$browser$Debugger$Main$wrapUpdate = F3( - function (update, msg, model) { - wrapUpdate: - while (true) { - switch (msg.$) { - case 'NoOp': - return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); - case 'UserMsg': - var userMsg = msg.a; - var userModel = $elm$browser$Debugger$Main$getLatestModel(model.state); - var newHistory = A3($elm$browser$Debugger$History$add, userMsg, userModel, model.history); - var _v1 = A2(update, userMsg, userModel); - var newUserModel = _v1.a; - var userCmds = _v1.b; - var commands = A2($elm$core$Platform$Cmd$map, $elm$browser$Debugger$Main$UserMsg, userCmds); - var _v2 = model.state; - if (_v2.$ === 'Running') { - return _Utils_Tuple2( - _Utils_update( - model, - { - expandoModel: A2($elm$browser$Debugger$Expando$merge, newUserModel, model.expandoModel), - expandoMsg: A2($elm$browser$Debugger$Expando$merge, userMsg, model.expandoMsg), - history: newHistory, - state: $elm$browser$Debugger$Main$Running(newUserModel) - }), - $elm$core$Platform$Cmd$batch( - _List_fromArray( - [ - commands, - $elm$browser$Debugger$Main$scroll(model.popout) - ]))); - } else { - var index = _v2.a; - var indexModel = _v2.b; - var history = _v2.e; - return _Utils_Tuple2( - _Utils_update( - model, - { - history: newHistory, - state: A5($elm$browser$Debugger$Main$Paused, index, indexModel, newUserModel, userMsg, history) - }), - commands); - } - case 'TweakExpandoMsg': - var eMsg = msg.a; - return _Utils_Tuple2( - _Utils_update( - model, - { - expandoMsg: A2($elm$browser$Debugger$Expando$update, eMsg, model.expandoMsg) - }), - $elm$core$Platform$Cmd$none); - case 'TweakExpandoModel': - var eMsg = msg.a; - return _Utils_Tuple2( - _Utils_update( - model, - { - expandoModel: A2($elm$browser$Debugger$Expando$update, eMsg, model.expandoModel) - }), - $elm$core$Platform$Cmd$none); - case 'Resume': - var _v3 = model.state; - if (_v3.$ === 'Running') { - return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); - } else { - var userModel = _v3.c; - var userMsg = _v3.d; - return _Utils_Tuple2( - _Utils_update( - model, - { - expandoModel: A2($elm$browser$Debugger$Expando$merge, userModel, model.expandoModel), - expandoMsg: A2($elm$browser$Debugger$Expando$merge, userMsg, model.expandoMsg), - state: $elm$browser$Debugger$Main$Running(userModel) - }), - $elm$browser$Debugger$Main$scroll(model.popout)); - } - case 'Jump': - var index = msg.a; - return _Utils_Tuple2( - A3($elm$browser$Debugger$Main$jumpUpdate, update, index, model), - $elm$core$Platform$Cmd$none); - case 'SliderJump': - var index = msg.a; - return _Utils_Tuple2( - A3($elm$browser$Debugger$Main$jumpUpdate, update, index, model), - A2( - $elm$browser$Debugger$Main$scrollTo, - $elm$browser$Debugger$History$idForMessageIndex(index), - model.popout)); - case 'Open': - return _Utils_Tuple2( - model, - A2( - $elm$core$Task$perform, - $elm$core$Basics$always($elm$browser$Debugger$Main$NoOp), - _Debugger_open(model.popout))); - case 'Up': - var _v4 = model.state; - if (_v4.$ === 'Running') { - return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); - } else { - var i = _v4.a; - var history = _v4.e; - var targetIndex = i + 1; - if (_Utils_cmp( - targetIndex, - $elm$browser$Debugger$History$size(history)) < 0) { - var $temp$update = update, - $temp$msg = $elm$browser$Debugger$Main$SliderJump(targetIndex), - $temp$model = model; - update = $temp$update; - msg = $temp$msg; - model = $temp$model; - continue wrapUpdate; - } else { - var $temp$update = update, - $temp$msg = $elm$browser$Debugger$Main$Resume, - $temp$model = model; - update = $temp$update; - msg = $temp$msg; - model = $temp$model; - continue wrapUpdate; - } - } - case 'Down': - var _v5 = model.state; - if (_v5.$ === 'Running') { - var $temp$update = update, - $temp$msg = $elm$browser$Debugger$Main$Jump( - $elm$browser$Debugger$History$size(model.history) - 1), - $temp$model = model; - update = $temp$update; - msg = $temp$msg; - model = $temp$model; - continue wrapUpdate; - } else { - var index = _v5.a; - if (index > 0) { - var $temp$update = update, - $temp$msg = $elm$browser$Debugger$Main$SliderJump(index - 1), - $temp$model = model; - update = $temp$update; - msg = $temp$msg; - model = $temp$model; - continue wrapUpdate; + _v2$2: + while (true) { + if ((right.$ === -1) && (right.a === 1)) { + if (right.d.$ === -1) { + if (right.d.a === 1) { + var _v3 = right.a; + var _v4 = right.d; + var _v5 = _v4.a; + return $elm$core$Dict$moveRedRight(dict); } else { - return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); + break _v2$2; } - } - case 'Import': - return A2( - $elm$browser$Debugger$Main$withGoodMetadata, - model, - function (_v6) { - return _Utils_Tuple2( - model, - $elm$browser$Debugger$Main$upload(model.popout)); - }); - case 'Export': - return A2( - $elm$browser$Debugger$Main$withGoodMetadata, - model, - function (metadata) { - return _Utils_Tuple2( - model, - A2($elm$browser$Debugger$Main$download, metadata, model.history)); - }); - case 'Upload': - var jsonString = msg.a; - return A2( - $elm$browser$Debugger$Main$withGoodMetadata, - model, - function (metadata) { - var _v7 = A2($elm$browser$Debugger$Overlay$assessImport, metadata, jsonString); - if (_v7.$ === 'Err') { - var newOverlay = _v7.a; - return _Utils_Tuple2( - _Utils_update( - model, - {overlay: newOverlay}), - $elm$core$Platform$Cmd$none); - } else { - var rawHistory = _v7.a; - return A3($elm$browser$Debugger$Main$loadNewHistory, rawHistory, update, model); - } - }); - case 'OverlayMsg': - var overlayMsg = msg.a; - var _v8 = A2($elm$browser$Debugger$Overlay$close, overlayMsg, model.overlay); - if (_v8.$ === 'Nothing') { - return _Utils_Tuple2( - _Utils_update( - model, - {overlay: $elm$browser$Debugger$Overlay$none}), - $elm$core$Platform$Cmd$none); } else { - var rawHistory = _v8.a; - return A3($elm$browser$Debugger$Main$loadNewHistory, rawHistory, update, model); + var _v6 = right.a; + var _v7 = right.d; + return $elm$core$Dict$moveRedRight(dict); } - case 'SwapLayout': - return _Utils_Tuple2( - _Utils_update( - model, - { - layout: $elm$browser$Debugger$Main$swapLayout(model.layout) - }), - $elm$core$Platform$Cmd$none); - case 'DragStart': - return _Utils_Tuple2( - _Utils_update( - model, - { - layout: A2($elm$browser$Debugger$Main$setDragStatus, $elm$browser$Debugger$Main$Moving, model.layout) - }), - $elm$core$Platform$Cmd$none); - case 'Drag': - var info = msg.a; - return _Utils_Tuple2( - _Utils_update( - model, - { - layout: A2($elm$browser$Debugger$Main$drag, info, model.layout) - }), - $elm$core$Platform$Cmd$none); - default: - return _Utils_Tuple2( - _Utils_update( - model, - { - layout: A2($elm$browser$Debugger$Main$setDragStatus, $elm$browser$Debugger$Main$Static, model.layout) - }), - $elm$core$Platform$Cmd$none); + } else { + break _v2$2; + } } + return dict; } }); -var $elm$browser$Browser$External = function (a) { - return {$: 'External', a: a}; -}; -var $elm$browser$Browser$Internal = function (a) { - return {$: 'Internal', a: a}; -}; -var $elm$browser$Browser$Dom$NotFound = function (a) { - return {$: 'NotFound', a: a}; -}; -var $elm$url$Url$Http = {$: 'Http'}; -var $elm$url$Url$Https = {$: 'Https'}; -var $elm$url$Url$Url = F6( - function (protocol, host, port_, path, query, fragment) { - return {fragment: fragment, host: host, path: path, port_: port_, protocol: protocol, query: query}; - }); -var $elm$core$String$dropLeft = F2( - function (n, string) { - return (n < 1) ? string : A3( - $elm$core$String$slice, - n, - $elm$core$String$length(string), - string); - }); -var $elm$core$String$indexes = _String_indexes; -var $elm$core$String$isEmpty = function (string) { - return string === ''; +var $elm$core$Dict$removeMin = function (dict) { + if ((dict.$ === -1) && (dict.d.$ === -1)) { + var color = dict.a; + var key = dict.b; + var value = dict.c; + var left = dict.d; + var lColor = left.a; + var lLeft = left.d; + var right = dict.e; + if (lColor === 1) { + if ((lLeft.$ === -1) && (!lLeft.a)) { + var _v3 = lLeft.a; + return A5( + $elm$core$Dict$RBNode_elm_builtin, + color, + key, + value, + $elm$core$Dict$removeMin(left), + right); + } else { + var _v4 = $elm$core$Dict$moveRedLeft(dict); + if (_v4.$ === -1) { + var nColor = _v4.a; + var nKey = _v4.b; + var nValue = _v4.c; + var nLeft = _v4.d; + var nRight = _v4.e; + return A5( + $elm$core$Dict$balance, + nColor, + nKey, + nValue, + $elm$core$Dict$removeMin(nLeft), + nRight); + } else { + return $elm$core$Dict$RBEmpty_elm_builtin; + } + } + } else { + return A5( + $elm$core$Dict$RBNode_elm_builtin, + color, + key, + value, + $elm$core$Dict$removeMin(left), + right); + } + } else { + return $elm$core$Dict$RBEmpty_elm_builtin; + } }; -var $elm$url$Url$chompBeforePath = F5( - function (protocol, path, params, frag, str) { - if ($elm$core$String$isEmpty(str) || A2($elm$core$String$contains, '@', str)) { - return $elm$core$Maybe$Nothing; +var $elm$core$Dict$removeHelp = F2( + function (targetKey, dict) { + if (dict.$ === -2) { + return $elm$core$Dict$RBEmpty_elm_builtin; } else { - var _v0 = A2($elm$core$String$indexes, ':', str); - if (!_v0.b) { - return $elm$core$Maybe$Just( - A6($elm$url$Url$Url, protocol, str, $elm$core$Maybe$Nothing, path, params, frag)); - } else { - if (!_v0.b.b) { - var i = _v0.a; - var _v1 = $elm$core$String$toInt( - A2($elm$core$String$dropLeft, i + 1, str)); - if (_v1.$ === 'Nothing') { - return $elm$core$Maybe$Nothing; + var color = dict.a; + var key = dict.b; + var value = dict.c; + var left = dict.d; + var right = dict.e; + if (_Utils_cmp(targetKey, key) < 0) { + if ((left.$ === -1) && (left.a === 1)) { + var _v4 = left.a; + var lLeft = left.d; + if ((lLeft.$ === -1) && (!lLeft.a)) { + var _v6 = lLeft.a; + return A5( + $elm$core$Dict$RBNode_elm_builtin, + color, + key, + value, + A2($elm$core$Dict$removeHelp, targetKey, left), + right); } else { - var port_ = _v1; - return $elm$core$Maybe$Just( - A6( - $elm$url$Url$Url, - protocol, - A2($elm$core$String$left, i, str), - port_, - path, - params, - frag)); + var _v7 = $elm$core$Dict$moveRedLeft(dict); + if (_v7.$ === -1) { + var nColor = _v7.a; + var nKey = _v7.b; + var nValue = _v7.c; + var nLeft = _v7.d; + var nRight = _v7.e; + return A5( + $elm$core$Dict$balance, + nColor, + nKey, + nValue, + A2($elm$core$Dict$removeHelp, targetKey, nLeft), + nRight); + } else { + return $elm$core$Dict$RBEmpty_elm_builtin; + } } } else { - return $elm$core$Maybe$Nothing; + return A5( + $elm$core$Dict$RBNode_elm_builtin, + color, + key, + value, + A2($elm$core$Dict$removeHelp, targetKey, left), + right); } + } else { + return A2( + $elm$core$Dict$removeHelpEQGT, + targetKey, + A7($elm$core$Dict$removeHelpPrepEQGT, targetKey, dict, color, key, value, left, right)); } } }); -var $elm$url$Url$chompBeforeQuery = F4( - function (protocol, params, frag, str) { - if ($elm$core$String$isEmpty(str)) { - return $elm$core$Maybe$Nothing; - } else { - var _v0 = A2($elm$core$String$indexes, '/', str); - if (!_v0.b) { - return A5($elm$url$Url$chompBeforePath, protocol, '/', params, frag, str); +var $elm$core$Dict$removeHelpEQGT = F2( + function (targetKey, dict) { + if (dict.$ === -1) { + var color = dict.a; + var key = dict.b; + var value = dict.c; + var left = dict.d; + var right = dict.e; + if (_Utils_eq(targetKey, key)) { + var _v1 = $elm$core$Dict$getMin(right); + if (_v1.$ === -1) { + var minKey = _v1.b; + var minValue = _v1.c; + return A5( + $elm$core$Dict$balance, + color, + minKey, + minValue, + left, + $elm$core$Dict$removeMin(right)); + } else { + return $elm$core$Dict$RBEmpty_elm_builtin; + } } else { - var i = _v0.a; return A5( - $elm$url$Url$chompBeforePath, - protocol, - A2($elm$core$String$dropLeft, i, str), - params, - frag, - A2($elm$core$String$left, i, str)); + $elm$core$Dict$balance, + color, + key, + value, + left, + A2($elm$core$Dict$removeHelp, targetKey, right)); } - } - }); -var $elm$url$Url$chompBeforeFragment = F3( - function (protocol, frag, str) { - if ($elm$core$String$isEmpty(str)) { - return $elm$core$Maybe$Nothing; } else { - var _v0 = A2($elm$core$String$indexes, '?', str); - if (!_v0.b) { - return A4($elm$url$Url$chompBeforeQuery, protocol, $elm$core$Maybe$Nothing, frag, str); - } else { - var i = _v0.a; - return A4( - $elm$url$Url$chompBeforeQuery, - protocol, - $elm$core$Maybe$Just( - A2($elm$core$String$dropLeft, i + 1, str)), - frag, - A2($elm$core$String$left, i, str)); - } + return $elm$core$Dict$RBEmpty_elm_builtin; } }); -var $elm$url$Url$chompAfterProtocol = F2( - function (protocol, str) { - if ($elm$core$String$isEmpty(str)) { - return $elm$core$Maybe$Nothing; +var $elm$core$Dict$remove = F2( + function (key, dict) { + var _v0 = A2($elm$core$Dict$removeHelp, key, dict); + if ((_v0.$ === -1) && (!_v0.a)) { + var _v1 = _v0.a; + var k = _v0.b; + var v = _v0.c; + var l = _v0.d; + var r = _v0.e; + return A5($elm$core$Dict$RBNode_elm_builtin, 1, k, v, l, r); } else { - var _v0 = A2($elm$core$String$indexes, '#', str); - if (!_v0.b) { - return A3($elm$url$Url$chompBeforeFragment, protocol, $elm$core$Maybe$Nothing, str); - } else { - var i = _v0.a; - return A3( - $elm$url$Url$chompBeforeFragment, - protocol, - $elm$core$Maybe$Just( - A2($elm$core$String$dropLeft, i + 1, str)), - A2($elm$core$String$left, i, str)); - } + var x = _v0; + return x; } }); -var $elm$core$String$startsWith = _String_startsWith; -var $elm$url$Url$fromString = function (str) { - return A2($elm$core$String$startsWith, 'http://', str) ? A2( - $elm$url$Url$chompAfterProtocol, - $elm$url$Url$Http, - A2($elm$core$String$dropLeft, 7, str)) : (A2($elm$core$String$startsWith, 'https://', str) ? A2( - $elm$url$Url$chompAfterProtocol, - $elm$url$Url$Https, - A2($elm$core$String$dropLeft, 8, str)) : $elm$core$Maybe$Nothing); -}; -var $elm$core$Basics$never = function (_v0) { - never: - while (true) { - var nvr = _v0.a; - var $temp$_v0 = nvr; - _v0 = $temp$_v0; - continue never; - } -}; -var $elm$browser$Browser$application = _Browser_application; -var $author$project$Main$Model = F2( - function (shared, page) { - return {page: page, shared: shared}; - }); -var $author$project$Main$Pages = function (a) { - return {$: 'Pages', a: a}; -}; -var $author$project$Main$Shared = function (a) { - return {$: 'Shared', a: a}; -}; -var $author$project$Spa$Generated$Route$NotFound = {$: 'NotFound'}; -var $elm$url$Url$Parser$State = F5( - function (visited, unvisited, params, frag, value) { - return {frag: frag, params: params, unvisited: unvisited, value: value, visited: visited}; - }); -var $elm$url$Url$Parser$getFirstMatch = function (states) { - getFirstMatch: - while (true) { - if (!states.b) { - return $elm$core$Maybe$Nothing; - } else { - var state = states.a; - var rest = states.b; - var _v1 = state.unvisited; - if (!_v1.b) { - return $elm$core$Maybe$Just(state.value); - } else { - if ((_v1.a === '') && (!_v1.b.b)) { - return $elm$core$Maybe$Just(state.value); - } else { - var $temp$states = rest; - states = $temp$states; - continue getFirstMatch; - } - } - } - } -}; -var $elm$url$Url$Parser$removeFinalEmpty = function (segments) { - if (!segments.b) { - return _List_Nil; - } else { - if ((segments.a === '') && (!segments.b.b)) { - return _List_Nil; - } else { - var segment = segments.a; - var rest = segments.b; - return A2( - $elm$core$List$cons, - segment, - $elm$url$Url$Parser$removeFinalEmpty(rest)); - } - } -}; -var $elm$url$Url$Parser$preparePath = function (path) { - var _v0 = A2($elm$core$String$split, '/', path); - if (_v0.b && (_v0.a === '')) { - var segments = _v0.b; - return $elm$url$Url$Parser$removeFinalEmpty(segments); - } else { - var segments = _v0; - return $elm$url$Url$Parser$removeFinalEmpty(segments); - } -}; -var $elm$url$Url$Parser$addToParametersHelp = F2( - function (value, maybeList) { - if (maybeList.$ === 'Nothing') { - return $elm$core$Maybe$Just( - _List_fromArray( - [value])); +var $elm$core$Dict$update = F3( + function (targetKey, alter, dictionary) { + var _v0 = alter( + A2($elm$core$Dict$get, targetKey, dictionary)); + if (!_v0.$) { + var value = _v0.a; + return A3($elm$core$Dict$insert, targetKey, value, dictionary); } else { - var list = maybeList.a; - return $elm$core$Maybe$Just( - A2($elm$core$List$cons, value, list)); + return A2($elm$core$Dict$remove, targetKey, dictionary); } }); -var $elm$url$Url$percentDecode = _Url_percentDecode; var $elm$url$Url$Parser$addParam = F2( function (segment, dict) { var _v0 = A2($elm$core$String$split, '=', segment); @@ -10819,12 +5941,12 @@ var $elm$url$Url$Parser$addParam = F2( var _v1 = _v0.b; var rawValue = _v1.a; var _v2 = $elm$url$Url$percentDecode(rawKey); - if (_v2.$ === 'Nothing') { + if (_v2.$ === 1) { return dict; } else { var key = _v2.a; var _v3 = $elm$url$Url$percentDecode(rawValue); - if (_v3.$ === 'Nothing') { + if (_v3.$ === 1) { return dict; } else { var value = _v3.a; @@ -10839,8 +5961,9 @@ var $elm$url$Url$Parser$addParam = F2( return dict; } }); +var $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin; var $elm$url$Url$Parser$prepareQuery = function (maybeQuery) { - if (maybeQuery.$ === 'Nothing') { + if (maybeQuery.$ === 1) { return $elm$core$Dict$empty; } else { var qry = maybeQuery.a; @@ -10853,35 +5976,33 @@ var $elm$url$Url$Parser$prepareQuery = function (maybeQuery) { }; var $elm$url$Url$Parser$parse = F2( function (_v0, url) { - var parser = _v0.a; + var parser = _v0; return $elm$url$Url$Parser$getFirstMatch( parser( A5( $elm$url$Url$Parser$State, _List_Nil, - $elm$url$Url$Parser$preparePath(url.path), - $elm$url$Url$Parser$prepareQuery(url.query), - url.fragment, + $elm$url$Url$Parser$preparePath(url.dX), + $elm$url$Url$Parser$prepareQuery(url.cS), + url.dw, $elm$core$Basics$identity))); }); -var $author$project$Spa$Generated$Route$Login = {$: 'Login'}; +var $author$project$Spa$Generated$Route$Login = {$: 1}; var $author$project$Spa$Generated$Route$Profile__Username_String = function (a) { - return {$: 'Profile__Username_String', a: a}; -}; -var $author$project$Spa$Generated$Route$Projects = {$: 'Projects'}; -var $author$project$Spa$Generated$Route$Register = {$: 'Register'}; -var $author$project$Spa$Generated$Route$Settings = {$: 'Settings'}; -var $author$project$Spa$Generated$Route$Top = {$: 'Top'}; -var $elm$url$Url$Parser$Parser = function (a) { - return {$: 'Parser', a: a}; + return {$: 6, a: a}; }; +var $author$project$Spa$Generated$Route$Projects = {$: 3}; +var $author$project$Spa$Generated$Route$Register = {$: 4}; +var $author$project$Spa$Generated$Route$Settings = {$: 5}; +var $author$project$Spa$Generated$Route$Top = {$: 0}; +var $elm$url$Url$Parser$Parser = $elm$core$Basics$identity; var $elm$url$Url$Parser$mapState = F2( function (func, _v0) { - var visited = _v0.visited; - var unvisited = _v0.unvisited; - var params = _v0.params; - var frag = _v0.frag; - var value = _v0.value; + var visited = _v0.W; + var unvisited = _v0.N; + var params = _v0.fB; + var frag = _v0.S; + var value = _v0.ez; return A5( $elm$url$Url$Parser$State, visited, @@ -10892,110 +6013,120 @@ var $elm$url$Url$Parser$mapState = F2( }); var $elm$url$Url$Parser$map = F2( function (subValue, _v0) { - var parseArg = _v0.a; - return $elm$url$Url$Parser$Parser( - function (_v1) { - var visited = _v1.visited; - var unvisited = _v1.unvisited; - var params = _v1.params; - var frag = _v1.frag; - var value = _v1.value; - return A2( - $elm$core$List$map, - $elm$url$Url$Parser$mapState(value), - parseArg( - A5($elm$url$Url$Parser$State, visited, unvisited, params, frag, subValue))); - }); - }); -var $elm$url$Url$Parser$oneOf = function (parsers) { - return $elm$url$Url$Parser$Parser( - function (state) { + var parseArg = _v0; + return function (_v1) { + var visited = _v1.W; + var unvisited = _v1.N; + var params = _v1.fB; + var frag = _v1.S; + var value = _v1.ez; return A2( - $elm$core$List$concatMap, - function (_v0) { - var parser = _v0.a; - return parser(state); - }, - parsers); - }); + $elm$core$List$map, + $elm$url$Url$Parser$mapState(value), + parseArg( + A5($elm$url$Url$Parser$State, visited, unvisited, params, frag, subValue))); + }; + }); +var $elm$core$List$append = F2( + function (xs, ys) { + if (!ys.b) { + return xs; + } else { + return A3($elm$core$List$foldr, $elm$core$List$cons, ys, xs); + } + }); +var $elm$core$List$concat = function (lists) { + return A3($elm$core$List$foldr, $elm$core$List$append, _List_Nil, lists); +}; +var $elm$core$List$concatMap = F2( + function (f, list) { + return $elm$core$List$concat( + A2($elm$core$List$map, f, list)); + }); +var $elm$url$Url$Parser$oneOf = function (parsers) { + return function (state) { + return A2( + $elm$core$List$concatMap, + function (_v0) { + var parser = _v0; + return parser(state); + }, + parsers); + }; }; var $elm$url$Url$Parser$s = function (str) { - return $elm$url$Url$Parser$Parser( - function (_v0) { - var visited = _v0.visited; - var unvisited = _v0.unvisited; - var params = _v0.params; - var frag = _v0.frag; - var value = _v0.value; - if (!unvisited.b) { - return _List_Nil; - } else { - var next = unvisited.a; - var rest = unvisited.b; - return _Utils_eq(next, str) ? _List_fromArray( - [ - A5( - $elm$url$Url$Parser$State, - A2($elm$core$List$cons, next, visited), - rest, - params, - frag, - value) - ]) : _List_Nil; - } - }); + return function (_v0) { + var visited = _v0.W; + var unvisited = _v0.N; + var params = _v0.fB; + var frag = _v0.S; + var value = _v0.ez; + if (!unvisited.b) { + return _List_Nil; + } else { + var next = unvisited.a; + var rest = unvisited.b; + return _Utils_eq(next, str) ? _List_fromArray( + [ + A5( + $elm$url$Url$Parser$State, + A2($elm$core$List$cons, next, visited), + rest, + params, + frag, + value) + ]) : _List_Nil; + } + }; }; var $elm$url$Url$Parser$slash = F2( function (_v0, _v1) { - var parseBefore = _v0.a; - var parseAfter = _v1.a; - return $elm$url$Url$Parser$Parser( - function (state) { - return A2( - $elm$core$List$concatMap, - parseAfter, - parseBefore(state)); - }); + var parseBefore = _v0; + var parseAfter = _v1; + return function (state) { + return A2( + $elm$core$List$concatMap, + parseAfter, + parseBefore(state)); + }; }); var $elm$url$Url$Parser$custom = F2( function (tipe, stringToSomething) { - return $elm$url$Url$Parser$Parser( - function (_v0) { - var visited = _v0.visited; - var unvisited = _v0.unvisited; - var params = _v0.params; - var frag = _v0.frag; - var value = _v0.value; - if (!unvisited.b) { - return _List_Nil; + return function (_v0) { + var visited = _v0.W; + var unvisited = _v0.N; + var params = _v0.fB; + var frag = _v0.S; + var value = _v0.ez; + if (!unvisited.b) { + return _List_Nil; + } else { + var next = unvisited.a; + var rest = unvisited.b; + var _v2 = stringToSomething(next); + if (!_v2.$) { + var nextValue = _v2.a; + return _List_fromArray( + [ + A5( + $elm$url$Url$Parser$State, + A2($elm$core$List$cons, next, visited), + rest, + params, + frag, + value(nextValue)) + ]); } else { - var next = unvisited.a; - var rest = unvisited.b; - var _v2 = stringToSomething(next); - if (_v2.$ === 'Just') { - var nextValue = _v2.a; - return _List_fromArray( - [ - A5( - $elm$url$Url$Parser$State, - A2($elm$core$List$cons, next, visited), - rest, - params, - frag, - value(nextValue)) - ]); - } else { - return _List_Nil; - } + return _List_Nil; } - }); + } + }; }); var $elm$url$Url$Parser$string = A2($elm$url$Url$Parser$custom, 'STRING', $elm$core$Maybe$Just); -var $elm$url$Url$Parser$top = $elm$url$Url$Parser$Parser( - function (state) { - return _List_fromArray( - [state]); - }); +var $elm$url$Url$Parser$top = function (state) { + return _List_fromArray( + [state]); +}; var $author$project$Spa$Generated$Route$routes = $elm$url$Url$Parser$oneOf( _List_fromArray( [ @@ -11026,7 +6157,7 @@ var $author$project$Spa$Generated$Route$routes = $elm$url$Url$Parser$oneOf( A2( $elm$url$Url$Parser$map, function (username) { - return {username: username}; + return {cf: username}; }, A2( $elm$url$Url$Parser$slash, @@ -11034,30 +6165,42 @@ var $author$project$Spa$Generated$Route$routes = $elm$url$Url$Parser$oneOf( $elm$url$Url$Parser$string))) ])); var $author$project$Spa$Generated$Route$fromUrl = $elm$url$Url$Parser$parse($author$project$Spa$Generated$Route$routes); +var $elm$core$Maybe$withDefault = F2( + function (_default, maybe) { + if (!maybe.$) { + var value = maybe.a; + return value; + } else { + return _default; + } + }); var $author$project$Utils$Route$fromUrl = A2( $elm$core$Basics$composeR, $author$project$Spa$Generated$Route$fromUrl, $elm$core$Maybe$withDefault($author$project$Spa$Generated$Route$NotFound)); var $author$project$Shared$Model = F3( function (url, key, user) { - return {key: key, url: url, user: user}; + return {fd: key, f_: url, O: user}; }); +var $elm$json$Json$Decode$decodeValue = _Json_run; var $author$project$Api$User$User = F3( function (email, token, username) { - return {email: email, token: token, username: username}; + return {av: email, c9: token, cf: username}; }); -var $author$project$Api$Token$Token = function (a) { - return {$: 'Token', a: a}; -}; -var $author$project$Api$Token$decoder = A2($elm$json$Json$Decode$map, $author$project$Api$Token$Token, $elm$json$Json$Decode$string); +var $author$project$Api$Token$Token = $elm$core$Basics$identity; +var $elm$json$Json$Decode$string = _Json_decodeString; +var $author$project$Api$Token$decoder = A2($elm$json$Json$Decode$map, $elm$core$Basics$identity, $elm$json$Json$Decode$string); +var $elm$json$Json$Decode$field = _Json_decodeField; +var $elm$json$Json$Decode$map3 = _Json_map3; var $author$project$Api$User$decoder = A4( $elm$json$Json$Decode$map3, $author$project$Api$User$User, A2($elm$json$Json$Decode$field, 'email', $elm$json$Json$Decode$string), A2($elm$json$Json$Decode$field, 'token', $author$project$Api$Token$decoder), A2($elm$json$Json$Decode$field, 'username', $elm$json$Json$Decode$string)); +var $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil); var $elm$core$Result$toMaybe = function (result) { - if (result.$ === 'Ok') { + if (!result.$) { var v = result.a; return $elm$core$Maybe$Just(v); } else { @@ -11076,67 +6219,67 @@ var $author$project$Shared$init = F3( $elm$core$Platform$Cmd$none); }); var $author$project$Spa$Generated$Pages$Login__Model = function (a) { - return {$: 'Login__Model', a: a}; + return {$: 1, a: a}; }; var $author$project$Spa$Generated$Pages$Login__Msg = function (a) { - return {$: 'Login__Msg', a: a}; + return {$: 1, a: a}; }; var $author$project$Spa$Generated$Pages$NotFound__Model = function (a) { - return {$: 'NotFound__Model', a: a}; + return {$: 2, a: a}; }; var $author$project$Spa$Generated$Pages$NotFound__Msg = function (a) { - return {$: 'NotFound__Msg', a: a}; + return {$: 2, a: a}; }; var $author$project$Spa$Generated$Pages$Profile__Username_String__Model = function (a) { - return {$: 'Profile__Username_String__Model', a: a}; + return {$: 6, a: a}; }; var $author$project$Spa$Generated$Pages$Profile__Username_String__Msg = function (a) { - return {$: 'Profile__Username_String__Msg', a: a}; + return {$: 6, a: a}; }; var $author$project$Spa$Generated$Pages$Projects__Model = function (a) { - return {$: 'Projects__Model', a: a}; + return {$: 3, a: a}; }; var $author$project$Spa$Generated$Pages$Projects__Msg = function (a) { - return {$: 'Projects__Msg', a: a}; + return {$: 3, a: a}; }; var $author$project$Spa$Generated$Pages$Register__Model = function (a) { - return {$: 'Register__Model', a: a}; + return {$: 4, a: a}; }; var $author$project$Spa$Generated$Pages$Register__Msg = function (a) { - return {$: 'Register__Msg', a: a}; + return {$: 4, a: a}; }; var $author$project$Spa$Generated$Pages$Settings__Model = function (a) { - return {$: 'Settings__Model', a: a}; + return {$: 5, a: a}; }; var $author$project$Spa$Generated$Pages$Settings__Msg = function (a) { - return {$: 'Settings__Msg', a: a}; + return {$: 5, a: a}; }; var $author$project$Spa$Generated$Pages$Top__Model = function (a) { - return {$: 'Top__Model', a: a}; + return {$: 0, a: a}; }; var $author$project$Spa$Generated$Pages$Top__Msg = function (a) { - return {$: 'Top__Msg', a: a}; + return {$: 0, a: a}; }; var $author$project$Spa$Page$application = function (page) { return page; }; var $author$project$Pages$Login$Model = F5( function (user, key, url, email, password) { - return {email: email, key: key, password: password, url: url, user: user}; + return {av: email, fd: key, cN: password, f_: url, O: user}; }); -var $author$project$Api$Data$NotAsked = {$: 'NotAsked'}; +var $author$project$Api$Data$NotAsked = {$: 0}; var $author$project$Api$Data$Success = function (a) { - return {$: 'Success', a: a}; + return {$: 3, a: a}; }; var $author$project$Pages$Login$init = F2( function (shared, _v0) { - var key = _v0.key; + var key = _v0.fd; return _Utils_Tuple2( A5( $author$project$Pages$Login$Model, function () { - var _v1 = shared.user; - if (_v1.$ === 'Just') { + var _v1 = shared.O; + if (!_v1.$) { var user = _v1.a; return $author$project$Api$Data$Success(user); } else { @@ -11144,7 +6287,7 @@ var $author$project$Pages$Login$init = F2( } }(), key, - shared.url, + shared.f_, '', ''), $elm$core$Platform$Cmd$none); @@ -11154,7 +6297,7 @@ var $author$project$Pages$Login$load = F2( return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); }); var $author$project$Api$Data$toMaybe = function (data) { - if (data.$ === 'Success') { + if (data.$ === 3) { var value = data.a; return $elm$core$Maybe$Just(value); } else { @@ -11166,13 +6309,13 @@ var $author$project$Pages$Login$save = F2( return _Utils_update( shared, { - user: function () { - var _v0 = $author$project$Api$Data$toMaybe(model.user); - if (_v0.$ === 'Just') { + O: function () { + var _v0 = $author$project$Api$Data$toMaybe(model.O); + if (!_v0.$) { var user = _v0.a; return $elm$core$Maybe$Just(user); } else { - return shared.user; + return shared.O; } }() }); @@ -11183,8 +6326,11 @@ var $author$project$Pages$Login$subscriptions = function (_v0) { return $elm$core$Platform$Sub$none; }; var $author$project$Pages$Login$GotUser = function (a) { - return {$: 'GotUser', a: a}; + return {$: 2, a: a}; }; +var $elm$json$Json$Decode$decodeString = _Json_runOnString; +var $elm$json$Json$Decode$keyValuePairs = _Json_decodeKeyValuePairs; +var $elm$json$Json$Decode$list = _Json_decodeList; var $author$project$Api$Data$errorDecoder = A2( $elm$json$Json$Decode$map, $elm$core$List$concatMap( @@ -11205,25 +6351,25 @@ var $author$project$Api$Data$errorDecoder = A2( $elm$json$Json$Decode$list($elm$json$Json$Decode$string)))); var $elm$http$Http$BadStatus_ = F2( function (a, b) { - return {$: 'BadStatus_', a: a, b: b}; + return {$: 3, a: a, b: b}; }); var $elm$http$Http$BadUrl_ = function (a) { - return {$: 'BadUrl_', a: a}; + return {$: 0, a: a}; }; var $elm$http$Http$GoodStatus_ = F2( function (a, b) { - return {$: 'GoodStatus_', a: a, b: b}; + return {$: 4, a: a, b: b}; }); -var $elm$http$Http$NetworkError_ = {$: 'NetworkError_'}; +var $elm$http$Http$NetworkError_ = {$: 2}; var $elm$http$Http$Receiving = function (a) { - return {$: 'Receiving', a: a}; + return {$: 1, a: a}; }; var $elm$http$Http$Sending = function (a) { - return {$: 'Sending', a: a}; + return {$: 0, a: a}; }; -var $elm$http$Http$Timeout_ = {$: 'Timeout_'}; +var $elm$http$Http$Timeout_ = {$: 1}; var $elm$core$Maybe$isJust = function (maybe) { - if (maybe.$ === 'Just') { + if (!maybe.$) { return true; } else { return false; @@ -11239,10 +6385,10 @@ var $elm$http$Http$expectStringResponse = F2( A2($elm$core$Basics$composeR, toResult, toMsg)); }); var $author$project$Api$Data$Failure = function (a) { - return {$: 'Failure', a: a}; + return {$: 2, a: a}; }; var $author$project$Api$Data$fromResult = function (result) { - if (result.$ === 'Ok') { + if (!result.$) { var value = result.a; return $author$project$Api$Data$Success(value); } else { @@ -11257,22 +6403,22 @@ var $author$project$Api$Data$expectJson = F2( A2($elm$core$Basics$composeR, $author$project$Api$Data$fromResult, toMsg), function (response) { switch (response.$) { - case 'BadUrl_': + case 0: return $elm$core$Result$Err( _List_fromArray( ['Bad URL'])); - case 'Timeout_': + case 1: return $elm$core$Result$Err( _List_fromArray( ['Request timeout'])); - case 'NetworkError_': + case 2: return $elm$core$Result$Err( _List_fromArray( ['Connection issues'])); - case 'BadStatus_': + case 3: var body = response.b; var _v1 = A2($elm$json$Json$Decode$decodeString, $author$project$Api$Data$errorDecoder, body); - if (_v1.$ === 'Ok') { + if (!_v1.$) { var errors = _v1.a; return $elm$core$Result$Err(errors); } else { @@ -11283,7 +6429,7 @@ var $author$project$Api$Data$expectJson = F2( default: var body = response.b; var _v2 = A2($elm$json$Json$Decode$decodeString, decoder, body); - if (_v2.$ === 'Ok') { + if (!_v2.$) { var value = _v2.a; return $elm$core$Result$Ok(value); } else { @@ -11307,11 +6453,11 @@ var $elm$http$Http$multipartBody = function (parts) { _Http_toFormData(parts)); }; var $elm$http$Http$Request = function (a) { - return {$: 'Request', a: a}; + return {$: 1, a: a}; }; var $elm$http$Http$State = F2( function (reqs, subs) { - return {reqs: reqs, subs: subs}; + return {d5: reqs, em: subs}; }); var $elm$http$Http$init = $elm$core$Task$succeed( A2($elm$http$Http$State, $elm$core$Dict$empty, _List_Nil)); @@ -11326,10 +6472,10 @@ var $elm$http$Http$updateReqs = F3( } else { var cmd = cmds.a; var otherCmds = cmds.b; - if (cmd.$ === 'Cancel') { + if (!cmd.$) { var tracker = cmd.a; var _v2 = A2($elm$core$Dict$get, tracker, reqs); - if (_v2.$ === 'Nothing') { + if (_v2.$ === 1) { var $temp$router = router, $temp$cmds = otherCmds, $temp$reqs = reqs; @@ -11355,8 +6501,8 @@ var $elm$http$Http$updateReqs = F3( return A2( $elm$core$Task$andThen, function (pid) { - var _v4 = req.tracker; - if (_v4.$ === 'Nothing') { + var _v4 = req.fY; + if (_v4.$ === 1) { return A3($elm$http$Http$updateReqs, router, otherCmds, reqs); } else { var tracker = _v4.a; @@ -11385,7 +6531,25 @@ var $elm$http$Http$onEffects = F4( return $elm$core$Task$succeed( A2($elm$http$Http$State, reqs, subs)); }, - A3($elm$http$Http$updateReqs, router, cmds, state.reqs)); + A3($elm$http$Http$updateReqs, router, cmds, state.d5)); + }); +var $elm$core$List$maybeCons = F3( + function (f, mx, xs) { + var _v0 = f(mx); + if (!_v0.$) { + var x = _v0.a; + return A2($elm$core$List$cons, x, xs); + } else { + return xs; + } + }); +var $elm$core$List$filterMap = F2( + function (f, xs) { + return A3( + $elm$core$List$foldr, + $elm$core$List$maybeCons(f), + _List_Nil, + xs); }); var $elm$http$Http$maybeSend = F4( function (router, desiredTracker, progress, _v0) { @@ -11410,34 +6574,34 @@ var $elm$http$Http$onSelfMsg = F3( A2( $elm$core$List$filterMap, A3($elm$http$Http$maybeSend, router, tracker, progress), - state.subs))); + state.em))); }); var $elm$http$Http$Cancel = function (a) { - return {$: 'Cancel', a: a}; + return {$: 0, a: a}; }; var $elm$http$Http$cmdMap = F2( function (func, cmd) { - if (cmd.$ === 'Cancel') { + if (!cmd.$) { var tracker = cmd.a; return $elm$http$Http$Cancel(tracker); } else { var r = cmd.a; return $elm$http$Http$Request( { - allowCookiesFromOtherDomains: r.allowCookiesFromOtherDomains, - body: r.body, - expect: A2(_Http_mapExpect, func, r.expect), - headers: r.headers, - method: r.method, - timeout: r.timeout, - tracker: r.tracker, - url: r.url + eH: r.eH, + eJ: r.eJ, + eX: A2(_Http_mapExpect, func, r.eX), + e3: r.e3, + fh: r.fh, + fQ: r.fQ, + fY: r.fY, + f_: r.f_ }); } }); var $elm$http$Http$MySub = F2( function (a, b) { - return {$: 'MySub', a: a, b: b}; + return {$: 0, a: a, b: b}; }); var $elm$http$Http$subMap = F2( function (func, _v0) { @@ -11454,28 +6618,28 @@ var $elm$http$Http$subscription = _Platform_leaf('Http'); var $elm$http$Http$request = function (r) { return $elm$http$Http$command( $elm$http$Http$Request( - {allowCookiesFromOtherDomains: false, body: r.body, expect: r.expect, headers: r.headers, method: r.method, timeout: r.timeout, tracker: r.tracker, url: r.url})); + {eH: false, eJ: r.eJ, eX: r.eX, e3: r.e3, fh: r.fh, fQ: r.fQ, fY: r.fY, f_: r.f_})); }; var $elm$http$Http$post = function (r) { return $elm$http$Http$request( - {body: r.body, expect: r.expect, headers: _List_Nil, method: 'POST', timeout: $elm$core$Maybe$Nothing, tracker: $elm$core$Maybe$Nothing, url: r.url}); + {eJ: r.eJ, eX: r.eX, e3: _List_Nil, fh: 'POST', fQ: $elm$core$Maybe$Nothing, fY: $elm$core$Maybe$Nothing, f_: r.f_}); }; var $elm$http$Http$stringPart = _Http_pair; var $author$project$Api$User$authentication = function (options) { var body = $elm$http$Http$multipartBody( _List_fromArray( [ - A2($elm$http$Http$stringPart, 'username', options.user.email), - A2($elm$http$Http$stringPart, 'password', options.user.password) + A2($elm$http$Http$stringPart, 'username', options.O.av), + A2($elm$http$Http$stringPart, 'password', options.O.cN) ])); return $elm$http$Http$post( { - body: body, - expect: A2( + eJ: body, + eX: A2( $author$project$Api$Data$expectJson, - options.onResponse, + options.fv, A2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder)), - url: $author$project$Api$User$loginUrl(options.browserLocation) + f_: $author$project$Api$User$loginUrl(options.eL) }); }; var $elm$browser$Browser$Navigation$pushUrl = _Browser_pushUrl; @@ -11483,25 +6647,25 @@ var $elm$core$String$append = _String_append; var $author$project$Spa$Generated$Route$toString = function (route) { var segments = function () { switch (route.$) { - case 'Top': + case 0: return _List_Nil; - case 'Login': + case 1: return _List_fromArray( ['login']); - case 'NotFound': + case 2: return _List_fromArray( ['not-found']); - case 'Projects': + case 3: return _List_fromArray( ['projects']); - case 'Register': + case 4: return _List_fromArray( ['register']); - case 'Settings': + case 5: return _List_fromArray( ['settings']); default: - var username = route.a.username; + var username = route.a.cf; return _List_fromArray( ['profile', username]); } @@ -11518,23 +6682,37 @@ var $author$project$Utils$Route$navigate = F2( key, $author$project$Spa$Generated$Route$toString(route)); }); +var $elm$json$Json$Encode$string = _Json_wrap; var $author$project$Api$Token$encode = function (_v0) { - var token = _v0.a; + var token = _v0; return $elm$json$Json$Encode$string(token); }; +var $elm$json$Json$Encode$object = function (pairs) { + return _Json_wrap( + A3( + $elm$core$List$foldl, + F2( + function (_v0, obj) { + var k = _v0.a; + var v = _v0.b; + return A3(_Json_addField, k, v, obj); + }), + _Json_emptyObject(0), + pairs)); +}; var $author$project$Api$User$encode = function (user) { return $elm$json$Json$Encode$object( _List_fromArray( [ _Utils_Tuple2( 'username', - $elm$json$Json$Encode$string(user.username)), + $elm$json$Json$Encode$string(user.cf)), _Utils_Tuple2( 'email', - $elm$json$Json$Encode$string(user.email)), + $elm$json$Json$Encode$string(user.av)), _Utils_Tuple2( 'token', - $author$project$Api$Token$encode(user.token)) + $author$project$Api$Token$encode(user.c9)) ])); }; var $author$project$Ports$outgoing = _Platform_outgoingPort( @@ -11545,30 +6723,30 @@ var $author$project$Ports$outgoing = _Platform_outgoingPort( [ _Utils_Tuple2( 'data', - $elm$core$Basics$identity($.data)), + $elm$core$Basics$identity($.cs)), _Utils_Tuple2( 'tag', - $elm$json$Json$Encode$string($.tag)) + $elm$json$Json$Encode$string($.c7)) ])); }); var $author$project$Ports$saveUser = function (user) { return $author$project$Ports$outgoing( { - data: $author$project$Api$User$encode(user), - tag: 'saveUser' + cs: $author$project$Api$User$encode(user), + c7: 'saveUser' }); }; var $author$project$Pages$Login$update = F2( function (msg, model) { switch (msg.$) { - case 'Updated': - if (msg.a.$ === 'Email') { + case 0: + if (!msg.a) { var _v1 = msg.a; var email = msg.b; return _Utils_Tuple2( _Utils_update( model, - {email: email}), + {av: email}), $elm$core$Platform$Cmd$none); } else { var _v2 = msg.a; @@ -11576,33 +6754,33 @@ var $author$project$Pages$Login$update = F2( return _Utils_Tuple2( _Utils_update( model, - {password: password}), + {cN: password}), $elm$core$Platform$Cmd$none); } - case 'AttemptedSignIn': + case 1: return _Utils_Tuple2( model, $author$project$Api$User$authentication( { - browserLocation: model.url.host, - onResponse: $author$project$Pages$Login$GotUser, - user: {email: model.email, password: model.password} + eL: model.f_.e6, + fv: $author$project$Pages$Login$GotUser, + O: {av: model.av, cN: model.cN} })); default: var user = msg.a; return _Utils_Tuple2( _Utils_update( model, - {user: user}), + {O: user}), function () { var _v3 = $author$project$Api$Data$toMaybe(user); - if (_v3.$ === 'Just') { + if (!_v3.$) { var user_ = _v3.a; return $elm$core$Platform$Cmd$batch( _List_fromArray( [ $author$project$Ports$saveUser(user_), - A2($author$project$Utils$Route$navigate, model.key, $author$project$Spa$Generated$Route$Projects) + A2($author$project$Utils$Route$navigate, model.fd, $author$project$Spa$Generated$Route$Projects) ])); } else { return $elm$core$Platform$Cmd$none; @@ -11610,21 +6788,39 @@ var $author$project$Pages$Login$update = F2( }()); } }); -var $author$project$Pages$Login$AttemptedSignIn = {$: 'AttemptedSignIn'}; -var $author$project$Pages$Login$Email = {$: 'Email'}; -var $author$project$Pages$Login$Password = {$: 'Password'}; +var $author$project$Pages$Login$AttemptedSignIn = {$: 1}; +var $author$project$Pages$Login$Email = 0; +var $author$project$Pages$Login$Password = 1; var $author$project$Pages$Login$Updated = F2( function (a, b) { - return {$: 'Updated', a: a, b: b}; + return {$: 0, a: a, b: b}; + }); +var $elm$html$Html$a = _VirtualDom_node('a'); +var $elm$html$Html$button = _VirtualDom_node('button'); +var $elm$html$Html$Attributes$stringProperty = F2( + function (key, string) { + return A2( + _VirtualDom_property, + key, + $elm$json$Json$Encode$string(string)); }); +var $elm$html$Html$Attributes$class = $elm$html$Html$Attributes$stringProperty('className'); +var $elm$html$Html$div = _VirtualDom_node('div'); var $elm$html$Html$form = _VirtualDom_node('form'); var $elm$html$Html$h1 = _VirtualDom_node('h1'); +var $elm$html$Html$Attributes$href = function (url) { + return A2( + $elm$html$Html$Attributes$stringProperty, + 'href', + _VirtualDom_noJavaScriptUri(url)); +}; var $elm$html$Html$Events$alwaysPreventDefault = function (msg) { return _Utils_Tuple2(msg, true); }; var $elm$virtual_dom$VirtualDom$MayPreventDefault = function (a) { - return {$: 'MayPreventDefault', a: a}; + return {$: 2, a: a}; }; +var $elm$virtual_dom$VirtualDom$on = _VirtualDom_on; var $elm$html$Html$Events$preventDefaultOn = F2( function (event, decoder) { return A2( @@ -11641,6 +6837,18 @@ var $elm$html$Html$Events$onSubmit = function (msg) { $elm$html$Html$Events$alwaysPreventDefault, $elm$json$Json$Decode$succeed(msg))); }; +var $elm$html$Html$p = _VirtualDom_node('p'); +var $elm$virtual_dom$VirtualDom$text = _VirtualDom_text; +var $elm$html$Html$text = $elm$virtual_dom$VirtualDom$text; +var $elm$core$List$isEmpty = function (xs) { + if (!xs.b) { + return true; + } else { + return false; + } +}; +var $elm$html$Html$li = _VirtualDom_node('li'); +var $elm$html$Html$ul = _VirtualDom_node('ul'); var $author$project$Components$ErrorList$view = function (reasons) { return $elm$core$List$isEmpty(reasons) ? $elm$html$Html$text('') : A2( $elm$html$Html$ul, @@ -11662,7 +6870,41 @@ var $author$project$Components$ErrorList$view = function (reasons) { reasons)); }; var $elm$html$Html$fieldset = _VirtualDom_node('fieldset'); +var $elm$html$Html$input = _VirtualDom_node('input'); +var $elm$html$Html$Events$alwaysStop = function (x) { + return _Utils_Tuple2(x, true); +}; +var $elm$virtual_dom$VirtualDom$MayStopPropagation = function (a) { + return {$: 1, a: a}; +}; +var $elm$html$Html$Events$stopPropagationOn = F2( + function (event, decoder) { + return A2( + $elm$virtual_dom$VirtualDom$on, + event, + $elm$virtual_dom$VirtualDom$MayStopPropagation(decoder)); + }); +var $elm$json$Json$Decode$at = F2( + function (fields, decoder) { + return A3($elm$core$List$foldr, $elm$json$Json$Decode$field, decoder, fields); + }); +var $elm$html$Html$Events$targetValue = A2( + $elm$json$Json$Decode$at, + _List_fromArray( + ['target', 'value']), + $elm$json$Json$Decode$string); +var $elm$html$Html$Events$onInput = function (tagger) { + return A2( + $elm$html$Html$Events$stopPropagationOn, + 'input', + A2( + $elm$json$Json$Decode$map, + $elm$html$Html$Events$alwaysStop, + A2($elm$json$Json$Decode$map, tagger, $elm$html$Html$Events$targetValue))); +}; var $elm$html$Html$Attributes$placeholder = $elm$html$Html$Attributes$stringProperty('placeholder'); +var $elm$html$Html$Attributes$type_ = $elm$html$Html$Attributes$stringProperty('type'); +var $elm$html$Html$Attributes$value = $elm$html$Html$Attributes$stringProperty('value'); var $author$project$Components$UserForm$viewField = function (options) { return A2( $elm$html$Html$fieldset, @@ -11677,10 +6919,10 @@ var $author$project$Components$UserForm$viewField = function (options) { _List_fromArray( [ $elm$html$Html$Attributes$class('form-control form-control-lg'), - $elm$html$Html$Attributes$placeholder(options.label), - $elm$html$Html$Attributes$type_(options.type_), - $elm$html$Html$Attributes$value(options.value), - $elm$html$Html$Events$onInput(options.onInput) + $elm$html$Html$Attributes$placeholder(options.fe), + $elm$html$Html$Attributes$type_(options.ex), + $elm$html$Html$Attributes$value(options.ez), + $elm$html$Html$Events$onInput(options.dU) ]), _List_Nil) ])); @@ -11726,7 +6968,7 @@ var $author$project$Components$UserForm$view = function (options) { ]), _List_fromArray( [ - $elm$html$Html$text(options.label) + $elm$html$Html$text(options.fe) ])), A2( $elm$html$Html$p, @@ -11741,16 +6983,16 @@ var $author$project$Components$UserForm$view = function (options) { _List_fromArray( [ $elm$html$Html$Attributes$href( - $author$project$Spa$Generated$Route$toString(options.alternateLink.route)) + $author$project$Spa$Generated$Route$toString(options.de.fI)) ]), _List_fromArray( [ - $elm$html$Html$text(options.alternateLink.label) + $elm$html$Html$text(options.de.fe) ])) ])), function () { - var _v0 = options.user; - if (_v0.$ === 'Failure') { + var _v0 = options.O; + if (_v0.$ === 2) { var reasons = _v0.a; return $author$project$Components$ErrorList$view(reasons); } else { @@ -11761,12 +7003,12 @@ var $author$project$Components$UserForm$view = function (options) { $elm$html$Html$form, _List_fromArray( [ - $elm$html$Html$Events$onSubmit(options.onFormSubmit) + $elm$html$Html$Events$onSubmit(options.ft) ]), $elm$core$List$concat( _List_fromArray( [ - A2($elm$core$List$map, $author$project$Components$UserForm$viewField, options.fields), + A2($elm$core$List$map, $author$project$Components$UserForm$viewField, options.e0), _List_fromArray( [ A2( @@ -11777,7 +7019,7 @@ var $author$project$Components$UserForm$view = function (options) { ]), _List_fromArray( [ - $elm$html$Html$text(options.label) + $elm$html$Html$text(options.fe) ])) ]) ]))) @@ -11788,56 +7030,60 @@ var $author$project$Components$UserForm$view = function (options) { }; var $author$project$Pages$Login$view = function (model) { return { - body: _List_fromArray( + eJ: _List_fromArray( [ $author$project$Components$UserForm$view( { - alternateLink: {label: 'Need an account?', route: $author$project$Spa$Generated$Route$Register}, - fields: _List_fromArray( + de: {fe: 'Need an account?', fI: $author$project$Spa$Generated$Route$Register}, + e0: _List_fromArray( [ { - label: 'Email', - onInput: $author$project$Pages$Login$Updated($author$project$Pages$Login$Email), - type_: 'text', - value: model.email + fe: 'Email', + dU: $author$project$Pages$Login$Updated(0), + ex: 'text', + ez: model.av }, { - label: 'Password', - onInput: $author$project$Pages$Login$Updated($author$project$Pages$Login$Password), - type_: 'password', - value: model.password + fe: 'Password', + dU: $author$project$Pages$Login$Updated(1), + ex: 'password', + ez: model.cN } ]), - label: 'Sign in', - onFormSubmit: $author$project$Pages$Login$AttemptedSignIn, - user: model.user + fe: 'Sign in', + ft: $author$project$Pages$Login$AttemptedSignIn, + O: model.O }) ]), - title: 'Sign in' + fR: 'Sign in' }; }; var $author$project$Pages$Login$page = $author$project$Spa$Page$application( - {init: $author$project$Pages$Login$init, load: $author$project$Pages$Login$load, save: $author$project$Pages$Login$save, subscriptions: $author$project$Pages$Login$subscriptions, update: $author$project$Pages$Login$update, view: $author$project$Pages$Login$view}); + {fb: $author$project$Pages$Login$init, fg: $author$project$Pages$Login$load, fJ: $author$project$Pages$Login$save, fN: $author$project$Pages$Login$subscriptions, fZ: $author$project$Pages$Login$update, f0: $author$project$Pages$Login$view}); +var $elm$core$Basics$always = F2( + function (a, _v0) { + return a; + }); var $author$project$Spa$Page$ignoreEffect = function (model) { return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); }; var $author$project$Spa$Page$static = function (page) { return { - init: F2( + fb: F2( function (_v0, url) { return _Utils_Tuple2(url, $elm$core$Platform$Cmd$none); }), - load: $elm$core$Basics$always( + fg: $elm$core$Basics$always( A2($elm$core$Basics$composeR, $elm$core$Basics$identity, $author$project$Spa$Page$ignoreEffect)), - save: $elm$core$Basics$always($elm$core$Basics$identity), - subscriptions: function (_v1) { + fJ: $elm$core$Basics$always($elm$core$Basics$identity), + fN: function (_v1) { return $elm$core$Platform$Sub$none; }, - update: F2( + fZ: F2( function (_v2, model) { return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); }), - view: page.view + f0: page.f0 }; }; var $elm$html$Html$h2 = _VirtualDom_node('h2'); @@ -11878,21 +7124,21 @@ var $author$project$Components$NotFound$view = A2( ])); var $author$project$Pages$NotFound$view = function (_v0) { return { - body: _List_fromArray( + eJ: _List_fromArray( [$author$project$Components$NotFound$view]), - title: '404' + fR: '404' }; }; var $author$project$Pages$NotFound$page = $author$project$Spa$Page$static( - {view: $author$project$Pages$NotFound$view}); + {f0: $author$project$Pages$NotFound$view}); var $author$project$Pages$Profile$Username_String$GotProfile = function (a) { - return {$: 'GotProfile', a: a}; + return {$: 0, a: a}; }; -var $author$project$Api$Data$Loading = {$: 'Loading'}; -var $author$project$Pages$Profile$Username_String$MyArticles = {$: 'MyArticles'}; +var $author$project$Api$Data$Loading = {$: 1}; +var $author$project$Pages$Profile$Username_String$MyArticles = 0; var $author$project$Api$Profile$Profile = F2( function (username, following) { - return {following: following, username: username}; + return {e1: following, cf: username}; }); var $elm$json$Json$Decode$bool = _Json_decodeBool; var $author$project$Api$Profile$decoder = A3( @@ -11903,18 +7149,18 @@ var $author$project$Api$Profile$decoder = A3( var $elm$http$Http$emptyBody = _Http_emptyBody; var $elm$http$Http$Header = F2( function (a, b) { - return {$: 'Header', a: a, b: b}; + return {$: 0, a: a, b: b}; }); var $elm$http$Http$header = $elm$http$Http$Header; var $author$project$Api$Token$request = F4( function (method, body, maybeToken, options) { return $elm$http$Http$request( { - body: body, - expect: options.expect, - headers: function () { - if (maybeToken.$ === 'Just') { - var token = maybeToken.a.a; + eJ: body, + eX: options.eX, + e3: function () { + if (!maybeToken.$) { + var token = maybeToken.a; return _List_fromArray( [ A2($elm$http$Http$header, 'Authorization', 'Bearer ' + token) @@ -11923,28 +7169,28 @@ var $author$project$Api$Token$request = F4( return _List_Nil; } }(), - method: method, - timeout: $elm$core$Maybe$Just(1000 * 60), - tracker: $elm$core$Maybe$Nothing, - url: options.url + fh: method, + fQ: $elm$core$Maybe$Just(1000 * 60), + fY: $elm$core$Maybe$Nothing, + f_: options.f_ }); }); var $author$project$Api$Token$get = A2($author$project$Api$Token$request, 'GET', $elm$http$Http$emptyBody); var $author$project$Api$Profile$get = function (options) { return A2( $author$project$Api$Token$get, - options.token, + options.c9, { - expect: A2( + eX: A2( $author$project$Api$Data$expectJson, - options.onResponse, + options.fv, A2($elm$json$Json$Decode$field, 'profile', $author$project$Api$Profile$decoder)), - url: 'https://conduit.productionready.io/api/profiles/' + options.username + f_: 'https://conduit.productionready.io/api/profiles/' + options.cf }); }; var $elm$core$Maybe$map = F2( function (f, maybe) { - if (maybe.$ === 'Just') { + if (!maybe.$) { var value = maybe.a; return $elm$core$Maybe$Just( f(value)); @@ -11954,20 +7200,20 @@ var $elm$core$Maybe$map = F2( }); var $author$project$Pages$Profile$Username_String$init = F2( function (shared, _v0) { - var params = _v0.params; + var params = _v0.fB; var token = A2( $elm$core$Maybe$map, function ($) { - return $.token; + return $.c9; }, - shared.user); + shared.O); return _Utils_Tuple2( - {listing: $author$project$Api$Data$Loading, page: 1, profile: $author$project$Api$Data$Loading, selectedTab: $author$project$Pages$Profile$Username_String$MyArticles, user: shared.user, username: params.username}, + {dM: $author$project$Api$Data$Loading, C: 1, cR: $author$project$Api$Data$Loading, cW: 0, O: shared.O, cf: params.cf}, $elm$core$Platform$Cmd$batch( _List_fromArray( [ $author$project$Api$Profile$get( - {onResponse: $author$project$Pages$Profile$Username_String$GotProfile, token: token, username: params.username}) + {fv: $author$project$Pages$Profile$Username_String$GotProfile, c9: token, cf: params.cf}) ]))); }); var $author$project$Pages$Profile$Username_String$load = F2( @@ -11986,9 +7232,9 @@ var $author$project$Pages$Profile$Username_String$update = F2( return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); }); var $author$project$Pages$Profile$Username_String$Clicked = function (a) { - return {$: 'Clicked', a: a}; + return {$: 2, a: a}; }; -var $author$project$Pages$Profile$Username_String$FavoritedArticles = {$: 'FavoritedArticles'}; +var $author$project$Pages$Profile$Username_String$FavoritedArticles = 1; var $elm$core$List$filter = F2( function (isGood, list) { return A3( @@ -12000,6 +7246,10 @@ var $elm$core$List$filter = F2( _List_Nil, list); }); +var $elm$core$Tuple$second = function (_v0) { + var y = _v0.b; + return y; +}; var $elm$html$Html$Attributes$classList = function (classes) { return $elm$html$Html$Attributes$class( A2( @@ -12010,6 +7260,22 @@ var $elm$html$Html$Attributes$classList = function (classes) { $elm$core$Tuple$first, A2($elm$core$List$filter, $elm$core$Tuple$second, classes)))); }; +var $elm$virtual_dom$VirtualDom$Normal = function (a) { + return {$: 0, a: a}; +}; +var $elm$html$Html$Events$on = F2( + function (event, decoder) { + return A2( + $elm$virtual_dom$VirtualDom$on, + event, + $elm$virtual_dom$VirtualDom$Normal(decoder)); + }); +var $elm$html$Html$Events$onClick = function (msg) { + return A2( + $elm$html$Html$Events$on, + 'click', + $elm$json$Json$Decode$succeed(msg)); +}; var $author$project$Pages$Profile$Username_String$viewProfile = F2( function (profile, model) { var viewTab = function (tab) { @@ -12033,14 +7299,14 @@ var $author$project$Pages$Profile$Username_String$viewProfile = F2( [ _Utils_Tuple2( 'active', - _Utils_eq(tab, model.selectedTab)) + _Utils_eq(tab, model.cW)) ])) ]), _List_fromArray( [ $elm$html$Html$text( function () { - if (tab.$ === 'MyArticles') { + if (!tab) { return 'My Articles'; } else { return 'Favorited Articles'; @@ -12067,16 +7333,16 @@ var $author$project$Pages$Profile$Username_String$viewProfile = F2( $elm$core$List$map, viewTab, _List_fromArray( - [$author$project$Pages$Profile$Username_String$MyArticles, $author$project$Pages$Profile$Username_String$FavoritedArticles]))) + [0, 1]))) ])); var isViewingOwnProfile = _Utils_eq( A2( $elm$core$Maybe$map, function ($) { - return $.username; + return $.cf; }, - model.user), - $elm$core$Maybe$Just(profile.username)); + model.O), + $elm$core$Maybe$Just(profile.cf)); return A2( $elm$html$Html$div, _List_fromArray( @@ -12105,63 +7371,72 @@ var $author$project$Pages$Profile$Username_String$viewProfile = F2( }); var $author$project$Pages$Profile$Username_String$view = function (model) { return { - body: function () { - var _v0 = model.profile; + eJ: function () { + var _v0 = model.cR; switch (_v0.$) { - case 'Success': + case 3: var profile = _v0.a; return _List_fromArray( [ A2($author$project$Pages$Profile$Username_String$viewProfile, profile, model) ]); - case 'Failure': + case 2: return _List_fromArray( [$author$project$Components$NotFound$view]); default: return _List_Nil; } }(), - title: 'Profile' + fR: 'Profile' }; }; var $author$project$Pages$Profile$Username_String$page = $author$project$Spa$Page$application( - {init: $author$project$Pages$Profile$Username_String$init, load: $author$project$Pages$Profile$Username_String$load, save: $author$project$Pages$Profile$Username_String$save, subscriptions: $author$project$Pages$Profile$Username_String$subscriptions, update: $author$project$Pages$Profile$Username_String$update, view: $author$project$Pages$Profile$Username_String$view}); + {fb: $author$project$Pages$Profile$Username_String$init, fg: $author$project$Pages$Profile$Username_String$load, fJ: $author$project$Pages$Profile$Username_String$save, fN: $author$project$Pages$Profile$Username_String$subscriptions, fZ: $author$project$Pages$Profile$Username_String$update, f0: $author$project$Pages$Profile$Username_String$view}); var $author$project$Pages$Projects$GotProjects = function (a) { - return {$: 'GotProjects', a: a}; + return {$: 0, a: a}; }; -var $author$project$Api$Project$Project = F6( - function (name, id, description, state, errormsg, gitrepository) { - return {description: description, errormsg: errormsg, gitrepository: gitrepository, id: id, name: name, state: state}; +var $author$project$Api$Project$Project = F5( + function (name, id, description, state, gitrepository) { + return {eS: description, e2: gitrepository, e9: id, fj: name, ej: state}; }); var $author$project$Api$Project$GitRepository = F2( function (url, version) { - return {url: url, version: version}; + return {f_: url, f$: version}; }); var $author$project$Api$Project$gitRepositoryDecoder = A3( $elm$json$Json$Decode$map2, $author$project$Api$Project$GitRepository, A2($elm$json$Json$Decode$field, 'url', $elm$json$Json$Decode$string), A2($elm$json$Json$Decode$field, 'version', $elm$json$Json$Decode$string)); -var $elm$json$Json$Decode$map6 = _Json_map6; -var $author$project$Api$Project$projectDecoder = A7( - $elm$json$Json$Decode$map6, +var $elm$json$Json$Decode$int = _Json_decodeInt; +var $elm$json$Json$Decode$map5 = _Json_map5; +var $author$project$Api$Project$ProjectState = F2( + function (state, errormsg) { + return {eV: errormsg, ej: state}; + }); +var $author$project$Api$Project$projectStateDecoder = A3( + $elm$json$Json$Decode$map2, + $author$project$Api$Project$ProjectState, + A2($elm$json$Json$Decode$field, 'state', $elm$json$Json$Decode$string), + A2($elm$json$Json$Decode$field, 'errormsg', $elm$json$Json$Decode$string)); +var $author$project$Api$Project$projectDecoder = A6( + $elm$json$Json$Decode$map5, $author$project$Api$Project$Project, A2($elm$json$Json$Decode$field, 'name', $elm$json$Json$Decode$string), A2($elm$json$Json$Decode$field, 'id', $elm$json$Json$Decode$int), A2($elm$json$Json$Decode$field, 'description', $elm$json$Json$Decode$string), - A2($elm$json$Json$Decode$field, 'state', $elm$json$Json$Decode$string), - A2($elm$json$Json$Decode$field, 'errormsg', $elm$json$Json$Decode$string), + A2($elm$json$Json$Decode$field, 'state', $author$project$Api$Project$projectStateDecoder), A2($elm$json$Json$Decode$field, 'gitrepository', $author$project$Api$Project$gitRepositoryDecoder)); var $author$project$Api$Project$list = function (options) { return A2( $author$project$Api$Token$get, - options.token, + options.c9, { - expect: A2( + eX: A2( $author$project$Api$Data$expectJson, - options.onResponse, + options.fv, $elm$json$Json$Decode$list($author$project$Api$Project$projectDecoder)), - url: options.urlPrefix + '/api/v1/projects' + f_: options.ey + '/api/v1/projects' }); }; var $author$project$Pages$Projects$makeUrl = function (host) { @@ -12171,25 +7446,25 @@ var $author$project$Pages$Projects$fetchProjects = F2( function (model, host) { return $author$project$Api$Project$list( { - onResponse: $author$project$Pages$Projects$GotProjects, - token: A2( + fv: $author$project$Pages$Projects$GotProjects, + c9: A2( $elm$core$Maybe$map, function ($) { - return $.token; + return $.c9; }, - model.user), - urlPrefix: $author$project$Pages$Projects$makeUrl(host) + model.O), + ey: $author$project$Pages$Projects$makeUrl(host) }); }); var $author$project$Pages$Projects$init = F2( function (shared, _v0) { - var model = {listing: $author$project$Api$Data$Loading, user: shared.user}; + var model = {dM: $author$project$Api$Data$Loading, O: shared.O}; return _Utils_Tuple2( model, $elm$core$Platform$Cmd$batch( _List_fromArray( [ - A2($author$project$Pages$Projects$fetchProjects, model, shared.url.host) + A2($author$project$Pages$Projects$fetchProjects, model, shared.f_.e6) ]))); }); var $author$project$Pages$Projects$load = F2( @@ -12205,12 +7480,12 @@ var $author$project$Pages$Projects$subscriptions = function (model) { }; var $author$project$Pages$Projects$update = F2( function (msg, model) { - if (msg.$ === 'GotProjects') { + if (!msg.$) { var listing = msg.a; return _Utils_Tuple2( _Utils_update( model, - {listing: listing}), + {dM: listing}), $elm$core$Platform$Cmd$none); } else { var project = msg.a; @@ -12220,9 +7495,10 @@ var $author$project$Pages$Projects$update = F2( var $elm$core$String$concat = function (strings) { return A2($elm$core$String$join, '', strings); }; +var $elm$html$Html$span = _VirtualDom_node('span'); var $elm$html$Html$Attributes$target = $elm$html$Html$Attributes$stringProperty('target'); var $author$project$Components$ProjectList$viewErrorDiv = function (listing) { - return ($elm$core$String$length(listing.errormsg) > 0) ? A2( + return ($elm$core$String$length(listing.ej.eV) > 0) ? A2( $elm$html$Html$div, _List_fromArray( [ @@ -12230,7 +7506,7 @@ var $author$project$Components$ProjectList$viewErrorDiv = function (listing) { ]), _List_fromArray( [ - $elm$html$Html$text(listing.errormsg) + $elm$html$Html$text(listing.ej.eV) ])) : $elm$html$Html$text(''); }; var $author$project$Components$ProjectList$viewProject = function (listing) { @@ -12247,14 +7523,14 @@ var $author$project$Components$ProjectList$viewProject = function (listing) { _List_Nil, _List_fromArray( [ - $elm$html$Html$text(listing.name) + $elm$html$Html$text(listing.fj) ])), A2( $elm$html$Html$p, _List_Nil, _List_fromArray( [ - $elm$html$Html$text(listing.description) + $elm$html$Html$text(listing.eS) ])), A2( $elm$html$Html$p, @@ -12271,7 +7547,7 @@ var $author$project$Components$ProjectList$viewProject = function (listing) { _List_fromArray( [ '/public/v1/projects/', - $elm$core$String$fromInt(listing.id) + $elm$core$String$fromInt(listing.e9) ]))) ]), _List_fromArray( @@ -12284,14 +7560,14 @@ var $author$project$Components$ProjectList$viewProject = function (listing) { _List_Nil, _List_fromArray( [ - $elm$html$Html$text(listing.gitrepository.url) + $elm$html$Html$text(listing.e2.f_) ])), A2( $elm$html$Html$p, _List_Nil, _List_fromArray( [ - $elm$html$Html$text(listing.gitrepository.version) + $elm$html$Html$text(listing.e2.f$) ])), A2( $elm$html$Html$span, @@ -12301,19 +7577,19 @@ var $author$project$Components$ProjectList$viewProject = function (listing) { ]), _List_fromArray( [ - $elm$html$Html$text(listing.state) + $elm$html$Html$text(listing.ej.ej) ])), $author$project$Components$ProjectList$viewErrorDiv(listing) ])); }; var $author$project$Components$ProjectList$view = function (options) { - var _v0 = options.projectListing; + var _v0 = options.fD; switch (_v0.$) { - case 'NotAsked': + case 0: return A2($elm$html$Html$div, _List_Nil, _List_Nil); - case 'Failure': + case 2: return A2($elm$html$Html$div, _List_Nil, _List_Nil); - case 'Loading': + case 1: return A2( $elm$html$Html$div, _List_fromArray( @@ -12337,7 +7613,7 @@ var $author$project$Components$ProjectList$view = function (options) { }; var $author$project$Pages$Projects$view = function (model) { return { - body: _List_fromArray( + eJ: _List_fromArray( [ A2( $elm$html$Html$div, @@ -12363,28 +7639,28 @@ var $author$project$Pages$Projects$view = function (model) { _List_fromArray( [ $author$project$Components$ProjectList$view( - {projectListing: model.listing, user: model.user}) + {fD: model.dM, O: model.O}) ])) ])) ]), - title: 'Projects' + fR: 'Projects' }; }; var $author$project$Pages$Projects$page = $author$project$Spa$Page$application( - {init: $author$project$Pages$Projects$init, load: $author$project$Pages$Projects$load, save: $author$project$Pages$Projects$save, subscriptions: $author$project$Pages$Projects$subscriptions, update: $author$project$Pages$Projects$update, view: $author$project$Pages$Projects$view}); + {fb: $author$project$Pages$Projects$init, fg: $author$project$Pages$Projects$load, fJ: $author$project$Pages$Projects$save, fN: $author$project$Pages$Projects$subscriptions, fZ: $author$project$Pages$Projects$update, f0: $author$project$Pages$Projects$view}); var $author$project$Pages$Register$Model = F5( function (user, key, username, email, password) { - return {email: email, key: key, password: password, user: user, username: username}; + return {av: email, fd: key, cN: password, O: user, cf: username}; }); var $author$project$Pages$Register$init = F2( function (shared, _v0) { - var key = _v0.key; + var key = _v0.fd; return _Utils_Tuple2( A5( $author$project$Pages$Register$Model, function () { - var _v1 = shared.user; - if (_v1.$ === 'Just') { + var _v1 = shared.O; + if (!_v1.$) { var user = _v1.a; return $author$project$Api$Data$Success(user); } else { @@ -12406,13 +7682,13 @@ var $author$project$Pages$Register$save = F2( return _Utils_update( shared, { - user: function () { - var _v0 = $author$project$Api$Data$toMaybe(model.user); - if (_v0.$ === 'Just') { + O: function () { + var _v0 = $author$project$Api$Data$toMaybe(model.O); + if (!_v0.$) { var user = _v0.a; return $elm$core$Maybe$Just(user); } else { - return shared.user; + return shared.O; } }() }); @@ -12421,7 +7697,7 @@ var $author$project$Pages$Register$subscriptions = function (_v0) { return $elm$core$Platform$Sub$none; }; var $author$project$Pages$Register$GotUser = function (a) { - return {$: 'GotUser', a: a}; + return {$: 2, a: a}; }; var $elm$http$Http$jsonBody = function (value) { return A2( @@ -12440,45 +7716,45 @@ var $author$project$Api$User$registration = function (options) { [ _Utils_Tuple2( 'username', - $elm$json$Json$Encode$string(options.user.username)), + $elm$json$Json$Encode$string(options.O.cf)), _Utils_Tuple2( 'email', - $elm$json$Json$Encode$string(options.user.email)), + $elm$json$Json$Encode$string(options.O.av)), _Utils_Tuple2( 'password', - $elm$json$Json$Encode$string(options.user.password)) + $elm$json$Json$Encode$string(options.O.cN)) ]))) ])); return $elm$http$Http$post( { - body: $elm$http$Http$jsonBody(body), - expect: A2( + eJ: $elm$http$Http$jsonBody(body), + eX: A2( $author$project$Api$Data$expectJson, - options.onResponse, + options.fv, A2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder)), - url: 'https://conduit.productionready.io/api/users' + f_: 'https://conduit.productionready.io/api/users' }); }; var $author$project$Pages$Register$update = F2( function (msg, model) { switch (msg.$) { - case 'Updated': - switch (msg.a.$) { - case 'Username': + case 0: + switch (msg.a) { + case 0: var _v1 = msg.a; var username = msg.b; return _Utils_Tuple2( _Utils_update( model, - {username: username}), + {cf: username}), $elm$core$Platform$Cmd$none); - case 'Email': + case 1: var _v2 = msg.a; var email = msg.b; return _Utils_Tuple2( _Utils_update( model, - {email: email}), + {av: email}), $elm$core$Platform$Cmd$none); default: var _v3 = msg.a; @@ -12486,32 +7762,32 @@ var $author$project$Pages$Register$update = F2( return _Utils_Tuple2( _Utils_update( model, - {password: password}), + {cN: password}), $elm$core$Platform$Cmd$none); } - case 'AttemptedSignUp': + case 1: return _Utils_Tuple2( model, $author$project$Api$User$registration( { - onResponse: $author$project$Pages$Register$GotUser, - user: {email: model.email, password: model.password, username: model.username} + fv: $author$project$Pages$Register$GotUser, + O: {av: model.av, cN: model.cN, cf: model.cf} })); default: var user = msg.a; return _Utils_Tuple2( _Utils_update( model, - {user: user}), + {O: user}), function () { var _v4 = $author$project$Api$Data$toMaybe(user); - if (_v4.$ === 'Just') { + if (!_v4.$) { var user_ = _v4.a; return $elm$core$Platform$Cmd$batch( _List_fromArray( [ $author$project$Ports$saveUser(user_), - A2($author$project$Utils$Route$navigate, model.key, $author$project$Spa$Generated$Route$Top) + A2($author$project$Utils$Route$navigate, model.fd, $author$project$Spa$Generated$Route$Top) ])); } else { return $elm$core$Platform$Cmd$none; @@ -12519,62 +7795,62 @@ var $author$project$Pages$Register$update = F2( }()); } }); -var $author$project$Pages$Register$AttemptedSignUp = {$: 'AttemptedSignUp'}; -var $author$project$Pages$Register$Email = {$: 'Email'}; -var $author$project$Pages$Register$Password = {$: 'Password'}; +var $author$project$Pages$Register$AttemptedSignUp = {$: 1}; +var $author$project$Pages$Register$Email = 1; +var $author$project$Pages$Register$Password = 2; var $author$project$Pages$Register$Updated = F2( function (a, b) { - return {$: 'Updated', a: a, b: b}; + return {$: 0, a: a, b: b}; }); -var $author$project$Pages$Register$Username = {$: 'Username'}; +var $author$project$Pages$Register$Username = 0; var $author$project$Pages$Register$view = function (model) { return { - body: _List_fromArray( + eJ: _List_fromArray( [ $author$project$Components$UserForm$view( { - alternateLink: {label: 'Have an account?', route: $author$project$Spa$Generated$Route$Login}, - fields: _List_fromArray( + de: {fe: 'Have an account?', fI: $author$project$Spa$Generated$Route$Login}, + e0: _List_fromArray( [ { - label: 'Your Name', - onInput: $author$project$Pages$Register$Updated($author$project$Pages$Register$Username), - type_: 'text', - value: model.username + fe: 'Your Name', + dU: $author$project$Pages$Register$Updated(0), + ex: 'text', + ez: model.cf }, { - label: 'Email', - onInput: $author$project$Pages$Register$Updated($author$project$Pages$Register$Email), - type_: 'email', - value: model.email + fe: 'Email', + dU: $author$project$Pages$Register$Updated(1), + ex: 'email', + ez: model.av }, { - label: 'Password', - onInput: $author$project$Pages$Register$Updated($author$project$Pages$Register$Password), - type_: 'password', - value: model.password + fe: 'Password', + dU: $author$project$Pages$Register$Updated(2), + ex: 'password', + ez: model.cN } ]), - label: 'Sign up', - onFormSubmit: $author$project$Pages$Register$AttemptedSignUp, - user: model.user + fe: 'Sign up', + ft: $author$project$Pages$Register$AttemptedSignUp, + O: model.O }) ]), - title: 'Sign up' + fR: 'Sign up' }; }; var $author$project$Pages$Register$page = $author$project$Spa$Page$application( - {init: $author$project$Pages$Register$init, load: $author$project$Pages$Register$load, save: $author$project$Pages$Register$save, subscriptions: $author$project$Pages$Register$subscriptions, update: $author$project$Pages$Register$update, view: $author$project$Pages$Register$view}); + {fb: $author$project$Pages$Register$init, fg: $author$project$Pages$Register$load, fJ: $author$project$Pages$Register$save, fN: $author$project$Pages$Register$subscriptions, fZ: $author$project$Pages$Register$update, f0: $author$project$Pages$Register$view}); var $author$project$Pages$Settings$init = F2( function (shared, _v0) { return _Utils_Tuple2( function () { - var _v1 = shared.user; - if (_v1.$ === 'Just') { + var _v1 = shared.O; + if (!_v1.$) { var user = _v1.a; - return {email: user.email, errors: _List_Nil, message: $elm$core$Maybe$Nothing, password: $elm$core$Maybe$Nothing, user: shared.user, username: user.username}; + return {av: user.av, ab: _List_Nil, ah: $elm$core$Maybe$Nothing, cN: $elm$core$Maybe$Nothing, O: shared.O, cf: user.cf}; } else { - return {email: '', errors: _List_Nil, message: $elm$core$Maybe$Nothing, password: $elm$core$Maybe$Nothing, user: shared.user, username: ''}; + return {av: '', ab: _List_Nil, ah: $elm$core$Maybe$Nothing, cN: $elm$core$Maybe$Nothing, O: shared.O, cf: ''}; } }(), $elm$core$Platform$Cmd$none); @@ -12585,13 +7861,13 @@ var $author$project$Pages$Settings$load = F2( }); var $author$project$Utils$Auth$protected = F2( function (view, model) { - var _v0 = model.user; - if (_v0.$ === 'Just') { + var _v0 = model.O; + if (!_v0.$) { var user = _v0.a; return A2(view, user, model); } else { return { - body: _List_fromArray( + eJ: _List_fromArray( [ A2( $elm$html$Html$div, @@ -12628,7 +7904,7 @@ var $author$project$Utils$Auth$protected = F2( ])) ])) ]), - title: '401' + fR: '401' }; } }); @@ -12636,17 +7912,17 @@ var $author$project$Pages$Settings$save = F2( function (model, shared) { return _Utils_update( shared, - {user: model.user}); + {O: model.O}); }); var $author$project$Pages$Settings$subscriptions = function (_v0) { return $elm$core$Platform$Sub$none; }; var $author$project$Pages$Settings$GotUser = function (a) { - return {$: 'GotUser', a: a}; + return {$: 2, a: a}; }; var $author$project$Api$Token$put = F2( function (token, options) { - return A4($author$project$Api$Token$request, 'PUT', options.body, token, options); + return A4($author$project$Api$Token$request, 'PUT', options.eJ, token, options); }); var $author$project$Api$User$update = function (options) { var body = $elm$json$Json$Encode$object( @@ -12662,14 +7938,14 @@ var $author$project$Api$User$update = function (options) { [ _Utils_Tuple2( 'username', - $elm$json$Json$Encode$string(options.user.username)), + $elm$json$Json$Encode$string(options.O.cf)), _Utils_Tuple2( 'email', - $elm$json$Json$Encode$string(options.user.email)) + $elm$json$Json$Encode$string(options.O.av)) ]), function () { - var _v0 = options.user.password; - if (_v0.$ === 'Just') { + var _v0 = options.O.cN; + if (!_v0.$) { var password = _v0.a; return _List_fromArray( [ @@ -12685,36 +7961,36 @@ var $author$project$Api$User$update = function (options) { ])); return A2( $author$project$Api$Token$put, - $elm$core$Maybe$Just(options.token), + $elm$core$Maybe$Just(options.c9), { - body: $elm$http$Http$jsonBody(body), - expect: A2( + eJ: $elm$http$Http$jsonBody(body), + eX: A2( $author$project$Api$Data$expectJson, - options.onResponse, + options.fv, A2($elm$json$Json$Decode$field, 'user', $author$project$Api$User$decoder)), - url: 'https://conduit.productionready.io/api/user' + f_: 'https://conduit.productionready.io/api/user' }); }; var $author$project$Pages$Settings$update = F2( function (msg, model) { switch (msg.$) { - case 'Updated': - switch (msg.a.$) { - case 'Username': + case 0: + switch (msg.a) { + case 0: var _v1 = msg.a; var value = msg.b; return _Utils_Tuple2( _Utils_update( model, - {username: value}), + {cf: value}), $elm$core$Platform$Cmd$none); - case 'Email': + case 1: var _v2 = msg.a; var value = msg.b; return _Utils_Tuple2( _Utils_update( model, - {email: value}), + {av: value}), $elm$core$Platform$Cmd$none); default: var _v3 = msg.a; @@ -12723,56 +7999,56 @@ var $author$project$Pages$Settings$update = F2( _Utils_update( model, { - password: $elm$core$Maybe$Just(value) + cN: $elm$core$Maybe$Just(value) }), $elm$core$Platform$Cmd$none); } - case 'SubmittedForm': + case 1: var user = msg.a; return _Utils_Tuple2( _Utils_update( model, - {errors: _List_Nil, message: $elm$core$Maybe$Nothing}), + {ab: _List_Nil, ah: $elm$core$Maybe$Nothing}), $author$project$Api$User$update( - {onResponse: $author$project$Pages$Settings$GotUser, token: user.token, user: model})); + {fv: $author$project$Pages$Settings$GotUser, c9: user.c9, O: model})); default: switch (msg.a.$) { - case 'Success': + case 3: var user = msg.a.a; return _Utils_Tuple2( _Utils_update( model, { - message: $elm$core$Maybe$Just('User updated!'), - user: $elm$core$Maybe$Just(user) + ah: $elm$core$Maybe$Just('User updated!'), + O: $elm$core$Maybe$Just(user) }), $author$project$Ports$saveUser(user)); - case 'Failure': + case 2: var reasons = msg.a.a; return _Utils_Tuple2( _Utils_update( model, - {errors: reasons}), + {ab: reasons}), $elm$core$Platform$Cmd$none); default: return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none); } } }); -var $author$project$Pages$Settings$Email = {$: 'Email'}; -var $author$project$Pages$Settings$Password = {$: 'Password'}; +var $author$project$Pages$Settings$Email = 1; +var $author$project$Pages$Settings$Password = 2; var $author$project$Pages$Settings$SubmittedForm = function (a) { - return {$: 'SubmittedForm', a: a}; + return {$: 1, a: a}; }; var $author$project$Pages$Settings$Updated = F2( function (a, b) { - return {$: 'Updated', a: a, b: b}; + return {$: 0, a: a, b: b}; }); -var $author$project$Pages$Settings$Username = {$: 'Username'}; +var $author$project$Pages$Settings$Username = 0; var $elm$html$Html$br = _VirtualDom_node('br'); var $author$project$Utils$Maybe$view = F2( function (maybe, toView) { - if (maybe.$ === 'Just') { + if (!maybe.$) { var value = maybe.a; return toView(value); } else { @@ -12782,7 +8058,7 @@ var $author$project$Utils$Maybe$view = F2( var $author$project$Pages$Settings$view = F2( function (user, model) { return { - body: _List_fromArray( + eJ: _List_fromArray( [ A2( $elm$html$Html$div, @@ -12827,10 +8103,10 @@ var $author$project$Pages$Settings$view = F2( $elm$html$Html$text('Your Settings') ])), A2($elm$html$Html$br, _List_Nil, _List_Nil), - $author$project$Components$ErrorList$view(model.errors), + $author$project$Components$ErrorList$view(model.ab), A2( $author$project$Utils$Maybe$view, - model.message, + model.ah, function (message) { return A2( $elm$html$Html$p, @@ -12872,9 +8148,9 @@ var $author$project$Pages$Settings$view = F2( $elm$html$Html$Attributes$class('form-control form-control-lg'), $elm$html$Html$Attributes$placeholder('Your Username'), $elm$html$Html$Attributes$type_('text'), - $elm$html$Html$Attributes$value(model.username), + $elm$html$Html$Attributes$value(model.cf), $elm$html$Html$Events$onInput( - $author$project$Pages$Settings$Updated($author$project$Pages$Settings$Username)) + $author$project$Pages$Settings$Updated(0)) ]), _List_Nil) ])), @@ -12893,9 +8169,9 @@ var $author$project$Pages$Settings$view = F2( $elm$html$Html$Attributes$class('form-control form-control-lg'), $elm$html$Html$Attributes$placeholder('Email'), $elm$html$Html$Attributes$type_('text'), - $elm$html$Html$Attributes$value(model.email), + $elm$html$Html$Attributes$value(model.av), $elm$html$Html$Events$onInput( - $author$project$Pages$Settings$Updated($author$project$Pages$Settings$Email)) + $author$project$Pages$Settings$Updated(1)) ]), _List_Nil) ])), @@ -12915,9 +8191,9 @@ var $author$project$Pages$Settings$view = F2( $elm$html$Html$Attributes$placeholder('Password'), $elm$html$Html$Attributes$type_('password'), $elm$html$Html$Attributes$value( - A2($elm$core$Maybe$withDefault, '', model.password)), + A2($elm$core$Maybe$withDefault, '', model.cN)), $elm$html$Html$Events$onInput( - $author$project$Pages$Settings$Updated($author$project$Pages$Settings$Password)) + $author$project$Pages$Settings$Updated(2)) ]), _List_Nil) ])), @@ -12938,29 +8214,29 @@ var $author$project$Pages$Settings$view = F2( ])) ])) ]), - title: 'Settings' + fR: 'Settings' }; }); var $author$project$Pages$Settings$page = $author$project$Spa$Page$application( { - init: $author$project$Pages$Settings$init, - load: $author$project$Pages$Settings$load, - save: $author$project$Pages$Settings$save, - subscriptions: $author$project$Pages$Settings$subscriptions, - update: $author$project$Pages$Settings$update, - view: $author$project$Utils$Auth$protected($author$project$Pages$Settings$view) + fb: $author$project$Pages$Settings$init, + fg: $author$project$Pages$Settings$load, + fJ: $author$project$Pages$Settings$save, + fN: $author$project$Pages$Settings$subscriptions, + fZ: $author$project$Pages$Settings$update, + f0: $author$project$Utils$Auth$protected($author$project$Pages$Settings$view) }); var $author$project$Pages$Top$FeedFor = function (a) { - return {$: 'FeedFor', a: a}; + return {$: 0, a: a}; }; -var $author$project$Pages$Top$Global = {$: 'Global'}; +var $author$project$Pages$Top$Global = {$: 1}; var $author$project$Pages$Top$init = F2( function (shared, _v0) { var activeTab = A2( $elm$core$Maybe$withDefault, $author$project$Pages$Top$Global, - A2($elm$core$Maybe$map, $author$project$Pages$Top$FeedFor, shared.user)); - var model = {activeTab: activeTab, listing: $author$project$Api$Data$Loading, tags: $author$project$Api$Data$Loading, user: shared.user}; + A2($elm$core$Maybe$map, $author$project$Pages$Top$FeedFor, shared.O)); + var model = {db: activeTab, dM: $author$project$Api$Data$Loading, eo: $author$project$Api$Data$Loading, O: shared.O}; return _Utils_Tuple2( model, $elm$core$Platform$Cmd$batch(_List_Nil)); @@ -12982,7 +8258,7 @@ var $author$project$Pages$Top$update = F2( }); var $author$project$Pages$Top$view = function (model) { return { - body: _List_fromArray( + eJ: _List_fromArray( [ A2( $elm$html$Html$div, @@ -13035,11 +8311,44 @@ var $author$project$Pages$Top$view = function (model) { ])) ])) ]), - title: '' + fR: '' }; }; var $author$project$Pages$Top$page = $author$project$Spa$Page$application( - {init: $author$project$Pages$Top$init, load: $author$project$Pages$Top$load, save: $author$project$Pages$Top$save, subscriptions: $author$project$Pages$Top$subscriptions, update: $author$project$Pages$Top$update, view: $author$project$Pages$Top$view}); + {fb: $author$project$Pages$Top$init, fg: $author$project$Pages$Top$load, fJ: $author$project$Pages$Top$save, fN: $author$project$Pages$Top$subscriptions, fZ: $author$project$Pages$Top$update, f0: $author$project$Pages$Top$view}); +var $elm$core$List$drop = F2( + function (n, list) { + drop: + while (true) { + if (n <= 0) { + return list; + } else { + if (!list.b) { + return list; + } else { + var x = list.a; + var xs = list.b; + var $temp$n = n - 1, + $temp$list = xs; + n = $temp$n; + list = $temp$list; + continue drop; + } + } + } + }); +var $elm$core$Dict$fromList = function (assocs) { + return A3( + $elm$core$List$foldl, + F2( + function (_v0, dict) { + var key = _v0.a; + var value = _v0.b; + return A3($elm$core$Dict$insert, key, value, dict); + }), + $elm$core$Dict$empty, + assocs); +}; var $elm$core$List$head = function (list) { if (list.b) { var x = list.a; @@ -13094,23 +8403,27 @@ var $author$project$Spa$Url$toQueryDict = function (queryString) { var $author$project$Spa$Url$create = F3( function (params, key, url) { return { - key: key, - params: params, - query: A2( + fd: key, + fB: params, + cS: A2( $elm$core$Maybe$withDefault, $elm$core$Dict$empty, - A2($elm$core$Maybe$map, $author$project$Spa$Url$toQueryDict, url.query)), - rawUrl: url + A2($elm$core$Maybe$map, $author$project$Spa$Url$toQueryDict, url.cS)), + d3: url }; }); +var $elm$core$Platform$Cmd$map = _Platform_map; +var $elm$core$Platform$Sub$map = _Platform_map; +var $elm$virtual_dom$VirtualDom$map = _VirtualDom_map; +var $elm$html$Html$map = $elm$virtual_dom$VirtualDom$map; var $author$project$Spa$Document$map = F2( function (fn, doc) { return { - body: A2( + eJ: A2( $elm$core$List$map, $elm$html$Html$map(fn), - doc.body), - title: doc.title + doc.eJ), + fR: doc.fR }; }); var $author$project$Spa$Generated$Pages$upgrade = F3( @@ -13121,7 +8434,7 @@ var $author$project$Spa$Generated$Pages$upgrade = F3( $elm$core$Tuple$mapBoth, toModel, $elm$core$Platform$Cmd$map(toMsg), - A2(page.update, msg, model)); + A2(page.fZ, msg, model)); }); var load_ = F2( function (model, shared) { @@ -13129,7 +8442,7 @@ var $author$project$Spa$Generated$Pages$upgrade = F3( $elm$core$Tuple$mapBoth, toModel, $elm$core$Platform$Cmd$map(toMsg), - A2(page.load, shared, model)); + A2(page.fg, shared, model)); }); var init_ = F2( function (params, shared) { @@ -13138,52 +8451,52 @@ var $author$project$Spa$Generated$Pages$upgrade = F3( toModel, $elm$core$Platform$Cmd$map(toMsg), A2( - page.init, + page.fb, shared, - A3($author$project$Spa$Url$create, params, shared.key, shared.url))); + A3($author$project$Spa$Url$create, params, shared.fd, shared.f_))); }); var bundle_ = function (model) { return { - load: load_(model), - save: page.save(model), - subscriptions: A2( + fg: load_(model), + fJ: page.fJ(model), + fN: A2( $elm$core$Platform$Sub$map, toMsg, - page.subscriptions(model)), - view: A2( + page.fN(model)), + f0: A2( $author$project$Spa$Document$map, toMsg, - page.view(model)) + page.f0(model)) }; }; - return {bundle: bundle_, init: init_, update: update_}; + return {D: bundle_, fb: init_, fZ: update_}; }); var $author$project$Spa$Generated$Pages$pages = { - login: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Login__Model, $author$project$Spa$Generated$Pages$Login__Msg, $author$project$Pages$Login$page), - notFound: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$NotFound__Model, $author$project$Spa$Generated$Pages$NotFound__Msg, $author$project$Pages$NotFound$page), - profile__username_string: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Profile__Username_String__Model, $author$project$Spa$Generated$Pages$Profile__Username_String__Msg, $author$project$Pages$Profile$Username_String$page), - projects: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Projects__Model, $author$project$Spa$Generated$Pages$Projects__Msg, $author$project$Pages$Projects$page), - register: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Register__Model, $author$project$Spa$Generated$Pages$Register__Msg, $author$project$Pages$Register$page), - settings: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Settings__Model, $author$project$Spa$Generated$Pages$Settings__Msg, $author$project$Pages$Settings$page), - top: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Top__Model, $author$project$Spa$Generated$Pages$Top__Msg, $author$project$Pages$Top$page) + bt: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Login__Model, $author$project$Spa$Generated$Pages$Login__Msg, $author$project$Pages$Login$page), + bx: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$NotFound__Model, $author$project$Spa$Generated$Pages$NotFound__Msg, $author$project$Pages$NotFound$page), + bQ: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Profile__Username_String__Model, $author$project$Spa$Generated$Pages$Profile__Username_String__Msg, $author$project$Pages$Profile$Username_String$page), + bR: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Projects__Model, $author$project$Spa$Generated$Pages$Projects__Msg, $author$project$Pages$Projects$page), + b1: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Register__Model, $author$project$Spa$Generated$Pages$Register__Msg, $author$project$Pages$Register$page), + b8: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Settings__Model, $author$project$Spa$Generated$Pages$Settings__Msg, $author$project$Pages$Settings$page), + cc: A3($author$project$Spa$Generated$Pages$upgrade, $author$project$Spa$Generated$Pages$Top__Model, $author$project$Spa$Generated$Pages$Top__Msg, $author$project$Pages$Top$page) }; var $author$project$Spa$Generated$Pages$init = function (route) { switch (route.$) { - case 'Top': - return $author$project$Spa$Generated$Pages$pages.top.init(_Utils_Tuple0); - case 'Login': - return $author$project$Spa$Generated$Pages$pages.login.init(_Utils_Tuple0); - case 'NotFound': - return $author$project$Spa$Generated$Pages$pages.notFound.init(_Utils_Tuple0); - case 'Projects': - return $author$project$Spa$Generated$Pages$pages.projects.init(_Utils_Tuple0); - case 'Register': - return $author$project$Spa$Generated$Pages$pages.register.init(_Utils_Tuple0); - case 'Settings': - return $author$project$Spa$Generated$Pages$pages.settings.init(_Utils_Tuple0); + case 0: + return $author$project$Spa$Generated$Pages$pages.cc.fb(0); + case 1: + return $author$project$Spa$Generated$Pages$pages.bt.fb(0); + case 2: + return $author$project$Spa$Generated$Pages$pages.bx.fb(0); + case 3: + return $author$project$Spa$Generated$Pages$pages.bR.fb(0); + case 4: + return $author$project$Spa$Generated$Pages$pages.b1.fb(0); + case 5: + return $author$project$Spa$Generated$Pages$pages.b8.fb(0); default: var params = route.a; - return $author$project$Spa$Generated$Pages$pages.profile__username_string.init(params); + return $author$project$Spa$Generated$Pages$pages.bQ.fb(params); } }; var $author$project$Main$init = F3( @@ -13211,34 +8524,34 @@ var $author$project$Shared$subscriptions = function (_v0) { }; var $author$project$Spa$Generated$Pages$bundle = function (bigModel) { switch (bigModel.$) { - case 'Top__Model': + case 0: var model = bigModel.a; - return $author$project$Spa$Generated$Pages$pages.top.bundle(model); - case 'Login__Model': + return $author$project$Spa$Generated$Pages$pages.cc.D(model); + case 1: var model = bigModel.a; - return $author$project$Spa$Generated$Pages$pages.login.bundle(model); - case 'NotFound__Model': + return $author$project$Spa$Generated$Pages$pages.bt.D(model); + case 2: var model = bigModel.a; - return $author$project$Spa$Generated$Pages$pages.notFound.bundle(model); - case 'Projects__Model': + return $author$project$Spa$Generated$Pages$pages.bx.D(model); + case 3: var model = bigModel.a; - return $author$project$Spa$Generated$Pages$pages.projects.bundle(model); - case 'Register__Model': + return $author$project$Spa$Generated$Pages$pages.bR.D(model); + case 4: var model = bigModel.a; - return $author$project$Spa$Generated$Pages$pages.register.bundle(model); - case 'Settings__Model': + return $author$project$Spa$Generated$Pages$pages.b1.D(model); + case 5: var model = bigModel.a; - return $author$project$Spa$Generated$Pages$pages.settings.bundle(model); + return $author$project$Spa$Generated$Pages$pages.b8.D(model); default: var model = bigModel.a; - return $author$project$Spa$Generated$Pages$pages.profile__username_string.bundle(model); + return $author$project$Spa$Generated$Pages$pages.bQ.D(model); } }; var $author$project$Spa$Generated$Pages$subscriptions = A2( $elm$core$Basics$composeR, $author$project$Spa$Generated$Pages$bundle, function ($) { - return $.subscriptions; + return $.fN; }); var $author$project$Main$subscriptions = function (model) { return $elm$core$Platform$Sub$batch( @@ -13247,32 +8560,32 @@ var $author$project$Main$subscriptions = function (model) { A2( $elm$core$Platform$Sub$map, $author$project$Main$Shared, - $author$project$Shared$subscriptions(model.shared)), + $author$project$Shared$subscriptions(model.x)), A2( $elm$core$Platform$Sub$map, $author$project$Main$Pages, - $author$project$Spa$Generated$Pages$subscriptions(model.page)) + $author$project$Spa$Generated$Pages$subscriptions(model.C)) ])); }; var $author$project$Spa$Document$toBrowserDocument = function (doc) { - return {body: doc.body, title: doc.title}; + return {eJ: doc.eJ, fR: doc.fR}; }; var $elm$browser$Browser$Navigation$load = _Browser_load; var $author$project$Spa$Generated$Pages$load = A2( $elm$core$Basics$composeR, $author$project$Spa$Generated$Pages$bundle, function ($) { - return $.load; + return $.fg; }); var $author$project$Spa$Generated$Pages$save = A2( $elm$core$Basics$composeR, $author$project$Spa$Generated$Pages$bundle, function ($) { - return $.save; + return $.fJ; }); var $elm$url$Url$addPort = F2( function (maybePort, starter) { - if (maybePort.$ === 'Nothing') { + if (maybePort.$ === 1) { return starter; } else { var port_ = maybePort.a; @@ -13281,7 +8594,7 @@ var $elm$url$Url$addPort = F2( }); var $elm$url$Url$addPrefixed = F3( function (prefix, maybeSegment, starter) { - if (maybeSegment.$ === 'Nothing') { + if (maybeSegment.$ === 1) { return starter; } else { var segment = maybeSegment.a; @@ -13292,8 +8605,8 @@ var $elm$url$Url$addPrefixed = F3( }); var $elm$url$Url$toString = function (url) { var http = function () { - var _v0 = url.protocol; - if (_v0.$ === 'Http') { + var _v0 = url.d2; + if (!_v0) { return 'http://'; } else { return 'https://'; @@ -13302,27 +8615,27 @@ var $elm$url$Url$toString = function (url) { return A3( $elm$url$Url$addPrefixed, '#', - url.fragment, + url.dw, A3( $elm$url$Url$addPrefixed, '?', - url.query, + url.cS, _Utils_ap( A2( $elm$url$Url$addPort, - url.port_, - _Utils_ap(http, url.host)), - url.path))); + url.dZ, + _Utils_ap(http, url.e6)), + url.dX))); }; var $elm$json$Json$Encode$null = _Json_encodeNull; var $author$project$Ports$clearUser = $author$project$Ports$outgoing( - {data: $elm$json$Json$Encode$null, tag: 'clearUser'}); + {cs: $elm$json$Json$Encode$null, c7: 'clearUser'}); var $author$project$Shared$update = F2( function (msg, model) { return _Utils_Tuple2( _Utils_update( model, - {user: $elm$core$Maybe$Nothing}), + {O: $elm$core$Maybe$Nothing}), $author$project$Ports$clearUser); }); var $author$project$Spa$Generated$Pages$update = F2( @@ -13331,59 +8644,59 @@ var $author$project$Spa$Generated$Pages$update = F2( _v0$7: while (true) { switch (_v0.a.$) { - case 'Top__Msg': - if (_v0.b.$ === 'Top__Model') { + case 0: + if (!_v0.b.$) { var msg = _v0.a.a; var model = _v0.b.a; - return A2($author$project$Spa$Generated$Pages$pages.top.update, msg, model); + return A2($author$project$Spa$Generated$Pages$pages.cc.fZ, msg, model); } else { break _v0$7; } - case 'Login__Msg': - if (_v0.b.$ === 'Login__Model') { + case 1: + if (_v0.b.$ === 1) { var msg = _v0.a.a; var model = _v0.b.a; - return A2($author$project$Spa$Generated$Pages$pages.login.update, msg, model); + return A2($author$project$Spa$Generated$Pages$pages.bt.fZ, msg, model); } else { break _v0$7; } - case 'NotFound__Msg': - if (_v0.b.$ === 'NotFound__Model') { + case 2: + if (_v0.b.$ === 2) { var msg = _v0.a.a; var model = _v0.b.a; - return A2($author$project$Spa$Generated$Pages$pages.notFound.update, msg, model); + return A2($author$project$Spa$Generated$Pages$pages.bx.fZ, msg, model); } else { break _v0$7; } - case 'Projects__Msg': - if (_v0.b.$ === 'Projects__Model') { + case 3: + if (_v0.b.$ === 3) { var msg = _v0.a.a; var model = _v0.b.a; - return A2($author$project$Spa$Generated$Pages$pages.projects.update, msg, model); + return A2($author$project$Spa$Generated$Pages$pages.bR.fZ, msg, model); } else { break _v0$7; } - case 'Register__Msg': - if (_v0.b.$ === 'Register__Model') { + case 4: + if (_v0.b.$ === 4) { var msg = _v0.a.a; var model = _v0.b.a; - return A2($author$project$Spa$Generated$Pages$pages.register.update, msg, model); + return A2($author$project$Spa$Generated$Pages$pages.b1.fZ, msg, model); } else { break _v0$7; } - case 'Settings__Msg': - if (_v0.b.$ === 'Settings__Model') { + case 5: + if (_v0.b.$ === 5) { var msg = _v0.a.a; var model = _v0.b.a; - return A2($author$project$Spa$Generated$Pages$pages.settings.update, msg, model); + return A2($author$project$Spa$Generated$Pages$pages.b8.fZ, msg, model); } else { break _v0$7; } default: - if (_v0.b.$ === 'Profile__Username_String__Model') { + if (_v0.b.$ === 6) { var msg = _v0.a.a; var model = _v0.b.a; - return A2($author$project$Spa$Generated$Pages$pages.profile__username_string.update, msg, model); + return A2($author$project$Spa$Generated$Pages$pages.bQ.fZ, msg, model); } else { break _v0$7; } @@ -13394,14 +8707,14 @@ var $author$project$Spa$Generated$Pages$update = F2( var $author$project$Main$update = F2( function (msg, model) { switch (msg.$) { - case 'LinkClicked': - if (msg.a.$ === 'Internal') { + case 0: + if (!msg.a.$) { var url = msg.a.a; return _Utils_Tuple2( model, A2( $elm$browser$Browser$Navigation$pushUrl, - model.shared.key, + model.x.fd, $elm$url$Url$toString(url))); } else { var href = msg.a.a; @@ -13409,13 +8722,13 @@ var $author$project$Main$update = F2( model, $elm$browser$Browser$Navigation$load(href)); } - case 'UrlChanged': + case 1: var url = msg.a; - var original = model.shared; + var original = model.x; var shared = _Utils_update( original, - {url: url}); - var _v1 = _Utils_eq(url.path, model.shared.url.path) ? A2($author$project$Spa$Generated$Pages$load, model.page, shared) : A2( + {f_: url}); + var _v1 = _Utils_eq(url.dX, model.x.f_.dX) ? A2($author$project$Spa$Generated$Pages$load, model.C, shared) : A2( $author$project$Spa$Generated$Pages$init, $author$project$Utils$Route$fromUrl(url), shared); @@ -13425,22 +8738,22 @@ var $author$project$Main$update = F2( _Utils_update( model, { - page: page, - shared: A2($author$project$Spa$Generated$Pages$save, page, shared) + C: page, + x: A2($author$project$Spa$Generated$Pages$save, page, shared) }), A2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd)); - case 'Shared': + case 2: var sharedMsg = msg.a; - var _v2 = A2($author$project$Shared$update, sharedMsg, model.shared); + var _v2 = A2($author$project$Shared$update, sharedMsg, model.x); var shared = _v2.a; var sharedCmd = _v2.b; - var _v3 = A2($author$project$Spa$Generated$Pages$load, model.page, shared); + var _v3 = A2($author$project$Spa$Generated$Pages$load, model.C, shared); var page = _v3.a; var pageCmd = _v3.b; return _Utils_Tuple2( _Utils_update( model, - {page: page, shared: shared}), + {C: page, x: shared}), $elm$core$Platform$Cmd$batch( _List_fromArray( [ @@ -13449,18 +8762,24 @@ var $author$project$Main$update = F2( ]))); default: var pageMsg = msg.a; - var _v4 = A2($author$project$Spa$Generated$Pages$update, pageMsg, model.page); + var _v4 = A2($author$project$Spa$Generated$Pages$update, pageMsg, model.C); var page = _v4.a; var pageCmd = _v4.b; - var shared = A2($author$project$Spa$Generated$Pages$save, page, model.shared); + var shared = A2($author$project$Spa$Generated$Pages$save, page, model.x); return _Utils_Tuple2( _Utils_update( model, - {page: page, shared: shared}), + {C: page, x: shared}), A2($elm$core$Platform$Cmd$map, $author$project$Main$Pages, pageCmd)); } }); -var $author$project$Shared$ClickedSignOut = {$: 'ClickedSignOut'}; +var $elm$json$Json$Decode$value = _Json_decodeValue; +var $author$project$Shared$ClickedSignOut = 0; +var $elm$virtual_dom$VirtualDom$node = function (tag) { + return _VirtualDom_node( + _VirtualDom_noScript(tag)); +}; +var $elm$html$Html$node = $elm$virtual_dom$VirtualDom$node; var $elm$html$Html$Attributes$rel = _VirtualDom_attribute('rel'); var $author$project$Shared$slogan = 'Highly flexible Application Runtime Platform'; var $rundis$elm_bootstrap$Bootstrap$CDN$stylesheet = A3( @@ -13532,7 +8851,10 @@ var $author$project$Components$Navbar$dataToggle = function (value) { return A2($author$project$Components$Navbar$stringProperty, 'data-toggle', value); }; var $elm$html$Html$i = _VirtualDom_node('i'); +var $elm$html$Html$Attributes$id = $elm$html$Html$Attributes$stringProperty('id'); var $elm$html$Html$nav = _VirtualDom_node('nav'); +var $elm$virtual_dom$VirtualDom$style = _VirtualDom_style; +var $elm$html$Html$Attributes$style = $elm$virtual_dom$VirtualDom$style; var $author$project$Components$Navbar$viewLink = F2( function (currentRoute, _v0) { var label = _v0.a; @@ -13626,14 +8948,14 @@ var $author$project$Components$Navbar$view = function (options) { $elm$html$Html$Attributes$class('nav navbar-nav ml-auto') ]), function () { - var _v0 = options.user; - if (_v0.$ === 'Just') { + var _v0 = options.O; + if (!_v0.$) { return $elm$core$List$concat( _List_fromArray( [ A2( $elm$core$List$map, - $author$project$Components$Navbar$viewLink(options.currentRoute), + $author$project$Components$Navbar$viewLink(options.dm), _List_fromArray( [ _Utils_Tuple2('Home', $author$project$Spa$Generated$Route$Top), @@ -13655,7 +8977,7 @@ var $author$project$Components$Navbar$view = function (options) { _List_fromArray( [ $elm$html$Html$Attributes$class('nav-link'), - $elm$html$Html$Events$onClick(options.onSignOut) + $elm$html$Html$Events$onClick(options.fw) ]), _List_fromArray( [ @@ -13667,7 +8989,7 @@ var $author$project$Components$Navbar$view = function (options) { } else { return A2( $elm$core$List$map, - $author$project$Components$Navbar$viewLink(options.currentRoute), + $author$project$Components$Navbar$viewLink(options.dm), _List_fromArray( [ _Utils_Tuple2('Home', $author$project$Spa$Generated$Route$Top), @@ -13699,10 +9021,10 @@ var $author$project$Components$Navbar$view = function (options) { }; var $author$project$Shared$view = F2( function (_v0, model) { - var page = _v0.page; - var toMsg = _v0.toMsg; + var page = _v0.C; + var toMsg = _v0.fV; return { - body: _List_fromArray( + eJ: _List_fromArray( [ A3( $elm$html$Html$node, @@ -13724,9 +9046,9 @@ var $author$project$Shared$view = F2( [ $author$project$Components$Navbar$view( { - currentRoute: $author$project$Utils$Route$fromUrl(model.url), - onSignOut: toMsg($author$project$Shared$ClickedSignOut), - user: model.user + dm: $author$project$Utils$Route$fromUrl(model.f_), + fw: toMsg(0), + O: model.O }), A2( $elm$html$Html$div, @@ -13744,38 +9066,38 @@ var $author$project$Shared$view = F2( [ $elm$html$Html$Attributes$class('page') ]), - page.body), + page.eJ), $author$project$Components$Footer$view ])) ]), - title: $elm$core$String$isEmpty(page.title) ? 'Tumbo' : (page.title + ' | Tumbo') + fR: $elm$core$String$isEmpty(page.fR) ? 'Tumbo' : (page.fR + ' | Tumbo') }; }); var $author$project$Spa$Generated$Pages$view = A2( $elm$core$Basics$composeR, $author$project$Spa$Generated$Pages$bundle, function ($) { - return $.view; + return $.f0; }); var $author$project$Main$view = function (model) { return A2( $author$project$Shared$view, { - page: A2( + C: A2( $author$project$Spa$Document$map, $author$project$Main$Pages, - $author$project$Spa$Generated$Pages$view(model.page)), - toMsg: $author$project$Main$Shared + $author$project$Spa$Generated$Pages$view(model.C)), + fV: $author$project$Main$Shared }, - model.shared); + model.x); }; var $author$project$Main$main = $elm$browser$Browser$application( { - init: $author$project$Main$init, - onUrlChange: $author$project$Main$UrlChanged, - onUrlRequest: $author$project$Main$LinkClicked, - subscriptions: $author$project$Main$subscriptions, - update: $author$project$Main$update, - view: A2($elm$core$Basics$composeR, $author$project$Main$view, $author$project$Spa$Document$toBrowserDocument) + fb: $author$project$Main$init, + fx: $author$project$Main$UrlChanged, + fy: $author$project$Main$LinkClicked, + fN: $author$project$Main$subscriptions, + fZ: $author$project$Main$update, + f0: A2($elm$core$Basics$composeR, $author$project$Main$view, $author$project$Spa$Document$toBrowserDocument) }); -_Platform_export({'Main':{'init':$author$project$Main$main($elm$json$Json$Decode$value)({"versions":{"elm":"0.19.1"},"types":{"message":"Main.Msg","aliases":{"Url.Url":{"args":[],"type":"{ protocol : Url.Protocol, host : String.String, port_ : Maybe.Maybe Basics.Int, path : String.String, query : Maybe.Maybe String.String, fragment : Maybe.Maybe String.String }"},"Pages.NotFound.Msg":{"args":[],"type":"Basics.Never"},"Api.Project.GitRepository":{"args":[],"type":"{ url : String.String, version : String.String }"},"Api.Profile.Profile":{"args":[],"type":"{ username : String.String, following : Basics.Bool }"},"Api.Project.Project":{"args":[],"type":"{ name : String.String, id : Basics.Int, description : String.String, state : String.String, errormsg : String.String, gitrepository : Api.Project.GitRepository }"},"Api.Article.Tag.Tag":{"args":[],"type":"String.String"},"Api.User.User":{"args":[],"type":"{ email : String.String, token : Api.Token.Token, username : String.String }"}},"unions":{"Main.Msg":{"args":[],"tags":{"LinkClicked":["Browser.UrlRequest"],"UrlChanged":["Url.Url"],"Shared":["Shared.Msg"],"Pages":["Spa.Generated.Pages.Msg"]}},"Basics.Int":{"args":[],"tags":{"Int":[]}},"Maybe.Maybe":{"args":["a"],"tags":{"Just":["a"],"Nothing":[]}},"Shared.Msg":{"args":[],"tags":{"ClickedSignOut":[]}},"Spa.Generated.Pages.Msg":{"args":[],"tags":{"Top__Msg":["Pages.Top.Msg"],"Login__Msg":["Pages.Login.Msg"],"NotFound__Msg":["Pages.NotFound.Msg"],"Projects__Msg":["Pages.Projects.Msg"],"Register__Msg":["Pages.Register.Msg"],"Settings__Msg":["Pages.Settings.Msg"],"Profile__Username_String__Msg":["Pages.Profile.Username_String.Msg"]}},"Url.Protocol":{"args":[],"tags":{"Http":[],"Https":[]}},"String.String":{"args":[],"tags":{"String":[]}},"Browser.UrlRequest":{"args":[],"tags":{"Internal":["Url.Url"],"External":["String.String"]}},"Pages.Login.Msg":{"args":[],"tags":{"Updated":["Pages.Login.Field","String.String"],"AttemptedSignIn":[],"GotUser":["Api.Data.Data Api.User.User"]}},"Pages.Profile.Username_String.Msg":{"args":[],"tags":{"GotProfile":["Api.Data.Data Api.Profile.Profile"],"GotArticles":["Api.Data.Data (List.List Api.Project.Project)"],"Clicked":["Pages.Profile.Username_String.Tab"],"ClickedPage":["Basics.Int"]}},"Pages.Projects.Msg":{"args":[],"tags":{"GotProjects":["Api.Data.Data (List.List Api.Project.Project)"],"StartProject":["Api.Project.Project"]}},"Pages.Register.Msg":{"args":[],"tags":{"Updated":["Pages.Register.Field","String.String"],"AttemptedSignUp":[],"GotUser":["Api.Data.Data Api.User.User"]}},"Pages.Settings.Msg":{"args":[],"tags":{"Updated":["Pages.Settings.Field","String.String"],"SubmittedForm":["Api.User.User"],"GotUser":["Api.Data.Data Api.User.User"]}},"Pages.Top.Msg":{"args":[],"tags":{"GotArticles":["Api.Data.Data (List.List Api.Project.Project)"],"GotTags":["Api.Data.Data (List.List Api.Article.Tag.Tag)"],"SelectedTab":["Pages.Top.Tab"]}},"Basics.Never":{"args":[],"tags":{"JustOneMore":["Basics.Never"]}},"Basics.Bool":{"args":[],"tags":{"True":[],"False":[]}},"Api.Data.Data":{"args":["value"],"tags":{"NotAsked":[],"Loading":[],"Failure":["List.List String.String"],"Success":["value"]}},"Pages.Login.Field":{"args":[],"tags":{"Email":[],"Password":[]}},"Pages.Register.Field":{"args":[],"tags":{"Username":[],"Email":[],"Password":[]}},"Pages.Settings.Field":{"args":[],"tags":{"Username":[],"Email":[],"Password":[]}},"List.List":{"args":["a"],"tags":{}},"Pages.Profile.Username_String.Tab":{"args":[],"tags":{"MyArticles":[],"FavoritedArticles":[]}},"Pages.Top.Tab":{"args":[],"tags":{"FeedFor":["Api.User.User"],"Global":[],"TagFilter":["Api.Article.Tag.Tag"]}},"Api.Token.Token":{"args":[],"tags":{"Token":["String.String"]}}}}})}});}(this)); \ No newline at end of file +_Platform_export({'Main':{'init':$author$project$Main$main($elm$json$Json$Decode$value)(0)}});}(this)); \ No newline at end of file diff --git a/web/elm/src/Api/Project.elm b/web/elm/src/Api/Project.elm index ef4a3d8..4510592 100644 --- a/web/elm/src/Api/Project.elm +++ b/web/elm/src/Api/Project.elm @@ -31,8 +31,7 @@ type alias Project = { name : String , id : Int , description : String - , state : String - , errormsg : String + , state : ProjectState , gitrepository : GitRepository } @@ -43,14 +42,19 @@ type alias GitRepository = } +type alias ProjectState = + { state : String + , errormsg : String + } + + projectDecoder : Json.Decoder Project projectDecoder = - Json.map6 Project + Json.map5 Project (Json.field "name" Json.string) (Json.field "id" Json.int) (Json.field "description" Json.string) - (Json.field "state" Json.string) - (Json.field "errormsg" Json.string) + (Json.field "state" projectStateDecoder) (Json.field "gitrepository" gitRepositoryDecoder) @@ -61,6 +65,13 @@ gitRepositoryDecoder = (Json.field "version" Json.string) +projectStateDecoder : Json.Decoder ProjectState +projectStateDecoder = + Json.map2 ProjectState + (Json.field "state" Json.string) + (Json.field "errormsg" Json.string) + + -- ENDPOINTS diff --git a/web/elm/src/Components/ProjectList.elm b/web/elm/src/Components/ProjectList.elm index 0b3e092..949c849 100644 --- a/web/elm/src/Components/ProjectList.elm +++ b/web/elm/src/Components/ProjectList.elm @@ -62,7 +62,7 @@ viewProject listing = , p [] [ text listing.gitrepository.url ] , p [] [ text listing.gitrepository.version ] , span [ class "badge badge-pill badge-secondary" ] - [ text listing.state ] + [ text listing.state.state ] , viewErrorDiv listing -- , div [ class "alert alert-warning" ] @@ -73,9 +73,9 @@ viewProject listing = viewErrorDiv : Project -> Html msg viewErrorDiv listing = - if String.length listing.errormsg > 0 then + if String.length listing.state.errormsg > 0 then div [ class "alert alert-warning" ] - [ text listing.errormsg + [ text listing.state.errormsg ] else