diff options
author | Jakob Borg <jakob@nym.se> | 2014-06-16 10:47:02 +0200 |
---|---|---|
committer | Jakob Borg <jakob@nym.se> | 2014-06-16 10:47:02 +0200 |
commit | 26ebbee8775251772b6eacce8de48bf9c7bf5b56 (patch) | |
tree | 245dbd6f8ae6f2a23d40529dc29df2cfe660d862 | |
parent | 12eda0449a571e501527d6266a8079e6d0a3e20c (diff) |
Hard override on changes from master repo
-rw-r--r-- | auto/gui.files.go | 4 | ||||
-rw-r--r-- | cmd/syncthing/gui.go | 7 | ||||
-rw-r--r-- | gui/app.js | 6 | ||||
-rw-r--r-- | gui/index.html | 5 | ||||
-rw-r--r-- | model/model.go | 23 |
5 files changed, 42 insertions, 3 deletions
diff --git a/auto/gui.files.go b/auto/gui.files.go index a21d43c12c..c7b578dbdc 100644 --- a/auto/gui.files.go +++ b/auto/gui.files.go @@ -18,7 +18,7 @@ func init() { bs, _ = ioutil.ReadAll(gr) Assets["angular.min.js"] = bs - bs, _ = hex.DecodeString("1f8b080000096e8800ffec3cfd73dbb692bffbaf40756945393265277dbd77519c4eeaa4eff9a5493c71d2bb39d79da14448624d912a3f626b6cffefb70b80243e493a4ef2de9b394d1b4bc062b1bb582c76171f9309394a37db2c5aae0ae21d8dc8a3fd83efc93f828b74467e4ab325099290a4c58a66649e264516cdca22cd729f3c8f63c25ae524a339cd3ed2d0df016c1f724ad2052956514ef2b4cce6141a8694c0cf65fa9166090dc96c0b68c9ebe3f77b79b18d2989a3394da05db10a0a3287aa1945548bb484cea304ca29f9e5f8e8e59bd3976411c5d4dfd999ecfe91c751529059965e42f74f48919574cc888c929256bf377199e3fffc37d99d40cb659cce82983c784216419c0350902ccb38c8c46f04da1996f025077ee7c570bab3f331c848be4de6c056b22487550b7f9d86654cbd615d371c93b3f3d1943528b37816009a43320411313c359c0f842ea2a5b728a1204a13e23d5815c5e6244b3f4621cd46e47a87c04729f443ba08cab8c8fdab3c5bfc9d0650f62658b30efe67efe8f4ddcf7befd30b9a40471d6d8fd2f422a2555ba5e5ed4827b3c8d238a699373cad4a8f8a2c064625daf379ba0141b22e2bda51049b8c7e7c1114d8cdfeb42e5dd2e2ed2b28c221694a514641567001b391004a18230c3b929250d6610e00d7b753ad12c46996afb7c72f90c7a1529a80462292b3730b92e3041955c813f59b2c2dd2791a1fad60fc418f6b3225189a65303f4cdc39a5c94bac33a90125a2b1497a4637a985532cce0a106ae0aa3b01a147f4d22ec584d2f079234556859f61b61e3e21c3171446562e0ca34c94130fbe8fe45a5413ac4479c9e5455ace5758f16113c2e08baa5b9d8ce3b983888caec15458e930ab2a22c2f43289d320b41212e405cda2fca22685fd011b730a533c59e66071166946c92c4de39cc4303da0a48036ea1016050386c165e5d75108b87f8900790288604a805acd3321117222d4857008f23c0c41c7739a0360b1dd808d1a16f4aa18de8e256caf83ab539a84af669b5cc2f7b62c9629ce8c7738997e89d61158eb57d14f937cd4204bcaf58c662aba778020488e1360e563109f4a28790da9aa88d78d4acc403b3651790784274116806589dfd13f4b98fb32bf2005023c83414842c67603d282105af1a9a9490fb1fd0ceb06e1b55c882de29307379d07f1f324398179256164c5e445048a016bda9688ea16da2a442f936016d3d08dab4183caa822f91b5bb9ac5878553f34a768677fe20ba7acb4584c9a7267fb0f27c98949012f2158d9daf89dd9f4799226db755ae6e03e043840cc8ef1e5d482e85c3569cb323ab54f4d31e364317d38ee9a8ee36a25e23e834abc2a31c4f6bc04f7049c8e79c0d6c20f8aec3a119e04797e9966613b52094a20de3425add4beff459ea5e89cfdfdfdfb9353f0ad32021d69f26d43f6fce4f815ddca8376724c788940116ca20bf8ad0d52ed25c0aa7f5acee760f869e88d24ab1f2d88f70df309e4526980a3242abcd154adf286ff91d0026470c196d5e108d7d120f6862bf077861ab4e971342b524542e37fdc918ca6613b11089bafca0257aa76489b2ba4127d6b0af7e7004c9c2959375b192dca2c7189c33e202ea95fcf82f94598a51bd003e80f3417f402b461960659281ceb5bc7a0b431583b360be06385c0b5d329d3c61c4f1f107a95d3fd900c27f91626fa1a68cc51eff25cf2b6c12f0974e654059dda5480630432b0bd44f288fb7d9e9d3a81bc1a20b95df3fdedec0f583e7d9059eec91ee0c887b9fa3298af24e451680c8c5500ccb3fc11d11c0ea18026188a7d78777c94ae376902060631f5158f240686f72c0acf0d49e85cc9dfed344a6e7def91c2702149d1c3c5e002dcf94b6f3456200af4ce3d84d9ab839011999083fdfd7d15320a85a1aa3e52cc02ed55d6d06c82cc30287589885933acf45741fef632012f7043b362cb446d81c74f15b54e8dda5ba3a40077c38e053bc541014305fe0f90ff3a2856fe3ab8f2f6c7e4af6497cb92411c273f6d0b9abf4f0bf019f62c11960185c22bc29149a1d2735a165d5d835bd7a76f05ccd9f92d811572be221e7589d610ca7e5f162c80ea68dcda2c841aa5ea66a26b32f0e8b1f73cd0634e7b77b7d31d3d480457af2873c59c62b1be76e0c29e2ed4598f7030ef0f218c2d93902ea2045c39fbd2020e477291e06a275b77a50713350c14440f30c7bec12e9c984f8b74b3819ead9859baa6e073788896cfd20dab6f5a57e0ecefd9feb95fa41fa083ec0886068cf9435e01e332cb8bcc3b184d553e44f34332c0d00f16db01b9b9214de97118d381ce0baf7e08d5c41b345462447b42b339d8677086c5c03c24836f47032bb74224124396113f8ac163fcf2031e258bf40b8c7688715bf6d9065b19b1610463e3ec594cc4a1cb4d6ad0e47ce09d983659b40e2030b361b2884f1b435529bef840c23ae9e2d8225e9e5165f69ae1dfef875519c2cdbc00ae0002560bab9ee0c4e25d4c6c00120d535dae6c355ac4297868d08ddd2c624ed06216b1f868a1f8ce482d9a7980b32c5ea281ff06fe1ebf3857950e0175d954e53e7a653165dda2104114b645ad36ad1b52a4ccff196aee17a198c576b714168a783859f49e6115fa76a4636cb13a43967160ecd7d6d82259ccf5fd7bc835bdb8ab3c45707217a1adc1dbcbddd2328df5bfacb84cfbd84b66a631ec9499db3622af98cdf9ca12138431a18964529b6dffb165bc2591ffd358d08c40eb3ae566e557da390c488c4a29533469c7c641a680f848b31c70dbe8fb92e28923587b7f75f7dd31ceb0dc86d8b1211d955de4608d310ddba092f7ab00435c5039c780f456dd268d2809c73a55e20d6451e0f5639a2c8b15b85ce4c0c171ed1fb4302ab081afec5406b1c3d8a90dc25b11b53d5d94c1c0e5a1d4e30cdd3b1acb202d3caa1a5379ff10d3fe60772270dbfb8d8d717d8813ae095a334f1b30492e7d85e2953ce4628d46ad22ea924f1fe1f4960c0da342cad2db25339980ab7641494030c3883e0ab4ddd6d5ca36ad2f40de6eaa60bbda94c7369e0a2b80e4f8db860b53efad780040c681095dc153df4c28cbabdb4594071f612510fbd895800ccd99e30421ff387dfbc6cfd9e665b4d0a89428c406e9a660bbac2b7660207f42ae87d04b01c66cef3de817db1edd6c62b1d730f9234f93e1edad9ea9d8a4b991b783be80372068cc3ab1652dfae52939ae09dbcafd8474a4b66fcf926f7259777ad23212bd95352f33f8275d537e3864ce0f07a863561f18f8a6d62efa6719c4b95d4fc7adaa3e2237378628f8a7033da8af03b5aad8d1c213248f54a103cf39a56841aab310e4328a6382dbf9188ecc68cd2b884b6c3d686ea64993cf37aa580ec0459d80193995c03c9ca16ef6b061ded1b9790e9abf05f22f49bdbb1fe37e6cbcdd712a9adfcbe46863366dc1d76976ac83e4a4cbe71b9cc22525ba4c55a8d322f37398fd85371ca30d0b36d2bcbb921c8c2b1faccd1a562836696c5434f64bd9e3d869b79703dc001bb852954c819c5350d9275387dbb13177d77d2a87f1139887ae05453b4324db8cd3cb0833d69774b6c1444e3d8f604e256ceb69c79c2a9a6e8fccdd901a0d380948f2501ba29669674e291d9911dda9b86148df476b9a9685d7ac5ae63cbd040738bdf4717a21882ff5527dd5ba19b3ed1a87b6b51ec6e254b27f35cb2ef65f3f49a5ecba206de9f658ff6c7bc07755cadb9e6a67e11fdd306b14a279e515da32cbc051102d1ef8f40a4c46e85dc3d0548d0c52b00b10dfcb2bb02f56312a60a7345ef0ad3a2d2054e24193df8630bf3ec801b68c1cd63e7b5decff91460998376299ae08fc12284933ff01e8f149c688561c711cb24a6c9fc1cb8bcc2850113cf416857f4ae719f2557a39b4e30ac20e64b651bc96e58507e7b649b006fa6f7b8ca436c5ac436987f9fa820e694c0bda296ca347e34406dbd1b58ba4fb48854d0efd227b6b5856cd0fd95592a602afed612918a44e876468d946372e2c7cb35b399060df8464756c075543ad55f460f61e0ceb4c9b03607a2916e7bf556baaf8fd08039f304de89844d39d3b2a559debb0706540d556514f48806ce3604ebd0999002d43e8ae2ed9ab4a948dccca89337aa88d82cd82ded74944219996811fa6603bed24224fd529c1735450f1f0a12d532dc39e45e7721e5115514bd858356e389e1aa082723394c0cf2ca3c1458f0c363f1202981c538773bc29f39567aeaa0e13e2e769567855f238c8e8a7cef4bed3825d02a970b97c27394deb346dbd2d1b2efd9db17a953b6b9dae11f82bba75fb04cd4b343182f24c0dd54c7a26b565e6dd4a64e118a2d3f671a80c9434eacde8e9935f289e918994c0a47c5f6ef72af1000ac6933d55831f583175c3958da43e0618e4997199a2533be6310db297d5f998562f49bea1a1d079a6522db2e77be4e09c91d51920b076134689c38f5b6411b8d5f1d61cd6bcc864529b65f9eecadb240f5b5538674e34fc5b2f25f3da988ef5e43ed68d462d3962c0e388ec37691f85a9e0d42391ced0060f8edf2db4112d94e48b33b491da80bac46ccfbb1ab36bd37f96c185ef631ce5349c9faeaece2afb726e9e67d69c560b2ab17f85defc77dfd9fa6a007ccc0e332336c823dc1a34ce2fd948659078d942eac9b67e3adbbea274032d1eb6d3867747d6b97f01c036edebc2de5e7f7343fef2a9612d2a68cf3807bbfd0c710e048186da77eafbb5a2534f407b3f3dfcfbfa2ca3b3d2ca33bf4fb8493b5c74851cc3451708acea6240d56ed6d9b959a74e60c92730e7706de1f9262e065f562c36a7d8de5d52598b43de97dd0f9198e00ec135b7324f0421fae17ddd47c10f8fb8edf46ae7256b188bbd309d000eab5814938761b59bc5710ec72604b71a0063b666f5684e10031e8c522944bb6022d4ce03ab12d2a561e1b4478357aa85b39dabd1dad9d09b41048fcaab365c13c52f5720817a9fe3348f98a2bb96e6bb07dc2b085f726d3e571a62f8b5e075b8a699738dc5ad70dd95473c8aeb5bfb34da810d4fdae71e8d1c69588e8ec56416c79955b22ce4604c1c7b1d7c14db2d792fb3f579d25542a9146db1ac9aca319aafa42eb4e077d11439cd5555419fb586ca82244cd7fcaaaff7787f4c1e3f72e46693a870edbddb77aec559a4bb9ed817cdac47f63b7abce3a5a64a68f68b4b1284b829cf36cfcdc0bb83287118e08e44d597f69d44b9b62c3b363545e24a49fc3b132f06ae374d9c6b83b7655e6cc0d5fd7dfcfb3ad878eed9e144c0ce957a7ab53cc135f6ebcbb5e8dd3b615ed0798c87886c9ec064428e17a464d770b3ea1a2e590578459e8229a3117b0c248061dec0da0ede4106b682e3331748c07649c9659014783a20c82fd85b1e650e18e0f79a9ff599afd2684e7df253592034b86bc382b5b1a1c34306e512d1ac4958e28c26386ba320c67dc8723326798a58e007a2660f5d904b20da8a0c882930b3c05e2ca164116510927e8c60607cf2df2b9a882749389628c7bb6139b513860fa5d4f800748def0940f304df31c9c80afec949b04cc7489d90840d0fbbe88efba33b462dae7f8cc45f91429c37e9bc5c033d3ea7b049fe7a3f3e81ff7ebff177a7bfe5bba3a611fcfaed10fef1ce7e9f9eef8efcdd07a39bdfe1df09ac4b0f0e06962b564cdb1a04ce7b562a2940dca0697488b75b9aab7a789965ba0eaef640c958d5e3fddd47dfef3efe61df76e7ca7594b822eea12492a7722f7b84e3dc65bbc87604f8c165b5bcdf55d69ad82e17f1ee46f56ea7a2ecdbc12d27a27ad0c1cdc05d4950de29e975318ddb940fef3a235997cd7384e44efbe78c68ed2759343d511c2fc399633ddc8b173b696dcc58b9bf372fb8fffc8672929c778eaa05929d60f9250d422b0becf638427c4a0ec0a5a08309e2e4b79c07f65bce8cda3bea2f27b4cd39d198b5e7e2f453d1f5f33b8a38f1552b3dd259bce02ef821f97effbf7e986a755106b1759aa17b7bf0c3e3bf7eafc5d70ca3ff731c2c73f21de0e7b81e36ed46239610b05438aeaff127788c50d4ec4ca054f0bb91f6c3d810c7917611cb1ffee9889beb2b2c6860f52ca22532a8e60fb816d523379eeaaaf1034b78628999d57a7c2567d10bc66456912d9df10ed8696b7e0db239e58d6e9c00985901f493f402cd53013eb231bc776044a8a2d933d14ca8ee8e849567a3185e635f55c3cbdb359879d3677553908e241b16bc3b6413f88d9e63d7d6716fefbd41f04c4660d2802e7a2cbf5db69692fab125aba06cccaccfb22a8922c810ca525d96303b64c1f05aee3196f21ada018cb5dc59ccf3166b3c543192b98e796c228954a52256a980552a5ae32961d0e431494a8598305a46458ecfbdccabe41d0e09beec645cf114e8f72b5ad81f8e801ccab72fd9d7385df22fc18c753dc2ebfd75cdc17e9563c19e89fa9400d0086e1dc7acb2c6c954642c47fd314d40b7b0d50e277bc669637f6e6ec8636160d981f9b2e021e66030c6a3c1a7d51ed6e50a1f91f2787db50ff894c0173ecf1a81f05615f19c123c7c910a7218257e8e0f1f7a8fa4f54d74fdf050601020c039970284b3a282f73e26c8198844a1a9ce522973418028c74198c49ad7fec486ec3009a045a0bef1578db7c0263d46926cca624cd8356e8b52b06ae8f5e7e88a865ead724aab66add49e1fac089a4549c0deb4ea4b8f6e17592153dcda76bad68e7de2bceccdb13c032bffe87bb22bff31d2f10c727268019dda7a6d97d2a311c64c43f2b7e82ea4f5a1e91ec4bcee474c2b15f7e8fe95bd7bf9c677860f8856fa806d865d7ab6a6f8e4e7bf909eb1ebf0d29f1669eaa0f7d1b3bb50d687a4fba8592f5a5a89b847ef175f40c920a062af057e8a8e29c45b2fdd393a0de2cb609bbfe12f137e0dfdb6be1f2193df45f17c552617c72f3e33b13652e59ba4ec32459031e7804b99dd73f526fef5c1f887dbc952df6961c09d684511031669e9bd61e7a0314d39012dfba70b819ffe9c9cfd36f9edb7f3895506e84671fe2acfe8903c762887a400560519f8be3fc1609e23e45e908c7cefd1486ca84d06ddde03f83ab807f7ef2945e725ed2e213234678ad40ece3b675d4c83e47ec6c9f6cc1c036df2d3df8ac3c92e6a4216a7451fa9374c59a68b9f2f69a34b26833fdcfd840c8fa45300a273f132785d5c80779ecfe332346a5868af9f1510f7d700f7a1f82a75712ba1a56be8aec077319f72e5c138fe70802f820e48b2dc636fd71c0ed47cde99c0e943643778f674c25a3eab5e2d6e135399447f966cfb5812529b8cfe2ca1313e56bb7c8d94485cc45172f1a4c1c1c43026345e8f49501419c484f3228b75a5c432ff01685b4eb3dc2f937c152da40b61f822f5af416c3f7ec21e52eab3615d7df8be1298c7320e71b7888511206d2b30a70c24fb2b4245c55693163b1433359a4ae9287913bc66e4bc8538dc0842704291919c0471468370fb49e4b124aa9bbe6e1aa29c70849f553a4689d0b15a3e6a9b5be39468ab3ab301c5745114febf3e778f982aae7685b653c04e07a3ed67b9ec9abbcf70c344178ce8a5f2ab7e3f7bbef7bf8ff6fef3fcfa2f8f6e1f4c9c6f64de87f34eee7b21774d4486fdcb4d90ff030000ffff010000ffff931e47fea3630000") + bs, _ = hex.DecodeString("1f8b080000096e8800ffec3cfd73dbb692bffbaf40756945393265277dbd77519c4eeaa4eff9a5493c71d2bb39d79da14448624d912a3fe2686cffefb70b80243e49da4ef2de9b394d1b4bc062b1582c16fb0160322147e9669b45cb5541bca31179b47ff03df9477091cec84f69b624411292b458d18cccd3a4c8a25959a459ee93e7714c58ab9c6434a7d9471afa3b80ed434e49ba20c52aca499e96d99c42c39012f8b94c3fd22ca121996d012d797dfc7e2f2fb631257134a709b42b564141e65035a3886a9196d07994403925bf1c1fbd7c73fa922ca298fa3b3b93dd3ff2384a0a32cbd24be8fe0929b2928e19915152d2eaf7262e73fc9fff26bb1368b98cd3591093074fc8228873000a9265190799f88d403bc312bee430de79319ceeec7c0c32926f93390c2b5992c3aa85bf4ec332a6deb0ae1b8ec9d9f968ca1a94593c0b00cd2119028b189e1ace074217d1d25b945010a509f11eac8a627392a51fa390662372b543e0a314fa215d04655ce4fea73c5bfc9d0650f62658b30efe67efe8f4ddcf7befd30b9a40471d6d8fd2f422a2555ba5e5cd4827b3c8d238a699373cad4a8f8a2c86814ab4e7f374038c645d56b4230b3619fdf82228b09bfd695dbaa4c5db57508453d294228f82ace00c66330194b08130ec484a42598739005cdd4cb54a60a759bede1ebfc0310e95d2042412919c9d5b901c273850853c51bfc9d2229da7f1d10ae61fe4b8265382a15906ebc3c49d539abcc43a931a10221a9ba46774935a468ac559014c0d5c7527c0f4885edab998501a3e6fb8c8aaf033ccd6c32764f882c2ccca8561948972e2c1f7915c8b628295c82fb9bc48cbf90a2b3e6c42987c5175a393713c771091d135a80a2b1d66554544985e26711a84564282bca059945fd4a4b03fa0634e618927cb1c34ce22cd2899a5699c931896079414d0469dc2a260c030b9acfc2a0a01f72f11204f00112c0910ab792638424e84b8100e419e8721c8784e73002cb61bd051c3827e2a86376309dbebe0d3294dc257b34d2ee17b5b16cb1457c63b5c4cbf44eb08b4f5abe8a7493e6a9025e57a463315dd3b401024c7090ce563109f4a28790da9aa88d78d4aac403b3651790b84274116806689dfd13f4b58fbf278810b04c60c0a2109d9b01b901684d08a2f4d8d7b88ed67d83708afe54c6c619f3cb9e93c889f27c909ac2b09232b262f22100cd8d3b64454b7d056217a9904b398866e5c0d1a144615c9dfd8ce65c5c2abfaa139453dfb13df3865a1c562d2943bdb7f38494e4c0a7809c1cad6c6efcca6cf9334d9aed33207f321c009627a8c6fa71644e7aa4a5b96d1a97d698a1527b3e9c371d7721c573b11b71954e2558e21b6e72598276074cc03b6177e5078d789f024c8f3cb340bdb914a5002f1a62969a5f6fd2ff22a45e3ecefefdf9f9c826d9511e848e36f1bb2e727c7afe8569eb49363c24b048a60135dc06f6d926a2b0176fdd3723e07c54f436f2469fd6841bc6f984d20974a131c2551e18da66a9537fc8f8416c0830bb6ad0e47b88f06b1375c81bd33d4a04d8ba3d9912a121afbe39664340ddb8940d87c5516b853b543da4c2195e81b93b93f07a0e24cceba8795d1a2cc12173bec13e2e2fad52c985f8459ba013980fe4072412e401a66699085c2b0be714c4adb006bc36601e35821706d74cab431c3d307845e65743f24c349be8585be061a7394bb3c97ac6db04b027d70aa804e6d22c0310219d85e2279c4ed3ecf4e9d405e4d90dcaef9fe76f6076c9f3ef02cf7640b70e4c35a7d19cc5712f2283426c6ca006659fe88680e8750401374c53ebc3b3e4ad79b3401058398fab2476203c37b1685e70627f451c9dfed344a667def9942772149d1c245e702ccf94b6f3456200ab4ce3d84d9ab9d9011999083fdfd7d15320a85a2aa3e92cf02edd5a1a1da049ea153ea6211d36658e9af82fced650256e08666c596b1da028f9fca6b9d1ab537464901e6861d0b768a93028a0aec1f20ff7550acfc75f0c9db1f93bf925dce4b06719cfcb42d68fe3e2dc066d8b37858061432af084726854acf695974750d665d9fbe153067e7370476c8f98a78d4c55a8329fb7d8760015467e3c6a621542f5557135d8b817b8fbdd781ee73dabbbb99eee84e22987a45992bea148bf5bd0337f674a1ae7a8483757f086e6c998474112560cad9b7163038928b04773b59bb2b3d98a861a2c07b8035f60d76e1c47c5aa49b0df46cc5ccc235055fc343d47c966e587dd3ba02677fcff6cffd22fd001d64473035a0cc1ff20a9897595e64dec168aa8e43343f240374fd60b31d90eb6bd2941e87311de863e1d50fa19a7883864af4684f683607fd0cc6b098988764f0ed68601dad60893420cb8c1fc560317ef9098f9245fa05663b44bf2dfb6c93adccd83082b971f62c16e2d065263568723ef14e4c9b2c5a07e098d93059d8a7cda12a145f7c22619f748dd8c25e1e5165fa9ae1dfef875599c2cdbc80510104ec165639c185c5bb98d800241aa63a5fd96eb48853b0d0a01bbb5ac498a0452d62f1d142b19d915a54f30067d9bc4403ff0dfc3d7e71ae0a1d02eabca9ca7db4ca62caba4526022b6c9b5aad5a37a44899fd33d4cc2f42318aed6e293414f170b1e83dc32ef4ed48c7d8a275862ce2c0865f6b630b6731d6f7efc1d7f4e2b6fc14cec96d98b6066b2f7773cb54d6ffb2ec32f5632f9e99cab093676edd8863c568ce57e698208c314d0493da74fb8f2df32db1fc9f36044d09b4ee53eea1fc4a3ba701895129658226656c1c640a888f34cb01b78dbe2fc99e3882bdf75777df1df30cdb6d881d1bdc51878b2358a34fc3125472be0a30c40595630c486fd56dd2b09270ac53c5dfc0210abc7e4c9365b102938b1c38465cdb072d0315d8c056760a83c830764a83b056446d4f136530705928f53c43f78ec63248cb185589a9ac7ff0697fb01b1198f67e631bb83ec5099704ad99a74d98c497be4cf14aee72b146a3561675f1a70f737a738686512145e9ed9c994cc054bba024201861441b05da6eeb6a254deb0b90b79bcad9ae92f2d8c653610590ec7fdb7061e8bd150f00c83830a02bc6d43712cae2ea7616e5c147d809441ebb62902139735c20e41fa76fdff8394b5e460b8d4a89426c906e0a96655db10303f9137235845e0a50667bef41be587a74b38945ae61f2479e26c39b1b3d52b14973236e077dc1d880a031ebc416b5e817a7e4b8262c957b8770a496b767c137b9ac3b3c699989dec29a9719fc93ae293f1c32e78703d439ab0f0c7c534b17fdb30ce2dc2ea7e356511f91eb6b8315fcd3811ec4d7815a15ec68e10992472ad361cc39a5a841aab310e4328a6382e97c744766b41e2bb04ba41e3433d3a4c9e7892a160370512760464e21300f67a8c91e36cd3bfa689e83e46f81fc4b5267f763ccc7c6db1da7a0f9bd548e3667d3167c9d6ac73a494eba7c9ee0142629d179aa429d16999fc3ea2fbce1187558b091d6dd27c9c0f8e483b659c30ec5168d8d8a467f29398e9d767d39c004d8c015aa6402e45c824a9e4c9d6e4762eeb6792a87f2139887ae0d453b4324eb8cd3cb0823d69774b6c1404ebd8e604d252cf5b4632e154db6476636a446034602923cd4a6a865d9994b4a476678772a6e98d2f7d19aa665e135bb96b94e2fc1004e2f7d5c5e08e24bbd545fb56ec62c5de390b6d6c3589c4af6afa6d945fef54e2265970529a5db63ffb3e5806f2b94373dc5ce327e34c3ac5e8866955768cb2c034341b478e0d34fa03242ef0aa6a66a6490825d00fb5e7e02fd6265a302764ae3054fd5690ea1e20f9ae36d08f3eb831ca0cbc8616db3d7c5fe1f6994807a2396e58ac02f819234f31f801c9f648c68c510c729abd8f619acbcc8f40215c6436f51f8a7749e215fa597433bae20ec40669bc52b995f78706e9b046ba0ffa6c74c6a4bcc3a957698afcfe890c6b4a09dcc367a344e64b08cae9d25dd472a6c7ce8e7d95bddb26a7dc8a692b414786d0f4dc120753a2445cb12ddb8b1f064b77220c19e8464752c83aaa1d62a7a0cf61e03d6076d4e8069a5588cff56a9a9fcf723747cc234a163124d776e295475acc3322a03aad68a7a4002781b0773ea4dc8046819427775c95e55a224322b23cee8a1560a360d7a5f231199646a067e988265da49449eaa4b82c7a8a0e2e1435ba45a863d8bcee538a2caa216b7b16adc8c786a800aca4d57023fb38c06173d22d8fc480860722c1d3ee24d99af3c735775a8103f4fb3c2ab82c74146efbad2fb2e0b7609a4c2e5b29de430ad53b5f5d66cb8f577faea55ecac75b94660afe8daed0e9297686c04e1991aa299f40c6acb83770b9165c4e09db6cf43a5a0a4596f664f5ffc42f08c48a40426c5fb72bb55890750d09fec291afcc08a291bae6824f5d1c120cf8ccb149dd2318f6990bdaccec7b45a49f20d0d85ce33956a113ddf2307e78cac4e0781b59b304a1c76dc228bc0ac8eb7e6b4e6452693da6ccbb717de2678d82ac23933a2e1df7a2b99d7ca74ac07f7b16e346a8911031e8767bf49fb084c05a71e8974ba367870fc76ae8d68a1045f9cae8dd406c4256639ef6aceae4cfb590617b68f7194d3307ebaba3aabf4cbb9799e59335a2da844fe0aadf9efbeb3f5d500f8181d664a6c9047981a34ce2fd948659078d942eac9b67f3adbbea274032d1eb6d3867747d6b97f01c036e9ebc2de5e7f7d4dfe7257b71605b4a79f83dd7e063f079c4043ec3be5fd4a91a92720bd7777ffbefe90d158691d33bf4fb8493b4c74851cc3441708ace26240d566d6d9b959a72e60c92630d770ade17912179d2f2b169b516cef2ea9b4c521efcb6e874883e006c115d7324f0421fae17ddd46c10ff7b8edf46ae7256b188bbe308d000eab6814730cc32a9bc5710ec72604d71a0063b666f5a84e10031e8c522944bd6022d4ce03ab1cd2b96119698f06af540d673b57a3b5b3a1379d08ee95576db8248a5f2e4702e53ec7651e3141776dcdb777b857e0bee4da7aae24c4b06bc1ea702d33e71e8ba970dd94473c8ae95bdb34da810d4fca738f468e302c47c77c328be1cc2a59147230268e5c079fc5764dde4b6d7d9e7095102a455a2cbba6728ce62b890b2df85d34854f735554d066ada1b22009d335bfeaeb3dde1f93c78f1cb1d9242a5cb9777be65a9c45baed897dd1cc7a64bfa3c75b5e6aaa9866bfb82441889bf22c796e3ade1d4489c300b724aabeb4ef24ca95b2ec486a8ac09512f877065e0c5c6f1a3fd7066f8bbcd880abfbfbf8f775b0f1dcabc389809d2bf5f46a79816bc3af2fd7a275ef847941e7311e22b259029309395e90925dc3cdaa6bb86415e015790aaa8c46ec319000a679037b3b580719e80a8ecfdc2001db2525974152e0e98020bf606f7994396080df6b7ed667be4aa339f5c94f6581d060ae0d0bd6c6860e0f19944b44b32661892b9ae0aa8d8218f390e5664cf214b1c00f44cd1eba209740b415191053606481bd5842c922cac025fd18c1c4f8e4bf5734114f92702c518e77c3726a270c1f4aa9f101e81adf1380e609be63929115fc939360998e913ac1091b1e76d11df3a33b462dee7f8cc45f91425c37e9bc5c033d3ea7b009fe7a3f3e81ff7ebff677a7bfe5bba3a611fcfaed10fef1ce7e9f9eef8efcdd07a3ebdfe1df09ec4b0f0e06962b564cda1a04ce7b562a2940dca0697488b75b9aab7a789965ba0e3eed8190b1aac7fbbb8fbedf7dfcc3beedce95eb287145dc4389254fe55ef608c7b9cbb2c87604f8c16db5bcdf55d69ad82e13f1f64af576a7a2ece9e09613513de8e06ae0b62428ef94f4ba98c675ca87779d9eac4be7395c72a7fe737ab4f6932c9a9c28869761ccb11eee35163b696d83b18efede63c1fcf31bca4972de39aa36487682e5973408ad4360b7c711e22e310097800e268893df721ed86f39336a6f29bf9cd036e3441bac3d16a79f8aae9fdf51d889af5ae99ecee20537c10fc9f7fbfff5c354ab8b32f0add30ccddb831f1efff57bcdbf6618fd9fe3609993ef003fc7f5b069371ab18080a5c2717d8d3fc163b8a2666702a582df8db41fc686388eb48b58fef04f87df5c5f614105ab4711f5ec1758ec5914b65fbcb3c6ff07fc16fea4c2703741752ad9da44ec103cf9f10ab08daa577a3c15113f718547aed8be50f72f59bb5e3026b38a1ce9907ac08e8bf37b9ccd3175b44305c0cc0aa05f0510689e0af0916dc6f60e0c175b347b269a0916ec485879388de13512c31a5edeaec1cc9b3eab9b027724deb0e883833781df2c54ecda2ab8edbd37089ec9084c1ad0c788e5c7d7d6525622b6844594ccd2fa2caba240820c212cd56d0fb343e6cdafe51e632930a39d2059cb9dc53cf0b2c653212379d43177ae2496aa54c42a15b0cd466b3ce60c923c2649a9101346cba8c8f1bd9a79157dc429c1a7a98c3baa02fd7e450bfbc3119043f9fa28fb1aa74bfe2598b1ae47f83e415d73b05f0589b067a2be850034825dca31ab43e3642a3c96c316314d40b6b0d50e277bc669637faeafc963b143b013ff65c17de4c1608c679b4fab24dce50a5fc1f2787d95c87c4ae00b5f670d4378ab8a784e099e1e4905398c123fc7971bbd4792f6115d3f3c141804088c9c7301fc7151c17b1f131c19b044a1a90eb3296b418028e75918c79ae70a4546799804d022501f29ace65b60935e534936653126ec1eba45285835f4fa73f489865e2d724aab46e76aef275604cda224608f72f5a547d78bac90096ead3b5d9bdf3e71de56e7589e81967ff43dd995ff18f904063939b4804e6dbdb673e9d1089dbe21f95b741bd2fad0740f625ef723a6958a7b74ffcadebd7c653dc317502b79c036c32e395b537cb3f45f48ced87d7ee94f0b3775d0fbc8d96d28eb43d27dc4ac172dad44dca3f78b2f2064e011b2e70eef22630af1d65b838e4e83f832d8e66ff8d38a5f43bead0f60c8e477513c5f95c9c5f18bcf4cac8d54f92a2cbb0d1264cc38e05c661775bd897f7530fee166b2d453450cb813ad2862c022aebe37ec9c342629272065ff7426f0e3ab93b3df26bffd763eb1f200cd283ebeca323a248f1dc2210980554006beef4fd0c9e308b9152423df7b341219c1c9a0db7a005b079388ff9e5c74de32ef62224373a670ede0bc73d5c53448eea79c6cefe431d026c0fead385deda226647e5af4917ac39485eaf8019936ba6432f8cbe34fc8f0483ac6203a174f9bd7c50558e7f93c2e43a386b9f6fa610771010f701f8aaf521737125aba86ee0a7cd8f329171ef4e30f07f8a4e98024cb3d16d6381ca801c93381d307cf6ef0ece984b57c563dbbdcc6a63289fe2c59fe5b62521b8ffe2ca131beb6bb7c8d9448a388a3e4e2498383b1614c68bc1e93a02832f009e74516eb428965fe0390b69c66b95f26f92a5a4837daf049ed5f83d87e7e86bd04d527e35e7d78620cd463198798ee626e0470db0acc2903cefe8a5051b1d5b8c54ef54c8da6523c4dcee2d703396f210e3359084e280e2427419cd120dcde893c160576d3d74d4394138ef0b372c728113256f3476d73631c736d156736a1182e8ac2ff97e7ee1953d9d52ed0760ad8f166d4fd2c185f8fee335c91d119237aa9ecaadfcf9eeffdefa3bdff3cbffacba39b0713e7239ff71979e7e87b21772d4486fdcb2d90ff030000ffff010000ffff57cfe20f64640000") gr, _ = gzip.NewReader(bytes.NewBuffer(bs)) bs, _ = ioutil.ReadAll(gr) Assets["app.js"] = bs @@ -63,7 +63,7 @@ func init() { bs, _ = ioutil.ReadAll(gr) Assets["favicon.png"] = bs - bs, _ = hex.DecodeString("1f8b080000096e8800ffec3dfb7bdc368ebfe7af60667b8db367699c47bb7b8e3d778e9deefada3cbe38b9bdbd7ebdfb38126786b5242a226567ea78fff60340bd1f33f2d84ebc6d7f483c12491004011000096aeffed1ebc3777f7ff3822d4c184ceeeddd779c7b872a5e2672be306cebf0217bbcf3e829fb4f7eaaa6ecb94ae68c473e53662112e6a9c824729a1a9568971d0401a3569a25428be44cf8eebdf75a303563662135d32a4d3c01ad7cc1e071aece4412099f4d970093bd3c7ee768b30c040ba42722686716dc300f8aa6e2de4ca5d0ad8ce0a5603f1c1fbe7875f282cd6420dc7b8e036823f62ce0d17c7f24a2118be60e8fe3fd915e461ef41dcde915e1ab824024fba393bce4d024c1887901d77a7f849502c54f470852707f728fb1bd5018cebc054fb430fba3d4cc9c3f8fca828531b1233ea4f26c7ff4dfcefb03e750853137721a8811514844d0eaf8c5bef0e7a2d22ee2a1d81f9d49711eabc454aa9e4bdf2cf67d71066470e8611b062e8de481a33d1e88fd47ee4e0b902fb497c8d848155560b5aaf1d42c54d2aa11c8e814662d008a41b1f152c3a48790168998ed8f66fc0c1fdd180839b9870d8c3481981444649fd8c5054ef22b98dc57d0d3d6c3cbcbbdb1ad557460814d9532da243c1e7b5a8f8b273794910b6f46191ec80a7a2184b1185ad630cb180661c447838da984b1a9f297ec827e321673df07849ca9324685bbec4f3bf1c76759d90c06edcc782883e52e1bfd550467c2488fb3572215a36d56bcd8660709507b9b691e69075859ce2c88cb7bf4270dfe75f14dd163c893b98c1ca3e25df6c8fd4684b5ba2e22eb842a523ae6c0fd175db8bc1451a0b6d94b15710ffe1eaa482b60c86d363a049991206aafc4396058806974c181d990bb7d941b7f6288754d3241d6699722bdfa4b673021fda505647f25e4ced202b25f5061aa125f249676918a1ae30ad45c35c8bccb769ed567baf286c038df94131e2b2d51227691a74026cf9a1d486d9c4839d314948229baa2d7c4700e329c45add1100616a46154b4f1a58e030e732923e075e14c03e59de678006b5b49067eccf9a3601cd299c03a65c1947ba7f304351ef6a212407f3edd7afce4db6df6f8e90efef7e8e1b33a0513eecb54efb22795c1e7f479147f644fcbf739211fc3ebc7f9ebcbe6b880cd22d7e7a0381a7c1e881960bb53327a6d788f76cad7c4f93c9073a43f0ef2d97a5ae504ce15719bbe3817ecbe0c516bf2c8744802ac1145b3f38534c22199c1a6e7a0686adae05c58ea3fddd9e984e4b7148b1dff63502bebb0f05d1df220706a54ec45286bfc1fa1f025675b21ff98d1f44fdffe29fef8b00090c9152cb131a80960e9897d5395bea23263e33f02efc3426b186785ae65b0921954dbc29dbbbb455df647204a025a660a0b2b8b1740690d42c56010ea9ce1544d13c14f35aec38182e6898813056d0260c1b186151256f37369165588969fc03ef8e3b878dd20420264ca67e5b260c7bd318920acc463bb14dfdba311d2fa03660a7ba762109584a10180ef227e56ace3fc0c4bec1f542ff94f5fcc781ac0720b7680a07a72ce69d1b46bc99e2f0b20b8467218749295e12a045251efc3992660108d267b329ce725a8b7464c271e2e630e3e398f1eff99564f6657f7d193c7b0b612efd9dfe3092b16d33d629b1cd842faa0409d8fb0dad5fbb70b4b6a04f4fe0988054593ce5598c04db21af948d2a0328e9c3a959f24b0c5c06905cf1bf8898a7d751e554aa19c67cbfb1f46cd7a40fff91cad211484eca10ae5852fcdd7d154c7cff6a605ed8197a0fbbdf114fef15a4725e64507a188d21a3684efa4c0c95a7f60579e8205e4fb6f45acb61e02f42a39e7c1325ea095c38a5fcec2c799b584fb5a8480e181ef336c0eeb8a4a9688dade187a1adc35cecca0ae61f8e7c292a0d13d82e8edb8208d3c933e72ee15d003c5634eac62d08370f4d4bc815fdefc8a8491c3e9f22141ffa1d9ed02f4d3f1d1ad50452f52834c36083b359bb550b3cdaf481150ef86276620abcca0faa2d1f15b0ba1abdfbd711a5424bb525a96ec8d815864798f41235805dba31b6d7dd4c8dfc9441b50ade7db4c45c1928133711e31396391f084d63c593e63195eec9c27112e4199f6cec003052490e23ec09fc9f971844ab1502800b854c535640227f441c756f555a51c88220246ff3b59b775ddd5acebe08243b5f6164fea25e4d28c26f9285e09e10b1f56a827938262fd6071fd6aeaa978f26e814e318e374d682d620baec1e9156085f1337490c11d8b14ace01e98b01c14be5b2e162c4c91e4193ab8586795c8538ec4791db4bb378eebacb0166934db2b6b60560d703280a975c8ec43314f53033ebb891c1dd29f6ccd653158d9d9ba723b9c6ed168205ae59340f064263f8e3ae6aafea2f65879c87eb6385eccd300ec0d60d0063fd7383787870dcb4584dc0db685460ada960f4b089d5cfeed2a2677d06d88474cfa48d8ac0729f46a76cf44e3e2029b1c62c116fe728f8fc07ea0b98247c18d8589d61ffefd01d0c659eb257743946af5a0668f6435aa916551331c800e018f756e4fc460296020e30fb5f1e6c608be84817d25c10bfd088369836f5875ebcc0066a9e41ec94478347d9f18c54cde70b3b8bc5c07be94015631ec2ccc13c34d5a257ddd64ab322b6f511335507d269a2c9e4d4ece1a55aad4272227302b28ddea6d88666b566cfa2ddd73617da76a13d6082464cfe0c8c8186ddf0e2808c7fa0a5d65589af41561e162bd2632bc69fa54041a2d1100b2a207bf66c467b676c659c747143af37b911ff7637ffd815967ce51b1881a03fc8e4aae33b24266ae35c0dc4608c10e0c7ecc48f6932ba3331ec83e7e183cfecc3e70b49c3709f02249d4a6e3ef46f64b4eb4a742709b9a0e06da158b4445f2173217ae31db1ddaec4b0d751ea869d365f80bbce341cd97bb89899d13d8ef6420342c0c3c38e74bfd2a0da722b9bc64d240d7dbaca7d1f3a5a1465319711491e75f8e600b1536e9f583f26e815c0142bd22b5a8cd1d229617a8d477d0c70b146fc60b5e83e9ae6664ae6f44b1fefabc470f46e091588a4ed84edd9155e7e8ae1422991b491df35202193c2dd8a463565a964a650844d975a3d8df87614c76f27e77d8f33eb3a880fbc55801e3d80d0678c935784fd7159cdefa0d2a12fdde82c5fd1adcefd1e4ef42af235603c0fd068457eaee523b85a54a78a7a22973c7f3482582bd114928b586554cdf3ecd6d9fd8a5de9cec35207799f214ea7778d0b21eec16c0dfa4596cb83e10644d015a24c9c6660394f439005044fb251d6e55cb63a2d7ddfedb080377dd018f389121e8bf514f8cb51cdd809007d8e19e0c9a962840b181bd2e0ee9f2fc36887754a315189eadc42988003716a88800f8b00845b17b53094960ebc3d91ca3123fe67b1f5b0f7fba3b71093bbc3c20814f0ee23964fba16a86c18a1be5db3ad998493aae190a28f15913040002ff1e0768c7015ac1c88397ecbd91c1f51c28bd04ab2174e1cfddb0710dd7a7ba31d2c337ef6f6ea45e9cc2bae781c4342c4e788cc0914c78b0fbe8f2f25feea8997f94bd666fb9111b52023a898487a4d43f3e30caf0e001060aa631f2402880cdbdcb4b7cdaeaa97b1c91fdfd0e1fab6cf3f04b132d8d3b48f63ebe1582a9d40ca7187867374fb2dca6cb381b503e882205c6aa78fd3dbbbfcf52d05f3319f5aaacc1c4c5534b0b9534c354796fec04cf606e16b05a6bb7e61baa78b4851aead4c32dbed1aad18f26afe9c0cf50e3b8d589cfa3b9488a3eeef774329b0de9e54b6ad366f0f8bf44a237d7a167b6f5afd156266b2e3777beb8b93c68138db0a54db4d24cebb358e91c358e51dfa59db40e8bf5ba5b68cde32c1d303aeddb4df7d310421681ae1acbb7b49fd624d1effb69b5c22191331935236707be0f83db2c7663190021d4a6ffd7b8d7d2c3e9bf0933391bb08b1ad46eabadb5fd9a4d7ecb46739316436ce7669b5b31a1ef987d85630608d796afdf0dad9b884b963f6d6c725c3f7585af68a75e771f2d145866cf2eb98188e6666137caeede19c357ca484f5ceb6c61d5ec8481a3c959193f4e339d0dbfb880b7ee3b190a9060b005c5eee8afbb61b80bfedce5e56e7e821c2cb4592245e4074b6bb26223223549c4ed9f2bac187bdd470cab4c4d87fd2c230c3bbadbb43f5e7fff794f14d678ba385f5b6437e0ebe794d4362ce9213f75993d0292c2cfb2e2aaa6f2bd36a3b7b21efa7205eae90115d5935521a32ed3379826b93b86216a4fa589166e919ae946c28c47939334c6641a3666dfa9240ddbe7960775a1a18fb9348b74ea82d135f678102ec64557e344c08469dc6df801b85c1bf6d6bed8b0b71503f200fe5c25cbb1afbc148dbf2ccbe4a8fa783b83945aa738c4e769d741fc1be80126cba6f21e76a422ac3e424e9b49e00baae4d46a22162a1f0c879c9d0b8fcad621f92de4df569d715f74f02d153abee4819a776a705b214b7cedd1e2b60e6a66903c1e50da14fe9f479e6a02be785a6fd6e576af553be2231486c40df53367353087850566d7b69a9e593ced51335d636b2d137b71bdabf264b916a007f148f9543034e8b7194c17062c287d9bb3385160b28494f1c596c011ec18689bc0d4b1d262746bc0df8261b904d85f2f4410c82215cf621e0fd69635b5694f53d311703a0fdfc94f4951e12e70938c66ea1678a9793cbe41fa9c029f8579a46625cd5df686d42c5ba8c0bfe9b9cf336c7a663ecfdfb90bf39e07c96f7eeaab8947f519c9a983d71204c288cf32fb65020b744fcac3bda9e93e3eea9968e97fd860a9b0c09ce06666fb1666b691f0566b4cc7328ec1943372263d9b3bf475e873bd78560da796c722ea11d56bcf7fa5ca390835c3ffd0246fdc79408fb8b78b04bab8089730879f98b748a3537bd8bd693a632e6d7e2e102a17b36a61d87c7106951cb050c269c4c111b5e9b61f92711bfe687c854176782583729d0a0f8442e96015e2d9b30ce8a0cca6509d35cfdc1e060a4dd3a613725589212e411fbfd7daca0300774e7cf020fe429def8fee238aa0595e7c04cfb5b58ae79255a6c75619bb016a10248c647480da4046662a09b36c73fc39ca2e6241e17c4173b262df071be427a5c8b3a5b7170f40bd3a643d3fc0f4f91c901b514ccefd2acb2e605f7fdd55eacbc42cdbdb387b019f8a002f00b0c881d84dac7e3902f31ecb5a2d6414636662b619dba26b395014e17c9fa422ce34bcec529e86ce1855ae7aa1b1d3f960d00069829b5488581682c4fb623ea412cf1dd2a81dec44fa2049845ee7564b1e0aeae18415ba8c42a82d1c566a33ea35ce6183f1135b05d6b5bd533d13da3175765a3f7dea9ad638a1510086984f1ad99943eb9d742623b3dd5ea6c46a97298d88d5272ccba1060566055bd9627bd3138273d9095240d30550b8c6e04f00aae8d22150175b92ceaffa0fddae00673eb41e799efc6d01e682bd63037c0b4c5cc54eb7d9a91031e21a4ae896ae84da13e1842e948a483ee1c926c1c2c8a03df0410d752d81124629b77ff7afe7fd9ac92001740be65b216cf5298149c0645ec0761af0e8b41faf41fd134bbc22965f8f02b102e09aa3e22ba129b33850ead48a8fcb8e0d2634a6814f0465df3ca6bbafb8875c849b84303f1eee38d2bc61720358955066f922a2435b7adb3a85bac53053418d3296e9197b2396d81d39ee56932bb51a0f45a6d3d02c5aadd5e200505f50cadbfee8af2acc8fd3648a0c4175a9b1417a8bdb639dddfaa953539cd844fa481b582791e69966ce85d80b526de70737029b49de3745406e776431b67490ffbc0215fd25904d7a4416309070bfc3efd2e898f261cd3e2475d9e9a6f42e703d31c915e9fe8274276edf72a6450c6260407c3aae6129d70719ef621c333fb55ba08fc193950d33f2e40d4173c72221eb81a7466188c863146d042e5cda4bf5440e7ec08cef8d11d667b0848b8da64aea113f13d90d1ff5c9afa8abaf8a04ceab87ea4f007e57b0feae59ee2546dd16086af07c653c11c16cb406730a4ada7b15f0ea802ac9410ac0d91f7cad0aacae69f380ef1181b8beff81f90eebfd0facf56bf03faa995e37e285f401bc395f047351d6fa22d58dd1aef2ae0dd2ae7a437c9a1221177f367c9a8ed21e9f86faae2c60b63adede52cbd5ef5cc1a86de6e11454c245a9bea665db39baa1d85ad39b5fbbd0e3feac59c7dedabcc88aaf9346f2438ac7bf40b6a07accd1068bf647e3fffd913bbf1c38ffb3e3fc9bf37fee4f178fb6bf7d7af9d5b877e1a3710e734fa86a33f5ad3113858bd25156ba2827786306d0c446ae4087cdecd6022b2ef158baec6566d4e37b0d538076bdbd18cd1a3b744cb1d77c1e82ac35a12d2949ff90959c54b9a3702d6cad1be8aeea31f4b172172243fd86e198644c7355440a67cb5e7c529dc6ad6f9f96de02993c0158270fbb1d86eddc5b2007016719ffed61b87302acbb37a65f357851b05c31ee9611645f761fa0b99e4ac2db5e5629255b7e05b5840d6a8a095f5c45351180ba72fac7f8a8544fb902b2f5365441c50d1ea526fa0c7ac512b34fb3d8d252b7e0335acf7575920705e8f600b4e8016591b8ec6f12340a30b39708b2ede58c49533ac60215b8cb50088c04aa567c61cba8ff28d8d4c656523c51cb752e1c789332ea365bb948772258182ba2d71b8bb21dfa5ab55261c6963cc748ade1aa65b8880d39edb59185f1ed7003a373045588983f3e551ffb78b257faa8d44aa0159a02528fe09419f5d59bbfece500dd7daf10fd6e8dd6276ef61a058cd4c50978741e72f92c5121b232f80f9a8560faa27894a13e50cd78e75cb3421e78b331370a229d67e2a33173af103a6d72ff345babdbfee98a81dcf9c9ace5e9b3f675039f614231369075c7a6d2d8f9cde2afec1c43a918d2c3f516b54f36912ea3ebf823f6ddc13bba3cdf6aa38ee8c10aacae323b8d2d058d861f228a17045008ab2f7cd4eca83623d53c9a354934754c6e64f23578c52843d4211d87cecf428f5a39dadd092c37c90b27848dbdeb11114219a43b14ec27172a8a1e03b25798e8ee97bf126dac259e854039ca0e86d30e0423c12adf7c36bd8c01241f670e8fde620c378c7137cb2242b76df3cc8070b5c95fe77687bdb0cdca3c4c37da7f3e1ade3600445fd7284f26de90858ca6c85a7a0e31a56dc3ef8588fb8ce96a8d81e674d96434c1fff3295da96caae67405803d4254795e61385b6f6635cf592085ad164a70d91fddb66f5ea56197155d2d6f6c23da1c7c58cc81cb4a8e0456c56db96d5c85ec575836b160abddaeb4615b3cd044ae40ac744db342f42c6fc2716ee30a53b71ecdbfabd4e244bb98dc303c0607c65124729c37b4b53730b69b1b00e55e78df966c0d5e7b7fb65c5cba76697149aac5d9f0482079476826ca8a132269d99a0b323fa794281a65c11d74bc96a4233d3c3e0856267ed0e34cd0bc1261436ebc05b869e09305cba23586892c847bbd14f9dc1b20d9adf3f53861857d7edf00c145e39a1b1e83aff6bfcd0d8ffc16fcbe13a959f19ddbede8da82286ff4bfe1bd87cf1907a87a0df9a74f40591513d16b99e69759d88a2e3227ee4e3fc018d9035c455b2576dd79b0d286b566cac545de182f82a5bb70b267fa961746875658bc99c182fcd400b4ca4429abe273762f416eacd03df12ea65d4085d7b1cdf72c41ffb4da4ce9357efbdcb84ec24e950a5613afcf0168916f158956b809d7a2c226fec1e772bf7a84609eca93db9383ceb218500302fbfffc52f297f7c7bf7109b90a0536f49e5731208fe5a958aea1477be05bc54757d6a4f199f1d98ef367e7d153077a72a02b3d7ef2e49bd1e4bde6734a7d7bb89aff869d90cf12f3fbc98a623472463da74bb3beaefe498e9a892accc19be3efc572ab8509d8537f119148789771b4760637de1df8d22796aef42da47f5a93fcaac62d713e396f89e93170d32f9e87b371d6d5017deaee2052d13254a9ce46fb96460bbcf0efd73383ab0953f63cae972c638cd2a555aae2b772713fc5e73258d281dcaaeb9c70ef948e24c294c7013728247a9bda322d7fc9cedbf2382ec2220062566c8726d81d5da906128f80ede6808f199cc5764e9ca890f0a263bc144acea689cfb9ac2473d553b91ac3e3f37922e6b4ad8a0753d1c5f3b29da8740a72060e3b3f8331d2ad4478b09b37529011cd56a2f88a4254c87db85d49eccaa08825d99b44e0977aebdf2daa14b07d989714379fb3e72adf74c85c0c34a80499ca0eca1b19ecfb239ca84fec676daf77cb3fe507ed3f835eacdee9977fc20edec4e6fddbcd74225d8cbda94a2ceffe2b3c7e0feff91b884ca74ec44bb6af9d5e459f00b3fb69bdd9ec58e54e29c5c129c8952f18802602aa5d3b12d07b2559760559f382b246eba4eac8ccd085c9c98b12154978cb411ef1e501a5a06fcd5a77eb9537fd949f681dc043171708f5184f33fdc87f4277a4723973d19f2d6b5f1184bd1251d1da9e511a80f568ec6fbc3c8983dea7d7ddadab27c7ed3d286df433b532734f602da0ab6da8077aaadd254c8837fb695e5ed4ba97e8379540893fed67d56d7a29a820fcce1b7daafc671b3da4d249b3e2cf1f52912c9dc7ee8efb647dedf28be83f373f88beb21dacf18d0a3056ba600a64943ee7ffff000000ffff010000fffff9e2e726df7f0000") + bs, _ = hex.DecodeString("1f8b080000096e8800ffec3dfb7bdc386ebfe7af60e6b61be76a699cc7e6ae8e3dad6367efdcdd3cbe38e9f5badfb61f47e2cc702d898a48d999737c7f7b0150efc78c3cb613dfedfe90782492200802200012d4defda33787effffaf6255b983098dcdbbbef38f70e55bc4ce47c61d8d6e143f678e7d153f69ffc544dd90b95cc198f7ca6cc4224cc539149e434352ad12e3b080246ad344b8416c999f0dd7b1fb4606ac6cc426aa6559a78025af982c1e35c9d8924123e9b2e01267b75fcded166190816484f44d0ce2cb8611e144dc5bd994aa15b19c14bc17e3c3e7cf9fae4259bc940b8f71c07d046ec59c0a3f9fe48442316cd1d1ec7fb23bd8c3ce83b9ad32bc257058148f6472779c9a1498211f302aef5fe082b058a9f8e10a4e0fee41e637ba1309c790b9e6861f647a999397f1c95050b6362477c4ce5d9fee8bf9d0f07cea10a636ee4341023a29088a0d5f1cb7de1cf45a55dc443b13f3a93e23c5689a9543d97be59ecfbe20cc8e0d0c3360c5c1ac903477b3c10fb8fdc9d16205f682f91b1912aaac06a55e3a959a8a4552390d129cc5a00148362e3a586490f212d1231db1fcdf8193eba311072720f1b186902312988c83eb38b0b9ce4d730b9afa1a7ad8797977b635babe8c0029b2a65b449783cf6b41e174f6e282317de8c323c9015f442086331b4ac6196310cc2884f061b53096353e52fd905fd642ce6be0f083953658c0a77d91f76e24fcfb3b2190cda99f15006cb5d36fab308ce84911e67af452a46dbac78b1cd0e12a0f636d33cd20eb0b29c591097f7e84f1afcebe2bba2c7902773193946c5bbec91fb9d086b755d44d60955a474cc81fb2fba707925a2406db3572ae21efc3d549156c090db6c7408322341d45e8b73c0b000d3e88203b32177fb2837fec410eb9a6482acd32e457af597ce6042fa4b0bc8fe4ac89da50564bfa0c25425be482ced221535c615a8b96a907997ed3cafcf74e50d8171be2b273c565aa244ec224f814c9e353b90da389172a6292805537445af89e11c64388b5aa3210c2c48c3a868e34b1d071ce65246c0ebc29906ca3bcdf100d6b6920cfc98f347c138a4338175ca8229f74ee7096a3cec452580fe7cbaf5f8c9b36df6f8e90efef7e8e1f33a0513eecb54efb22795c1e7f479147f624fcbf739211fc3ebc7f9ebcbe6b880cd22d7e7a0381a7c1e881960bb53327a6d788f76cad7c4f93c9073a43f0ef2f97a5ae504ce15719bbe3817ecbe0c516bf2c8744802ac1145b3f38534c22199c1a6e7a0686adae05c58ea3fddd9e984e4b7148b1dff63502bebb0f05d1df220706a54ec45286bfc1fa1f025675b21ff94d1f40fcffe107f7a5800c8e40a96d818d404b0f4c4bea94a5f5199b1f1ef81f761a1358cb342d73258c90caa6de1cedddda22efb3d1025012d33858595c50ba0b406a162300875ce70aaa689e0a71ad7e14041f344c489823601b0e058c30a09abf9b9348b2a44cb4f601ffc7e5cbc6e10210132e5b37259b0e3de98441056e2b15d8aefedd10869fd013385bd5731884ac2d000c077113f2bd6717e8625f60faa97fca72f663c0d60b9053b40503d39e7b468dab564cf9705105c23390c3ac9ca701502a9a8f7e14c13308846933d19cef312d45b23a6130f9731079f9c478fff48ab27b3abfbe8c963585b89f7eceff184158be91eb14d0e6c217d50a0ce2758edeafddb852535027aff0cc482a249e72a4ce026598d7c24695019474e9dca4f12d862e0b482e70dfc44c5be3a8f2aa550ceb3e5fd77a3663da0ff7c8ed6100a42f65085f2d297e6db68aae3e77bd382f6c04bd0fdde780aff78ada312f3a2835044690d1bc27752e064ad3fb02b4fc102f2fd7722565b0f017a959cf360192fd0ca61c52f67e1e3cc5ac27d2b42c0f0c0f71936877545254b446d6f0c3d0dee1a676650d730fc736149d0e81e41f4765c90469e491f39f70ae881e231275631e841387a6adec02f6f7e45c2c8e174f998a0ffd0ec7601fae9f8e856a8a217a941261b849d9acd5aa8d9e657a408a877c31333905566507dd1e8f89d85d0d5efde380d2a925d292d4bf6c6402cb2bcc7a011ac82edd18db63e6ae4ef65a20da8d6f36da6a260c9c099388f989cb14878426b9e2c9fb30c2f76ce930897a04c7b67e081021248711fe0cfe4fc3842a5582814005caae21a328113faa063abfaaa520e441101a3ff9dacdbbaee6ad67570c1a15a7b8b27f512726946937c14af85f0850f2bd4934941b17eb0b87e35f5543c79bf40a718c79b26b416b105d7e0f40ab0c2f8193ac8e08e450a56700f4c580e0adf2d170b16a648f20c1d5cacb34ae42947e2bc0edadd1bc77556588b349aed953530ab063819c0d43a64f6a198a7a9019fdd448e0ee94fb6e6b218acec6c5db91d4eb7683410adf249207832939f461d73557f517bac3c643f5b1c2fe66900f6063068839f6b9c9bc3c386e52242ee06db4223056dcb8725844e2e7fb68ac91d741be211933e1236eb410abd9add33d1b8b8c0268758b085bfdce323b01f68aee051706361a2f5877f7f04b471d67ac9dd10a55a3da8d923598d6a6459d40c07a043c0639ddb1331580a18c8f85d6dbcb931822f6160df48f0423fc160dae01b56dd3a3380592ab94732111e4ddf67463193b7dc2c2e2fd7812f6580550c3b0bf3c4709356495f37d9aaccca5bd4440d549f89268b679393b346952af589c809cc0a4ab77a1ba2d99a159b7e4bf75c58dfa9da84350209d93338323246dbb7030ac2b1be42571996267d4558b858af890c6f9a3e1581464b0480ace8c1af19f199ad9d71d6f11185cefc5ee4c7fdd85f7f60d69973542ca2c600bfa792eb8cac90996b0d30b71142b003839f3292fdeccae88c07b28f1f068f3fb30f1c2de74d02bc4c12b5e9f8bb91fd9a13eda910dca6a6838176c5225191fc1b990bd798ed0e6df6b5863a0fd4b4e932fc09def1a0e6cbddc4c4ce09ecf732101a16061e9cf3a57e9d8653915c5e3269a0eb6dd6d3e8c5d250a3a98c388ac88baf47b0850a9bf4fa5179b740ae00a15e915ad4e60e11cb0b54ea3be8e3058a37e3056fc074573332d737a2587f7ddea30723f0482c45276ca7eec8aa7374570a91cc8da48e7929810c9e166cd2312b2d4ba53204a2ecba51ecefc330263b79bf3bec459f5954c0fd6aac8071ec0603bce21abca7eb0a4e6ffd0615897eefc0e27e03eef768f257a1d711ab01e07e03c26b7577a99dc25225bc53d194b9e379a412c1de8a24945ac32aa66f9fe6b64fec526f4ef61a90bb4c790af53b3c68590f760be02fd22c365c1f08b2a6002d926463b3014afa1c0028a2fd920eb7aae531d1eb6effaddb7de13d3190389121a8c4514fd8b51cf080280898e69e0c9ac62940e9d1b6bd48f93c9a8b64d4a93cd8b7dfb2a12b0b1ee448a42f3a5696f5421c77ad9a194076b8401475e7c0bac5a3cbeddd20d8530dd5606cba12a4a1d9bfb1284d04c08785678aadab4a3c065b1fcee61892f929dff8d97af8f3dd09cad8e1e5d1187c7210cf217b2f551b14cc8d28dfd3cac64caae19a7190129f35111020f06f41907610a415893d78c53e18195ccf7bd44b30994217fedc0d03df707daa1b233d7cfbe1e646eac5292cfa1e484cc3dc86c708bce88407bb8f2e2fffe58efa3847d96bf68e1bb12125a0934878484afdd303a30c0f1e6094641a230f8402d8dcbbbcc4a7ad9ebac711391feff1b1ca360fbf36d13a17b80ff1ad104ca56638c5c035bd7992e5b644c6d980f2411429b0d4c59b1fd8fd7d9682fe9ac9a857650d262e1ed95aa8a419a3cb7b6327780075b368dd5aa33ddf4dc6733dd450a71eee6f8e568d7e347943a79d867a06ad4e1ad6dafd9e4e66b321bd7c4d6dda8c9cff9748f4e63af4ccb6becb8ec2a65e015973b9b9735dc7e0dae6f2a01d44c29676104b33adcf62a543e438467d97b6113b2cd6ebee1f36cff274c0e8b46f37dd4c440859f8bd6a2cdfd266629344bf6d26d60a87840d65d40c1b1ef83e0c6eb3c095650084509bfe7fc68da61e4eff5598c9d9805dd4a0764f71adedd76cf26b369a9bb418623b37dbdc8a097dc7ec2b1c3340b8b67cfd6668dd445cb2fc696393e3fa91337c45c71474f7b94a8165f6e0961b88686e1636967bf70e58be56467ae25a072bab66270c1c4dcecaf8719ae960fcc505bc75dfcb508004832d2876477fde0dc35df0e72e2f77f3e3f360a1cd1229223f585a93151b11a949226eff5065c5d8eb3e5f59656a3ae9681961d8b9e5a6fdf1e6872f7b9cb2c6d3c5e1e222b5035fbfa08cbe61191ff991d3ec1190147e9612583595efb519bd95f2d1972851cf8da8a89eac0a197599bec11cd1dd310c517b2a4db4708bbc543712663c9a9ca4316612b131fb5e2569d83eb43da80b0d7dcca559a453178caeb1c78370312eba1a2702264ce36ec38fc0e5dab077f6c586bdad189007f0e72a598e7de5a568fc65293647d5c7db19a4d43ac521be48bbb2106ea007982c9bc77cd89187b1fafc3c6d26812fa89253ab8970870d0c879c9d0b8fcad621f92de4df569d715f74f02d153abee4819a776a705b21cbfaedd1e2b60e6a66903c1e50ce18fe9f479e6a02be785a6fd6e576af553be2131486c40df50377353087850566d7b69a9e593ced51335d636b2d137b71bdabf258bd16a007f13cfd543034e8b7194c17062c28779db3385160b28494eec696c011ec18689bc0d4b1d262746bc0df8161b904d8df2e4410c8220fd1621e0fd69635b5698f92d3f9774a06e8e4a7a4a87017b8494633750bbcd4cc0d68903ea7c017611ea959497397bd2535cb162af06f7aeef3f4a29e99cf9397eec2bce741f29b9ffa6ad6557d4672eae09d0c8130e28bcc7e99bd03dd93f2706f6aba8f8f7a265afa1f37582a2c3027b899d9be85996d64fbd51ad3b18c6330e58c9c49cf264e7d1bfa5c2f9e57c3a9e5b1887a44f5daf35fa9720e42cdf03f34c91b173ed023eeed22812e2ec225cce167e62dd2e8d49ef46f9ace98489c1f8a84cac5ac5a1836599e4125072c94701a7170446daef1c764dc863f1a5f61901d5ec9a044afc203a1503a588578f02e033a28ad2b5467cd03c7878142d3b4e9845c5562884bd0c7efb5b6f200c09d131fcc4258a8f3fdd17d441134cbcb4fe0b9b656f15cb2cadce02a6337400d8284918c0e501bc8c84c2561966a8f3f47d92d34289c2f694e56ecfb6083fca41479b6f4f6e201a85787ace7077877400ec88d2826e77e93a556e0f9b58e525f2666d9dec6d90bf8540478fb81450ec46e62f5cb1198f758d66a21a318d332b3cdd8165dcb81a208e7fb241571a6e16537123574c6a872cf0d8d9d0ee281064813dca442c4b210245e96f3319578e89246ed6027d2074922f43ab75af250500f27acd06514426de1b0529b51af710e1b8c9fd82ab0aeed9dea81d88ea9b3d3faf973d7b4c6098d0230c464dac8ce1c5aefa4331999edf6262956bb496a44ac3e6159023928302bd8ca16db6bae109ccb4e90029a6ebfc235067f025045372e81bad8927478d77fe8760538f3a1f5c8f3e42f0b3017ec0523e05b60d62e76bacd4e858811d75042b7741fd69e0827749b5644f2094f3603184606ed810f6aa86b3c44699472fb77ff7adeaf990c1240b760be15c2569f129804cc64066ca7018f4efbf11ad43fb1c46b62f9f528102b00ae392abe129ad2aa03a54eadf8b8ecd86036671af84450f6dd63baf88b7bc845b84908f3e3e18e23cd1b667680550965962f223ab4a5b7ad53a85b0c3315d42863999eb1376289dd91e36e35b952abf150643a0dcda2d55a2d0e00f505e5fbed8ffeacc2fc384da6c81054971a1ba4b7b83dd6d9ad9f3a35c589bd4520d206d649a479a6997321f68254dbf9c18dc06686fb4d1190db1d598c2d1de43faf40457f0964931e91050c24dceff0bb343ae6bb58b30f495d76ba29bd0b5c4f4c7245babf24dd89dbb79c6911831818109f8e3b68caf541c6bb18c7cc4fed16e863f06465c38c3c7943d0dcb148c87ae0a9511822f218451b810b97f6464191831f30e37b6384f5052ce162a3a99277c5cf4476bd497df22beaea9b227bf5eaa1fa1380df15acbf6b967b8951b705821a3c5f194f44301badc19c8292f65209bc37a14a72900270f607df2903ab6bda3ce07b4420aeef7f6066c77aff036bfd33f81fd534b71bf142fa00de9c2f82392b6b7d91eac6685779d7066957bd213e4d89908b3f1b3e4d47698f4f437d5716305b1dafaea95d54d0b98251dbccc329a8848b527d4dcbb6737443b1b5a637bf73a2c7fd59b38ebdb35945155f278de4c7148f7f816c41f598a30d16ed8fc6fffb1377fe76e0fccf8ef36fceffb93f5f3cda7ef6f4f29b71efc247e31ce69e50d566de5f63260a17a5a3ac74514ef0ba10a0898d5c810e9bd9ad0556dc60b274d9abcca8c7f71aa600ed7a7b2b9c3576e89862aff93c04596b425b5292fe212b39a97247e15ad85a37d05dd563e863e52e4486fa0dc331c998e6aa8814ce96bdf5a53a8d5bcf9e96de02993c0158270fbb1d86eddc5b2007016719ffed61b87302acbb37a65f357851b05c31ee9611645f761fa0b99e4ac2ab6e5629255b7e05b5840d6a8a095f5c45351180ba72fafbf8a8544fb902b2f5365441c5f525a526fa027ac512b34fb3d8d252b7e0335acf7575920705e8ea04b4e8016591b8ec2f12340a30b39708b2ede58c49533ac60215b8cb50088c04aa567c61cba87f2fd8d4c656523c51cb752e1c788d34ea365bb948772258182ba2d71b8bb21dfa5ab55261c6963cc748ade1aa65b8880d39edb59185f16cb881d139822a444c9e9faa4f7d3cd92b7d546a25d00a4d01a94770caeb04aad79ed99b11bafb5e21fadd1aad4fdc6cbe3246eae2043c3a0fb97c96a8105919338b5908a62f8a4719ea03d58c17ee352be481371b73a320d279263e1a33f70aa1d326f74fb3b5baed9fae18c89d9fccda2505ac7dd7c21798508c0d64ddb1a934767eb3f82b3bc7502a86f470bd45ed934da4cbe85b0411fbfee03d7d39c06aa38ee8c10aacae323b8d2d058d861f228ab7235008ab2f7cd4eca83623d53c9a354934754c6e64f23578c52843d4211d87cecf428f5a39dadd092c37c90b27848dbde812114219a40b24ecf7262a8a1e03b25798e8ee97ff24da584b3c0b8172941d0ca71d08468255bef9627a1903483ece1c1ebdc5186e18e36e964584ae1ae79901e16a93bfceed0e7b5b9d9579986eb4ff7c34bc6d00883e2d529e4cbc210b194d91b5f41c624adb863f0811f719d3d51a03cde9b2c96882ffe753ba52d954cde90a007b84a8f2bcc270b6decc6a9eb3400a5b2d94e0b23fba6ddfbc4ac32e2bba5aded846b439f8b0980397951c09ac8adb72dbb80ad94fd06c62c156bb5d69c3b678a0895c8158e99a6685e859de84e3dcc615a66e3d9a7f55a9c5897631b961780c0e8ca348e4386f686b6f606c373700cabdf0be2dd91abcf6fe6cb9b874edd2e292548bb3e19140f28ed04c94152744d2b23517647e4e295134ca823be8782d49477a787c10ac4cfc9ac999a07925c286dc780b70d3c0270b96456b0c135908f77a29f2a53740b22bf7eb71c20afbfcb601828bc635373c067fd7e036373cf24f00f49d48cd8aefdc6e47d71644f939831bde7bf8927180aad7907ff70594553111bd96697e9985ade82273e2eef4038c913dc055b45562d79d072b6d586ba65c5ce48df1165cba0b277ba60f9961746885c59b192cc84f0d40ab4c94b22a3e67f712e4c60a5d92ef62da05547813db7ccf12f4cfabcd945ee3b7cf8deb24ec54a96035f1fa1c8016f9569168859b702d2a6ce21f7c29f7ab4708e6a93cb93d39e82c8b013520b0ff8f2f257ffa70fc2b9790ab506043ef791503f2589e8ae51a7ab407be557c71664d1a9f199fed387f741e3d75a02707bad2e3274fbe1b4d3e683ea7d4b787abf96fd809f92c31bf9fac28462367d473ba34ebebeadf23a999a8c21cbc3dfe412cb75a98803df5271189847719476b6770e3dd81af7d62e94a1f82fa8735c9af6adc12e793f396981e0337fdea79381b675d1dd077fe0e22152d4395ea6cb4ef68b4c00bff7e3d33b89a3065cfe37ac932c6285d5aa52a7e2818f7537c2e83251dc8adbace09f74ee948224c791c708342a2b7a92dd3f26fd9795b1ec745580440cc8aedd004bba32bd540e211b0dd1cf03183b3d8ce891315125e748c9742c9d934f139979564ae7a2a5763787c3e4fc49cb655f1602aba785eb613954e41cec061e7673046ba95080f76f3460a32a2d94a145f51880ab90fb72b895d1914b1247b9b08fc4c71fda34d9502b60ff392e2e673f65ce59b0e998b8106952053d9417923837d7f8413f599fda2edf56ef9770ca1fd17d08bd53bfdf2eff7c19bd87c78b7994ea45bc1375589e5dd7f85c7efe13d7f0391e9d48978c3f8b5d3abe8fb67763fad379b1dabdc29a5383805b9f2f906d04440b56b47027aaf24cbae206b5e50d6689d541d9919ba30397951a222096f39c823be3ca014f4ad59eb6ebdf2a69ff2fbb40378e8e202a11ee369a69ff8cfe88e542e672efab365ed2b82b057222a5adb334a03b01e8dfd8d972771d0fbf4babb75f5e4b8bd07a58d7ea65666ee09ac0574b50df5404fb5bb8409f1663fcdcb8b5af712fdaa1228f1a7fda6bc4d2f0515841fb9a3efb4ff62a387543a6956fce5632a92a5f3d8dd719facaf5d7e0efe97e6d7e057b68335be5101c64a174c818c9a107c92ff070000ffff010000ffff6e7e4beddc800000") gr, _ = gzip.NewReader(bytes.NewBuffer(bs)) bs, _ = ioutil.ReadAll(gr) Assets["index.html"] = bs diff --git a/cmd/syncthing/gui.go b/cmd/syncthing/gui.go index 00c524e43c..5e89ca2549 100644 --- a/cmd/syncthing/gui.go +++ b/cmd/syncthing/gui.go @@ -108,6 +108,7 @@ func startGUI(cfg config.GUIConfiguration, assetDir string, m *model.Model) erro router.Post("/rest/error", restPostError) router.Post("/rest/error/clear", restClearErrors) router.Post("/rest/discovery/hint", restPostDiscoveryHint) + router.Post("/rest/model/override", restPostOverride) mr := martini.New() mr.Use(csrfMiddleware) @@ -172,6 +173,12 @@ func restGetModel(m *model.Model, w http.ResponseWriter, r *http.Request) { json.NewEncoder(w).Encode(res) } +func restPostOverride(m *model.Model, r *http.Request) { + var qs = r.URL.Query() + var repo = qs.Get("repo") + m.Override(repo) +} + func restGetNeed(m *model.Model, w http.ResponseWriter, r *http.Request) { var qs = r.URL.Query() var repo = qs.Get("repo") diff --git a/gui/app.js b/gui/app.js index 651a732466..0d726b9ae6 100644 --- a/gui/app.js +++ b/gui/app.js @@ -627,6 +627,12 @@ syncthing.controller('SyncthingCtrl', function ($scope, $http) { } }; + $scope.override = function (repo) { + $http.post(urlbase + "/model/override?repo=" + encodeURIComponent(repo)).success(function () { + $scope.refresh(); + }); + }; + $scope.init(); setInterval($scope.refresh, 10000); }); diff --git a/gui/index.html b/gui/index.html index b796f723c1..0a6e2b5e56 100644 --- a/gui/index.html +++ b/gui/index.html @@ -206,7 +206,10 @@ found in the LICENSE file. </tbody> </table> </div> - <span class="pull-right"><a class="btn btn-sm btn-primary" href="" ng-click="editRepo(repo)"><span class="glyphicon glyphicon-pencil"></span> Edit</a></span> + <span class="pull-right"> + <a class="btn btn-sm btn-primary" href="" ng-click="editRepo(repo)"><span class="glyphicon glyphicon-pencil"></span> Edit</a> + <a class="btn btn-sm btn-danger" ng-if="repo.ReadOnly && model[repo.ID].needFiles > 0" ng-click="override(repo.ID)" href=""><span class="glyphicon glyphicon-upload"></span> Override Changes</a> + </span> </div> </div> </div> diff --git a/model/model.go b/model/model.go index 193e64dd27..08284baf3d 100644 --- a/model/model.go +++ b/model/model.go @@ -851,3 +851,26 @@ func (m *Model) State(repo string) string { return "unknown" } } + +func (m *Model) Override(repo string) { + fs := m.NeedFilesRepo(repo) + + m.rmut.Lock() + r := m.repoFiles[repo] + for i := range fs { + f := &fs[i] + h := r.Get(cid.LocalID, f.Name) + if h.Name != f.Name { + // We are missing the file |