From 7ee74f68914fdff3d1bb36617c303f9568d4f7b0 Mon Sep 17 00:00:00 2001 From: Henri Sivonen Date: Wed, 7 Mar 2018 10:09:02 +0200 Subject: [PATCH 01/65] Bug 1443732 - Document that e10s is required for Web Payments. r=MattN. MozReview-Commit-ID: LaXHOm15mxi --HG-- extra : rebase_source : f641fcd8e20383b89fd62abe1b567133dba3db82 --- toolkit/components/payments/docs/index.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/toolkit/components/payments/docs/index.rst b/toolkit/components/payments/docs/index.rst index 8eff97158f8f..16623f56ae30 100644 --- a/toolkit/components/payments/docs/index.rst +++ b/toolkit/components/payments/docs/index.rst @@ -13,6 +13,11 @@ JSDoc style comments are used within the JS files of the component. This documen Debugging/Development ===================== +Must Have Electrolysis +------- + +Web Payments `does not work without e10s `_! + Logging ------- From 9f665583c917b317aa13208ff8109f4472a52565 Mon Sep 17 00:00:00 2001 From: Gijs Kruitbosch Date: Tue, 6 Mar 2018 17:37:31 +0000 Subject: [PATCH 02/65] Bug 1433133 - remove old about:newtab code, r=florian MozReview-Commit-ID: Itlmi3E2KrG --HG-- extra : rebase_source : e770de81575ff756bc3a99c593f5fc34491f1732 --- .eslintignore | 2 - browser/base/content/moz.build | 6 - .../newtab/alternativeDefaultSites.json | 50 -- browser/base/content/newtab/cells.js | 126 ----- browser/base/content/newtab/customize.js | 132 ----- browser/base/content/newtab/drag.js | 151 ----- browser/base/content/newtab/dragDataHelper.js | 22 - browser/base/content/newtab/drop.js | 150 ----- browser/base/content/newtab/dropPreview.js | 222 -------- browser/base/content/newtab/dropTargetShim.js | 232 -------- browser/base/content/newtab/grid.js | 295 ---------- browser/base/content/newtab/newTab.css | 512 ----------------- browser/base/content/newtab/newTab.js | 67 --- browser/base/content/newtab/newTab.xhtml | 97 ---- browser/base/content/newtab/page.js | 248 --------- browser/base/content/newtab/search.js | 15 - browser/base/content/newtab/sites.js | 285 ---------- .../base/content/newtab/transformations.js | 270 --------- browser/base/content/newtab/undo.js | 116 ---- browser/base/content/newtab/updater.js | 177 ------ browser/base/content/test/newtab/.eslintrc.js | 7 - browser/base/content/test/newtab/browser.ini | 52 -- .../test/newtab/browser_newtab_1188015.js | 26 - .../browser_newtab_background_captures.js | 64 --- .../test/newtab/browser_newtab_block.js | 65 --- .../test/newtab/browser_newtab_bug1271075.js | 32 -- .../test/newtab/browser_newtab_bug721442.js | 28 - .../test/newtab/browser_newtab_bug722273.js | 48 -- .../test/newtab/browser_newtab_bug723102.js | 24 - .../test/newtab/browser_newtab_bug723121.js | 42 -- .../test/newtab/browser_newtab_bug725996.js | 35 -- .../test/newtab/browser_newtab_bug734043.js | 34 -- .../test/newtab/browser_newtab_bug735987.js | 32 -- .../test/newtab/browser_newtab_bug752841.js | 55 -- .../test/newtab/browser_newtab_bug765628.js | 32 -- .../test/newtab/browser_newtab_bug876313.js | 24 - .../test/newtab/browser_newtab_bug991111.js | 35 -- .../test/newtab/browser_newtab_bug991210.js | 34 -- .../test/newtab/browser_newtab_bug998387.js | 39 -- .../test/newtab/browser_newtab_disable.js | 48 -- .../test/newtab/browser_newtab_drag_drop.js | 95 ---- .../newtab/browser_newtab_drag_drop_ext.js | 75 --- .../newtab/browser_newtab_drop_preview.js | 41 -- .../test/newtab/browser_newtab_focus.js | 92 --- .../newtab/browser_newtab_fullscreen_focus.js | 35 -- ...owser_newtab_perwindow_private_browsing.js | 56 -- .../test/newtab/browser_newtab_reflow_load.js | 38 -- .../test/newtab/browser_newtab_search.js | 240 -------- .../test/newtab/browser_newtab_undo.js | 47 -- .../test/newtab/browser_newtab_unpin.js | 56 -- .../test/newtab/browser_newtab_update.js | 48 -- .../content/test/newtab/content-reflows.js | 26 - browser/base/content/test/newtab/head.js | 526 ------------------ .../test/newtab/searchEngine1x2xLogo.xml | 9 - .../test/newtab/searchEngine1xLogo.xml | 7 - .../test/newtab/searchEngine2xLogo.xml | 7 - .../test/newtab/searchEngineFavicon.xml | 6 - .../test/newtab/searchEngineNoLogo.xml | 5 - .../static/browser_all_files_referenced.js | 3 - browser/base/jar.mn | 4 - browser/base/moz.build | 1 - browser/installer/allowed-dupes.mn | 1 - .../locales/en-US/chrome/browser/newTab.dtd | 16 - .../en-US/chrome/browser/newTab.properties | 10 - browser/locales/jar.mn | 2 - browser/themes/linux/jar.mn | 1 - browser/themes/linux/newtab/newTab.css | 15 - browser/themes/osx/jar.mn | 1 - browser/themes/osx/newtab/newTab.css | 10 - browser/themes/shared/jar.inc.mn | 2 - browser/themes/shared/newtab/close.png | Bin 698 -> 0 bytes browser/themes/shared/newtab/controls.svg | 155 ------ browser/themes/shared/newtab/newTab.inc.css | 307 ---------- browser/themes/windows/jar.mn | 1 - browser/themes/windows/newtab/newTab.css | 14 - 75 files changed, 5883 deletions(-) delete mode 100644 browser/base/content/newtab/alternativeDefaultSites.json delete mode 100644 browser/base/content/newtab/cells.js delete mode 100644 browser/base/content/newtab/customize.js delete mode 100644 browser/base/content/newtab/drag.js delete mode 100644 browser/base/content/newtab/dragDataHelper.js delete mode 100644 browser/base/content/newtab/drop.js delete mode 100644 browser/base/content/newtab/dropPreview.js delete mode 100644 browser/base/content/newtab/dropTargetShim.js delete mode 100644 browser/base/content/newtab/grid.js delete mode 100644 browser/base/content/newtab/newTab.css delete mode 100644 browser/base/content/newtab/newTab.js delete mode 100644 browser/base/content/newtab/newTab.xhtml delete mode 100644 browser/base/content/newtab/page.js delete mode 100644 browser/base/content/newtab/search.js delete mode 100644 browser/base/content/newtab/sites.js delete mode 100644 browser/base/content/newtab/transformations.js delete mode 100644 browser/base/content/newtab/undo.js delete mode 100644 browser/base/content/newtab/updater.js delete mode 100644 browser/base/content/test/newtab/.eslintrc.js delete mode 100644 browser/base/content/test/newtab/browser.ini delete mode 100644 browser/base/content/test/newtab/browser_newtab_1188015.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_background_captures.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_block.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_bug1271075.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_bug721442.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_bug722273.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_bug723102.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_bug723121.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_bug725996.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_bug734043.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_bug735987.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_bug752841.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_bug765628.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_bug876313.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_bug991111.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_bug991210.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_bug998387.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_disable.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_drag_drop.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_drag_drop_ext.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_drop_preview.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_focus.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_fullscreen_focus.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_perwindow_private_browsing.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_reflow_load.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_search.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_undo.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_unpin.js delete mode 100644 browser/base/content/test/newtab/browser_newtab_update.js delete mode 100644 browser/base/content/test/newtab/content-reflows.js delete mode 100644 browser/base/content/test/newtab/head.js delete mode 100644 browser/base/content/test/newtab/searchEngine1x2xLogo.xml delete mode 100644 browser/base/content/test/newtab/searchEngine1xLogo.xml delete mode 100644 browser/base/content/test/newtab/searchEngine2xLogo.xml delete mode 100644 browser/base/content/test/newtab/searchEngineFavicon.xml delete mode 100644 browser/base/content/test/newtab/searchEngineNoLogo.xml delete mode 100644 browser/locales/en-US/chrome/browser/newTab.dtd delete mode 100644 browser/locales/en-US/chrome/browser/newTab.properties delete mode 100644 browser/themes/linux/newtab/newTab.css delete mode 100644 browser/themes/osx/newtab/newTab.css delete mode 100644 browser/themes/shared/newtab/close.png delete mode 100644 browser/themes/shared/newtab/controls.svg delete mode 100644 browser/themes/shared/newtab/newTab.inc.css delete mode 100644 browser/themes/windows/newtab/newTab.css diff --git a/.eslintignore b/.eslintignore index 202c7b28e5a7..fa0f46c19a87 100644 --- a/.eslintignore +++ b/.eslintignore @@ -71,8 +71,6 @@ browser/branding/**/firefox-branding.js # Gzipped test file. browser/base/content/test/general/gZipOfflineChild.html browser/base/content/test/urlbar/file_blank_but_not_blank.html -# New tab is likely to be replaced soon. -browser/base/content/newtab/** # Test files that are really json not js, and don't need to be linted. browser/components/sessionstore/test/unit/data/sessionstore_valid.js browser/components/sessionstore/test/unit/data/sessionstore_invalid.js diff --git a/browser/base/content/moz.build b/browser/base/content/moz.build index 50d336c71cd2..a7680d0d0c04 100644 --- a/browser/base/content/moz.build +++ b/browser/base/content/moz.build @@ -13,9 +13,6 @@ with Files("defaultthemes/**"): with Files("docs/**"): BUG_COMPONENT = ("Core", "Security") -with Files("newtab/**"): - BUG_COMPONENT = ("Firefox", "New Tab Page") - with Files("pageinfo/**"): BUG_COMPONENT = ("Firefox", "Page Info Window") @@ -37,9 +34,6 @@ with Files("test/contextMenu/**"): with Files("test/forms/**"): BUG_COMPONENT = ("Core", "Layout: Form Controls") -with Files("test/newtab/**"): - BUG_COMPONENT = ("Firefox", "New Tab Page") - with Files("test/pageinfo/**"): BUG_COMPONENT = ("Firefox", "Page Info Window") diff --git a/browser/base/content/newtab/alternativeDefaultSites.json b/browser/base/content/newtab/alternativeDefaultSites.json deleted file mode 100644 index 018d3edcc309..000000000000 --- a/browser/base/content/newtab/alternativeDefaultSites.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "directory": [ - { - "bgColor": "#ffffff", - "directoryId": 10000000, - "imageURI": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAIX0lEQVR4nO1afXDbZh1+sxbWsbGvsrLbuBt36766sR3sOEgiuU4kx2vTpFGKm0SKsyyOlI8laUZTulLojQEHx4CyAaNnt72yrivklo1YSpxcW7YVbKXHgCvduCvroDt6o6OtLSWN1MRWX/5I4imyJMu2bPNHnrvfSZbf6P09z+/jfV+3ACxhCUsoAEouNWGlMRLri5GuZwUSe1Ug8bcFEjsjUPgHAoX/UyCxkyKJjQoU/iOhCd8WJSvW/8vpXFFsx7PGeaJsVaytul+g8KMiic+IFA7NTNB/rggk/jeRcu26RGFris3JEqIUtkFsdo2KFK6kI52pCSR2UmirZgY9YFmxeaYg1uyqFSj8lMXI5mofRb3rOwEAJcXmDS72ex8QvO43skjv3MeT2DtRX2150cgLzVUDIonF8xBh64KQ2FWRwncPejyFK4tYq/Nmoa1mPE/pnZ1ILe4TFxpdd+SdvOhxrhabXaeLTVjfsHfzSj5K4V8QKfyjnGs3P2UiCt/v/1LeyAsNlXebkbeRSOZ/Q+JCrBH/Yt7IX+qlbhS96dM+Y+dJLC6S+BWRwmazFizf5AEAQPRtHLEhukqMwo8KTfg2oamy8t+e0uvUczwDwDWxhopHBBLvElrc+wUSm/r/IN9a3ZtrbYqUe9eHTc7PZDLvoAcsi/lq2wQSO1M88k93r7ayjzdI76sxEv/5hdryT+foRknM696q9qMg5AEAQHx83WhWtU5i56PtG1E7fYkO+B4SKNd7AoWLBSEv9G3Asol8zOs+ddFTeWc+fDrXgq2MNmEP5+PdKZB/XR4RvRnWe8tjJ8+1ECsL4mA+EQ+vcCg8gHHuPjjZvc5S6guU6/3/POG5rdi+24IEv+KwEgFQ4QFU/rAKTu90pal5fCY60PlQsf22BefHwfUKD2YVfl6ACIAKfx2UX0QNBYj6arqL7bdtSIQBnYy+2iIAzg49Cid9bm3qv11sn21FggeHUwSILGQCgIljd8Kpreq+4Koqts+2QuGBmBL9FLsFSj+sgAKFnyq2v7ZCDoO7dKOvvc7fS3vcW4rts61I8OBxXdI6/UCJADgVvmGVHfMSAelgfUA6VBeQDqmv2nuzZ3rf6Y2r3SM7DB1RwmCnOsLaiGuenbWD/JwAcqI+IEPCL8H6gAwX7omADIn5z/Wqe0Iz1sgI3edSv6EjcR78OEk4jQiJCNhnlwD1ATlBmDqdCUHzcYRf3mXoSCIMXjdK95SeEAbfslUAk4iaEc1EsLnx0vNmAhw3q3mNAFvtFCBd2i8i4bdWAgYCDBkLwIMJw8antTDos12ARSTNM8JK5Amd8URAPmosQAS8Zdr41N/lIQOS0Z2/pkZe0iWoS35+rIY8rPfLvzcWgAdDljMgAr5tlwCEWgArjUxnnJXSmX8eMnQkPrH8OasCJMJgfyEE0KZxMrJ+i2WgyZq6gHTQ0BGFv+abujs//ab4gV0CqEvAar1n0gQXizj9PUNHEmHgTSFt1At4O3eCH+8D0tW2YUmoMkKvfyQzwC/vMHREegN8Tpe4zjIY55fD14+X9tgiwC8mV2ZrHS/LGOGXRd3y8aeKVee/3GrqjBIGMcMsmL/GJu6AW4+1QZRl/mKHADmipD4gz1jJHCIgw9oXJ+8zfVsi/ImXU7bDquvfI2ugZ7wHoiwDUY6BTrbTWRie+ti0d7rGrHTU5UD45StpX5iILPMZrQTD4Q0QG+2GKMckzcF28AXgaYiv7ZNesdokCb90PO0LP2TBpxQezKpFkPmb4Q/ebFlEHOWYZBY8FtriKwDXFDAHhLvr/bJi9TzQtPeycQNUI3HihkML5M9NfB4+caRTl/jHRsvtb333gTzzTUHDPonNZFkkfjVl7Zfr+MRtiMID+McICqtDvfrE2cWfHRxz2j321K155pxE84HLLWb7BK0odX75TEYTBI43hB1ch0HE554h7GJhKrkn/4wPMjfliXMSO4alcsIvx/UanZE17pcGMppkU2iL2zDt9QSZtwqu66/Okdbb88Qd7PydVFYfkGVthLWHHk1JyOteuHRjxpNh3JNjRtE3EgDlGIiwzLlqrq/MbvKtLwkewi/PalPc8PyQPDdIP8lqQvdw92qEZWbNyBqJgnD0VTTI7H74Je/1uRL/8mDr7VWjfYeJkecgdfC/6c8JavPL0+6fitn3JtdIzxbdqLPqiNMmwtAxR7BzZ+mgL2MnHGzHPQhL/wzlmCsLc64PbYPU4Xd1zwN6WdCwT/p61uQXsH6sL5TS/dOUgY4QCZRlxsuD9EDZsM/x4KDnk5ppSsqGfHehw3QjytHfQVj6HaP+U8F1wZbhMf1Dkerzpr3Sn4Ad/5/Yc2T7TQ6OOW2YBWZimAsVRzlaRoL0DMLRV/WW19SVh05+v5nbAxsPCPpZ4Jclwj95b87kF+BgO+5Bg8yFFHKZZkO68XqimoyvGd0FqUNnU/pA1yvTdbaRXwDCtj2CsszFjFLfSjZoRbEiqEqoqtE+6H2VT5LfvPfydtvJJ0V4jb537QhzxjLRdMSsimIhq5q538DNgSnbfqs0FoHrusUd6j2ScdTNyGZTNovfHa8Z6/fmnbwaTq5r+1wj0ziZrjlmvIKYP3ew9Hvk+NOPFpT8AjxHd6ypGOl607Z+YDUL5s4iChpkdq8b7b22KOTVQIPtGxet3bmQtVA6eKhnyBP6hvnPW8UAwvpq1nIdoeS6bpWY0fK3aMfJTCMc/csqtuf+YvNMi68Mt38WDTJPoSx9DGHpmaxLI8hcqBzpCiDB9ibnM87lxeaVLUrKg+1fRVimby3LPItw9G9Rlj6Bssw/EI4+i3DM+0iQPomy9JiD69hdztI7SoPtTWWvddry7w5LWIIx/gdCuvcjoZqlLQAAAABJRU5ErkJggg==", - "type": "affiliate", - "title": "Google", - "url": "https://www.google.com/" - }, - { - "bgColor": "#E62117", - "directoryId": 10000001, - "imageURI": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAACd0lEQVR4nO3av0tVYRzH8WOIBEVDUUIGCa32FwQ5OrS42NKeRUOTdGmoqUGiLVBqa5UG+7WUREGiEqhTDkVJEA2iYZBkxKvhHumo96o3uM9z0ucNZ7zn834+XO59znm+WZZIJBKJRCKRSGwCx3AWfbiIaxjEPYzgOd7gLWbwIb8WsFjjWrU9q3U+u1C4/0yeOZ47jOROg6jkrn25e3uji27NbzC9A9n/hWnVNbVut/hOTMZ1bSqT6Ky3+A58jOsXhE/o2Lj4FryILBaSF2gpFtAT2ygCPcUCHse2icDTtcW3YSW2TQRW0JahK7ZJRLoy9Ma2iEhvhoHYFhEZyDAU2yIiwxkeBgj6FSDjXxjN8CpA0A1cxucAWY0wkeFdgKBK/pe7H1fxNUDmTpjLMB8gqLJh631A9dF6IUD2Vsxn+BYgaF0BhSIO4WYgh1osZVgOEFSzgEIRh3EL3wO4FFnOAgVtWUChiKO4gx+BvJSqgEIRx3EXP5stVsoCCkWcxH1N3EeUuoBCEafwshlipS8AJzTxW1DaAnAEtzX5B7F0BeAgrmMphFhpClB9M3UFXwI5oQQFYB8u4H0gl3VE3QninOoxVyyWozwL4AxeB8jdjqWgT4M4jUcB8nbKfKj3AUN4gN8BshphLtQbobIyEeqdYFkZzTAc2yIiw+lcQDoZSmeDe/t0ON+gPIltE4Fnxa3pnp8QacFYbKOAjCnOCOUldKhOUO12Nk+JFUroxFRkwWYypd6cYKGEVvTbfZOil2w3KVqjjHZ047xqKRWbZ4XHVed2Z/2d5a0167vYgHC9z6/df9bWs8L9uXO3RmeFE4lEIpFIJPYKfwAcall+TY3q/wAAAABJRU5ErkJggg==", - "type": "affiliate", - "title": "YouTube", - "url": "https://www.youtube.com/" - }, - { - "directoryId": 10000002, - "imageURI": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAACT0lEQVR4nO3bzWsTQRgG8PlPHMVLqRVMoQiFehJyUBAFtRCFHspExaaSoFg8CMGPSg+R3kQhh3osIbOlMVrbGKtrsbYESTbB0gqNVGu1WCkWutnXg+ihQjqxi7Oz8w481533+V32iyGEEEIZ76Rho0SZ4ewOG+D3UMatXSx9nPwqb5ySPZC0dPMzhDJelD6IrDCjQijjtvRBJIWGeY3IHkJ2EED2ALKDALIHkB2lAJoujkIwnoNQwoQL96aha3AKQgkTTtyZhKM383D4+gQEoll/AQRiWbg1XILZ+VWwaw6IrE3bgZbejNoAe8+PwEC6DOsbm0Klt679lxQGCESzMD335Z+KKw+wrzcDpcVvOyqvNMCwubjj8soCnBx44Up5ZQGeFZf1BWi7/BhqjthtzpcAseRsQwVrjgNzS9/hZWUFJq3Pf6U5MqoWQHJ8Qbh8aqoKB688cWVfzwBMvP0kVN6srMCec+7t6xmAmfmvQgCRBzOu7usZgHJ1TQjgyI283gCHrj3VG6C9bwwBEAABEEAtgAPRR9A3VKibpdUfQgD9KWvba529+8pbAMF4TqicW+th/r3eAP0pS2+Anvtv9AY4dvu53gCtMfGfI74DWN+wG5rNdwDl6preAGOFj3oDJMcXvAfQHMlAKGHWTeWD2KPw1aFC3et0NPi9wDPvAq/fif0LDMZzru6LALKLIwACIAACIAACIAACIAACIAACIAACIAACIMD/BvDKwUkZAJRx2zNHZyUBFAntTp+WXV4iQCf5c3yecUsXAMq49bv8Txsl6ZCTabOAAAAAAElFTkSuQmCC", - "title": "Facebook", - "type": "affiliate", - "url": "https://www.facebook.com/" - }, - { - "bgColor": "#ffffff", - "directoryId": 10000003, - "imageURI": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAA/CAYAAABQHc7KAAAEyUlEQVRoge2abYhVRRjHf7veVqSFhIQwa7E3ojXNpSiNgl0S+tAHKUjohbQohUgqKKwMSXpbsATdqOgFU4zKpAzMioploxI/WFBZmhRlL/S2lbpsudvd24dzjve5c58558ycey9B84MB95x5/vM/d+bMzDNHCAQCgUAgEAgE/rf0AOd6lJmKVrdDfI8SfxawIKNcEscfa8TOzBFrlj6Aimd5XnmAbx01TD5xiL3IiH3Y8zm4DXgaGALGMip/DDwHDACXKQ9wA/AiMJyi8T3wAnCvEr841t9tiR2JY/uB443YC4BHgA3ApyntTxD90FuAlaaBU4EfLIHvKIZtnAT8ZtE5O6fGCiNuFJiTM7YNWKe0PQScmRV8ncX4+zkbT1hq0bkyZ/wyI+5ux/bPM+I/ACbnCSyhv8tloMvBQAnYr+h8mDP+PRHzGXCMQ9sA14j4ceAMl+A70HtvjaMJ22jqy4i70Kh/sWO7AO+K+Jdcg6cCh6k3/gfQ6aBTAr5UdN7OiHtL1H3NxXhMN9Fkl2jM89BgPXrv3eKoc71Fx2ZqvqhTJv+kKRkQGjs94gE4PTZgGt9DNMvmpQR8pehst9R/Q9TZ5OG7EzgkNK720DjKNvTeu9RRZ4miMUH9bnCeuH8EOMXD881C40egw0PjKL3oP8Cbjjq2FWGrUW+HuDfg6XmP0NA2W060GYKy97odtbQVoQzMiu+fL66PACd4+O0VGqPANA+NOm5CHwVPOeqUgH2Kzub4/uvi2gOeXrcU8GdlCtG7ZBr/C5juqHWtojMOXCX+HgaO8/B5YqyV6GjZpjf3oI+C+x11JgF7FZ1/xL/v9PS4WmgMempYsW2MfsdtYwTRsqT9mBXgANGIc6WD2lG60EMjk0fRTS931GkHPrdo3ejpbZHQ2B+30XC6iNZm0/Q3RBOcC7Yc4WRPb0NC43ZPjVxsRDe+yFHHHLJJWevhabaIP0z0ujaNWdQmGUn5yEPrPkVnBPe1+0kRv97DhzPb0UdBr6OObZv9kIOGnJzLRPlL0+lFN+6yPe5BH0kV4E/yD+PlIm6bQ/uF2Um98Qlgbs74V5V4WVbl0GgDvsB/BBbiCnTj2lG5yVyqvX+QaOSYOsNk7y8WiPo+c1Ah2tFPesbJTmFfEfX7qU2BZVmRoSPnkMU+D1EUW5L0WErMHKq9P0o149NeqZ+w7wq7qO77f02p11Qmo6/laWnoVlFvnbh+uaJTAW616Dwo6rjmIw3lLnTjminZ+38DM8Q92yv1HfUnOh3AL/H9I7hnpA1lKrXnb0nRkqSXxf0nFC3bK7XMqCdT6o2NeIiirEE3Lvfks6kesI6hf1m2nTt8TW2uIeeLhub8vsxAT5IOUB2+8qTm2RStlYqOnOV7xLXBRj5EUWxJ0hKic/2k98dJ367azh32Es0Tz4hrTcn5fZE9I8s+ajc6m20CgrUWrdVEK0yFJub8RRhEN56UMjk+TVO7xtuK6yFMS1hIuuk82+SETSk6h3A/hmsJ7egfPypEh555ej/hHOzZYktyfl9keiqLzzc+LUlqWc7vSyfRJ3Rpegw4zUOrj/ofoKU5vy/91Jp+vIDWLkPL/J9h/0mmAT9TXa58vvIkzKe6ydpQ3FogEAgEAoFAIBCI+Rf5q90lTPZHIwAAAABJRU5ErkJggg==", - "title": "Wikipedia", - "type": "affiliate", - "url": "https://www.wikipedia.org/" - }, - { - "bgColor": "#400090", - "directoryId": 10000004, - "imageURI": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAD3ElEQVR4nO3bS4xecxjH8WmLBVVEx63JBIkEISkhJqURpAsZQioWqpeNSxraYlKpSwiDIRY0aSakqgS9qHRBIhKxYdFFFxWXIGkilYZEUCKj4zLzsfi/LN55zpiZc/lr+/6Ss3nfc57ze77n9r88/y7swxaswgLM7jpMhTlYiNWtnPd1Ga9RfIVtuB+L0J3b/FSFeejDQ9iBvRhrTzYCUKTv8RFewlrcgAtxQsYk5+Ii3IQHsBm78ONkk5oKgIn0Mz7BO3gBA7gHS3EtLsXZre1UnITj2pI5vvV7D85BL67DCvRjEJvwHj7HcBXGqwJwyKoDILeB3OoAyG0gt8oAGMYj0qdnJ17DY3i2vK1CPYmn8Cq2YwgP4rfpBix7BwwE3+aZ2F0ybqQPMSM439NlgpYFMILzAlO9glZXCf2F+cF5LsafZQJX8Q4oujKbK4j9j4aC+EdhT9nAVb0Ebw8MduNABbF/wMlB/LUVxK4MwE84JTC5uoLYK4O48/BrBbEr/Qy+XnCbfloi5h7MCuJurcSxagGMYWFg9qr/SbxQVTeEiq7Ym9OI9UYQ52ipJ1iZ6mgJ3h0Y7zG17usvOC2I01+12ToAHBCMIGHdFGKsCo4/QwJTqerqC2wMEjgGX0zi2KLH6JU6jNYFYBSXBElc/R/HjaE3OO4y1bYs/1WdvcFd4hbilgmOie6cGa1Ytaju7vDSIKHTxc9yUYtvWZ0G6wawH8cGSa0J9r0t2G92K0ZtamJA5PEgsfaOTNHjMlC3uSYADKMnSG6B9GIr6uqehYN1m2tqSGxre4KtJDdhfcF/O5ow1hSAMVweJNmNOcHvlbb3J1KTg6K7MTO62m3Jz1LBQMdk1fSo8IpJALizSUNNA/jWBNPvOFGahG1MOeYFnpgAwHNNm8kB4CDODJI/F380bSbXzNAzAYD1OYzkAjAYABjKYaQDIMdJxQDqnFMsVC4A6wIAgzmMdADkOKkYwKM5jOQCcFcAYCqjxpUpF4Bovu+IB3BfDiO5AIzrFWJlDiO5ACzpABgP4I4cRnIBWBwAWJLDSC4AfR0A4wHcksNILgCLAgB9OYzkAnDFkQ5gDZbj3ta2XCp5bVydYuncBnKrAyC3gdzqAMhtILfqBDCCb6SZ3velatGXsUFa5NC+vdjatrf2/QAfSyUyv9dlsgyAEXyGt/G8VBl+PS7A3PaGTllJCy7n40Zp8GQD3sWXSgCaDIBRqcBxGx7GYmll57hixlySaojPx83SuqW3pLXC0wKwX7oF+3GloILjUJE03X6NtAh8J76LAOzFRtwqKGY63CStX14mLen5+m9Vgqdbrd+9cgAAAABJRU5ErkJggg==", - "title": "Yahoo!", - "type": "affiliate", - "url": "https://www.yahoo.com/" - }, - { - "directoryId": 10000005, - "imageURI": "data:image/png;base64,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", - "title": "Amazon", - "type": "affiliate", - "url": "https://www.amazon.com/" - } - ] -} diff --git a/browser/base/content/newtab/cells.js b/browser/base/content/newtab/cells.js deleted file mode 100644 index 989ad4454cad..000000000000 --- a/browser/base/content/newtab/cells.js +++ /dev/null @@ -1,126 +0,0 @@ -#ifdef 0 -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ -#endif - -/** - * This class manages a cell's DOM node (not the actually cell content, a site). - * It's mostly read-only, i.e. all manipulation of both position and content - * aren't handled here. - */ -function Cell(aGrid, aNode) { - this._grid = aGrid; - this._node = aNode; - this._node._newtabCell = this; - - // Register drag-and-drop event handlers. - ["dragenter", "dragover", "dragexit", "drop"].forEach(function (aType) { - this._node.addEventListener(aType, this); - }, this); -} - -Cell.prototype = { - /** - * The grid. - */ - _grid: null, - - /** - * The cell's DOM node. - */ - get node() { return this._node; }, - - /** - * The cell's offset in the grid. - */ - get index() { - let index = this._grid.cells.indexOf(this); - - // Cache this value, overwrite the getter. - Object.defineProperty(this, "index", {value: index, enumerable: true}); - - return index; - }, - - /** - * The previous cell in the grid. - */ - get previousSibling() { - let prev = this.node.previousElementSibling; - prev = prev && prev._newtabCell; - - // Cache this value, overwrite the getter. - Object.defineProperty(this, "previousSibling", {value: prev, enumerable: true}); - - return prev; - }, - - /** - * The next cell in the grid. - */ - get nextSibling() { - let next = this.node.nextElementSibling; - next = next && next._newtabCell; - - // Cache this value, overwrite the getter. - Object.defineProperty(this, "nextSibling", {value: next, enumerable: true}); - - return next; - }, - - /** - * The site contained in the cell, if any. - */ - get site() { - let firstChild = this.node.firstElementChild; - return firstChild && firstChild._newtabSite; - }, - - /** - * Checks whether the cell contains a pinned site. - * @return Whether the cell contains a pinned site. - */ - containsPinnedSite: function Cell_containsPinnedSite() { - let site = this.site; - return site && site.isPinned(); - }, - - /** - * Checks whether the cell contains a site (is empty). - * @return Whether the cell is empty. - */ - isEmpty: function Cell_isEmpty() { - return !this.site; - }, - - /** - * Handles all cell events. - */ - handleEvent: function Cell_handleEvent(aEvent) { - // We're not responding to external drag/drop events - // when our parent window is in private browsing mode. - if (inPrivateBrowsingMode() && !gDrag.draggedSite) - return; - - if (aEvent.type != "dragexit" && !gDrag.isValid(aEvent)) - return; - - switch (aEvent.type) { - case "dragenter": - aEvent.preventDefault(); - gDrop.enter(this, aEvent); - break; - case "dragover": - aEvent.preventDefault(); - break; - case "dragexit": - gDrop.exit(this, aEvent); - break; - case "drop": - aEvent.preventDefault(); - gDrop.drop(this, aEvent); - break; - } - } -}; diff --git a/browser/base/content/newtab/customize.js b/browser/base/content/newtab/customize.js deleted file mode 100644 index 95d46c2ebd88..000000000000 --- a/browser/base/content/newtab/customize.js +++ /dev/null @@ -1,132 +0,0 @@ -#ifdef 0 -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ -#endif - -var gCustomize = { - _nodeIDSuffixes: [ - "blank", - "button", - "classic", - "enhanced", - "panel", - "overlay", - "learn" - ], - - _nodes: {}, - - init: function() { - for (let idSuffix of this._nodeIDSuffixes) { - this._nodes[idSuffix] = document.getElementById("newtab-customize-" + idSuffix); - } - - this._nodes.button.addEventListener("click", e => this.showPanel(e)); - this._nodes.blank.addEventListener("click", this); - this._nodes.classic.addEventListener("click", this); - this._nodes.enhanced.addEventListener("click", this); - this._nodes.learn.addEventListener("click", this); - - this.updateSelected(); - }, - - hidePanel: function() { - this._nodes.overlay.addEventListener("transitionend", function() { - gCustomize._nodes.overlay.style.display = "none"; - }, {once: true}); - this._nodes.overlay.style.opacity = 0; - this._nodes.button.removeAttribute("active"); - this._nodes.panel.removeAttribute("open"); - document.removeEventListener("click", this); - document.removeEventListener("keydown", this); - }, - - showPanel: function(event) { - if (this._nodes.panel.getAttribute("open") == "true") { - return; - } - - let {panel, button, overlay} = this._nodes; - overlay.style.display = "block"; - panel.setAttribute("open", "true"); - button.setAttribute("active", "true"); - setTimeout(() => { - // Wait for display update to take place, then animate. - overlay.style.opacity = 0.8; - }, 0); - - document.addEventListener("click", this); - document.addEventListener("keydown", this); - - // Stop the event propogation to prevent panel from immediately closing - // via the document click event that we just added. - event.stopPropagation(); - }, - - handleEvent: function(event) { - switch (event.type) { - case "click": - this.onClick(event); - break; - case "keydown": - this.onKeyDown(event); - break; - } - }, - - onClick: function(event) { - if (event.currentTarget == document) { - if (!this._nodes.panel.contains(event.target)) { - this.hidePanel(); - } - } - switch (event.currentTarget.id) { - case "newtab-customize-blank": - sendAsyncMessage("NewTab:Customize", {enabled: false, enhanced: false}); - break; - case "newtab-customize-classic": - if (this._nodes.enhanced.getAttribute("selected")){ - sendAsyncMessage("NewTab:Customize", {enabled: true, enhanced: true}); - } else { - sendAsyncMessage("NewTab:Customize", {enabled: true, enhanced: false}); - } - break; - case "newtab-customize-enhanced": - sendAsyncMessage("NewTab:Customize", {enabled: true, enhanced: !gAllPages.enhanced}); - break; - case "newtab-customize-learn": - this.showLearn(); - break; - } - }, - - onKeyDown: function(event) { - if (event.keyCode == event.DOM_VK_ESCAPE) { - this.hidePanel(); - } - }, - - showLearn: function() { - window.open(TILES_INTRO_LINK, 'new_window'); - this.hidePanel(); - }, - - updateSelected: function() { - let {enabled, enhanced} = gAllPages; - let selected = enabled ? enhanced ? "enhanced" : "classic" : "blank"; - ["enhanced", "classic", "blank"].forEach(id => { - let node = this._nodes[id]; - if (id == selected) { - node.setAttribute("selected", true); - } - else { - node.removeAttribute("selected"); - } - }); - if (selected == "enhanced") { - // If enhanced is selected, so is classic (since enhanced is a subitem of classic) - this._nodes.classic.setAttribute("selected", true); - } - }, -}; diff --git a/browser/base/content/newtab/drag.js b/browser/base/content/newtab/drag.js deleted file mode 100644 index e3928ebd0b9d..000000000000 --- a/browser/base/content/newtab/drag.js +++ /dev/null @@ -1,151 +0,0 @@ -#ifdef 0 -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ -#endif - -/** - * This singleton implements site dragging functionality. - */ -var gDrag = { - /** - * The site offset to the drag start point. - */ - _offsetX: null, - _offsetY: null, - - /** - * The site that is dragged. - */ - _draggedSite: null, - get draggedSite() { return this._draggedSite; }, - - /** - * The cell width/height at the point the drag started. - */ - _cellWidth: null, - _cellHeight: null, - get cellWidth() { return this._cellWidth; }, - get cellHeight() { return this._cellHeight; }, - - /** - * Start a new drag operation. - * @param aSite The site that's being dragged. - * @param aEvent The 'dragstart' event. - */ - start: function Drag_start(aSite, aEvent) { - this._draggedSite = aSite; - - // Mark nodes as being dragged. - let selector = ".newtab-site, .newtab-control, .newtab-thumbnail"; - let parentCell = aSite.node.parentNode; - let nodes = parentCell.querySelectorAll(selector); - for (let i = 0; i < nodes.length; i++) - nodes[i].setAttribute("dragged", "true"); - - parentCell.setAttribute("dragged", "true"); - - this._setDragData(aSite, aEvent); - - // Store the cursor offset. - let node = aSite.node; - let rect = node.getBoundingClientRect(); - this._offsetX = aEvent.clientX - rect.left; - this._offsetY = aEvent.clientY - rect.top; - - // Store the cell dimensions. - let cellNode = aSite.cell.node; - this._cellWidth = cellNode.offsetWidth; - this._cellHeight = cellNode.offsetHeight; - - gTransformation.freezeSitePosition(aSite); - }, - - /** - * Handles the 'drag' event. - * @param aSite The site that's being dragged. - * @param aEvent The 'drag' event. - */ - drag: function Drag_drag(aSite, aEvent) { - // Get the viewport size. - let {clientWidth, clientHeight} = document.documentElement; - - // We'll want a padding of 5px. - let border = 5; - - // Enforce minimum constraints to keep the drag image inside the window. - let left = Math.max(scrollX + aEvent.clientX - this._offsetX, border); - let top = Math.max(scrollY + aEvent.clientY - this._offsetY, border); - - // Enforce maximum constraints to keep the drag image inside the window. - left = Math.min(left, scrollX + clientWidth - this.cellWidth - border); - top = Math.min(top, scrollY + clientHeight - this.cellHeight - border); - - // Update the drag image's position. - gTransformation.setSitePosition(aSite, {left: left, top: top}); - }, - - /** - * Ends the current drag operation. - * @param aSite The site that's being dragged. - * @param aEvent The 'dragend' event. - */ - end: function Drag_end(aSite, aEvent) { - let nodes = gGrid.node.querySelectorAll("[dragged]") - for (let i = 0; i < nodes.length; i++) - nodes[i].removeAttribute("dragged"); - - // Slide the dragged site back into its cell (may be the old or the new cell). - gTransformation.slideSiteTo(aSite, aSite.cell, {unfreeze: true}); - - this._draggedSite = null; - }, - - /** - * Checks whether we're responsible for a given drag event. - * @param aEvent The drag event to check. - * @return Whether we should handle this drag and drop operation. - */ - isValid: function Drag_isValid(aEvent) { - let link = gDragDataHelper.getLinkFromDragEvent(aEvent); - - // Check that the drag data is non-empty. - // Can happen when dragging places folders. - if (!link || !link.url) { - return false; - } - - // Check that we're not accepting URLs which would inherit the caller's - // principal (such as javascript: or data:). - return gLinkChecker.checkLoadURI(link.url); - }, - - /** - * Initializes the drag data for the current drag operation. - * @param aSite The site that's being dragged. - * @param aEvent The 'dragstart' event. - */ - _setDragData: function Drag_setDragData(aSite, aEvent) { - let {url, title} = aSite; - - let dt = aEvent.dataTransfer; - dt.mozCursor = "default"; - dt.effectAllowed = "move"; - dt.setData("text/plain", url); - dt.setData("text/uri-list", url); - dt.setData("text/x-moz-url", url + "\n" + title); - dt.setData("text/html", "" + url + ""); - - // Create and use an empty drag element. We don't want to use the default - // drag image with its default opacity. - let dragElement = document.createElementNS(HTML_NAMESPACE, "div"); - dragElement.classList.add("newtab-drag"); - let scrollbox = document.getElementById("newtab-vertical-margin"); - scrollbox.appendChild(dragElement); - dt.setDragImage(dragElement, 0, 0); - - // After the 'dragstart' event has been processed we can remove the - // temporary drag element from the DOM. - setTimeout(() => scrollbox.removeChild(dragElement), 0); - } -}; diff --git a/browser/base/content/newtab/dragDataHelper.js b/browser/base/content/newtab/dragDataHelper.js deleted file mode 100644 index 675ff267116a..000000000000 --- a/browser/base/content/newtab/dragDataHelper.js +++ /dev/null @@ -1,22 +0,0 @@ -#ifdef 0 -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ -#endif - -var gDragDataHelper = { - get mimeType() { - return "text/x-moz-url"; - }, - - getLinkFromDragEvent: function DragDataHelper_getLinkFromDragEvent(aEvent) { - let dt = aEvent.dataTransfer; - if (!dt || !dt.types.includes(this.mimeType)) { - return null; - } - - let data = dt.getData(this.mimeType) || ""; - let [url, title] = data.split(/[\r\n]+/); - return {url: url, title: title}; - } -}; diff --git a/browser/base/content/newtab/drop.js b/browser/base/content/newtab/drop.js deleted file mode 100644 index 748652455c86..000000000000 --- a/browser/base/content/newtab/drop.js +++ /dev/null @@ -1,150 +0,0 @@ -#ifdef 0 -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ -#endif - -// A little delay that prevents the grid from being too sensitive when dragging -// sites around. -const DELAY_REARRANGE_MS = 100; - -/** - * This singleton implements site dropping functionality. - */ -var gDrop = { - /** - * The last drop target. - */ - _lastDropTarget: null, - - /** - * Handles the 'dragenter' event. - * @param aCell The drop target cell. - */ - enter: function Drop_enter(aCell) { - this._delayedRearrange(aCell); - }, - - /** - * Handles the 'dragexit' event. - * @param aCell The drop target cell. - * @param aEvent The 'dragexit' event. - */ - exit: function Drop_exit(aCell, aEvent) { - if (aEvent.dataTransfer && !aEvent.dataTransfer.mozUserCancelled) { - this._delayedRearrange(); - } else { - // The drag operation has been cancelled. - this._cancelDelayedArrange(); - this._rearrange(); - } - }, - - /** - * Handles the 'drop' event. - * @param aCell The drop target cell. - * @param aEvent The 'dragexit' event. - */ - drop: function Drop_drop(aCell, aEvent) { - // The cell that is the drop target could contain a pinned site. We need - // to find out where that site has gone and re-pin it there. - if (aCell.containsPinnedSite()) - this._repinSitesAfterDrop(aCell); - - // Pin the dragged or insert the new site. - this._pinDraggedSite(aCell, aEvent); - - this._cancelDelayedArrange(); - - // Update the grid and move all sites to their new places. - gUpdater.updateGrid(); - }, - - /** - * Re-pins all pinned sites in their (new) positions. - * @param aCell The drop target cell. - */ - _repinSitesAfterDrop: function Drop_repinSitesAfterDrop(aCell) { - let sites = gDropPreview.rearrange(aCell); - - // Filter out pinned sites. - let pinnedSites = sites.filter(function (aSite) { - return aSite && aSite.isPinned(); - }); - - // Re-pin all shifted pinned cells. - pinnedSites.forEach(aSite => aSite.pin(sites.indexOf(aSite))); - }, - - /** - * Pins the dragged site in its new place. - * @param aCell The drop target cell. - * @param aEvent The 'dragexit' event. - */ - _pinDraggedSite: function Drop_pinDraggedSite(aCell, aEvent) { - let index = aCell.index; - let draggedSite = gDrag.draggedSite; - - if (draggedSite) { - // Pin the dragged site at its new place. - if (aCell != draggedSite.cell) - draggedSite.pin(index); - } else { - let link = gDragDataHelper.getLinkFromDragEvent(aEvent); - if (link) { - // A new link was dragged onto the grid. Create it by pinning its URL. - gPinnedLinks.pin(link, index); - - // Make sure the newly added link is not blocked. - gBlockedLinks.unblock(link); - } - } - }, - - /** - * Time a rearrange with a little delay. - * @param aCell The drop target cell. - */ - _delayedRearrange: function Drop_delayedRearrange(aCell) { - // The last drop target didn't change so there's no need to re-arrange. - if (this._lastDropTarget == aCell) - return; - - let self = this; - - function callback() { - self._rearrangeTimeout = null; - self._rearrange(aCell); - } - - this._cancelDelayedArrange(); - this._rearrangeTimeout = setTimeout(callback, DELAY_REARRANGE_MS); - - // Store the last drop target. - this._lastDropTarget = aCell; - }, - - /** - * Cancels a timed rearrange, if any. - */ - _cancelDelayedArrange: function Drop_cancelDelayedArrange() { - if (this._rearrangeTimeout) { - clearTimeout(this._rearrangeTimeout); - this._rearrangeTimeout = null; - } - }, - - /** - * Rearrange all sites in the grid depending on the current drop target. - * @param aCell The drop target cell. - */ - _rearrange: function Drop_rearrange(aCell) { - let sites = gGrid.sites; - - // We need to rearrange the grid only if there's a current drop target. - if (aCell) - sites = gDropPreview.rearrange(aCell); - - gTransformation.rearrangeSites(sites, {unfreeze: !aCell}); - } -}; diff --git a/browser/base/content/newtab/dropPreview.js b/browser/base/content/newtab/dropPreview.js deleted file mode 100644 index fd7587a35e18..000000000000 --- a/browser/base/content/newtab/dropPreview.js +++ /dev/null @@ -1,222 +0,0 @@ -#ifdef 0 -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ -#endif - -/** - * This singleton provides the ability to re-arrange the current grid to - * indicate the transformation that results from dropping a cell at a certain - * position. - */ -var gDropPreview = { - /** - * Rearranges the sites currently contained in the grid when a site would be - * dropped onto the given cell. - * @param aCell The drop target cell. - * @return The re-arranged array of sites. - */ - rearrange: function DropPreview_rearrange(aCell) { - let sites = gGrid.sites; - - // Insert the dragged site into the current grid. - this._insertDraggedSite(sites, aCell); - - // After the new site has been inserted we need to correct the positions - // of all pinned tabs that have been moved around. - this._repositionPinnedSites(sites, aCell); - - return sites; - }, - - /** - * Inserts the currently dragged site into the given array of sites. - * @param aSites The array of sites to insert into. - * @param aCell The drop target cell. - */ - _insertDraggedSite: function DropPreview_insertDraggedSite(aSites, aCell) { - let dropIndex = aCell.index; - let draggedSite = gDrag.draggedSite; - - // We're currently dragging a site. - if (draggedSite) { - let dragCell = draggedSite.cell; - let dragIndex = dragCell.index; - - // Move the dragged site into its new position. - if (dragIndex != dropIndex) { - aSites.splice(dragIndex, 1); - aSites.splice(dropIndex, 0, draggedSite); - } - // We're handling an external drag item. - } else { - aSites.splice(dropIndex, 0, null); - } - }, - - /** - * Correct the position of all pinned sites that might have been moved to - * different positions after the dragged site has been inserted. - * @param aSites The array of sites containing the dragged site. - * @param aCell The drop target cell. - */ - _repositionPinnedSites: - function DropPreview_repositionPinnedSites(aSites, aCell) { - - // Collect all pinned sites. - let pinnedSites = this._filterPinnedSites(aSites, aCell); - - // Correct pinned site positions. - pinnedSites.forEach(function (aSite) { - aSites[aSites.indexOf(aSite)] = aSites[aSite.cell.index]; - aSites[aSite.cell.index] = aSite; - }, this); - - // There might be a pinned cell that got pushed out of the grid, try to - // sneak it in by removing a lower-priority cell. - if (this._hasOverflowedPinnedSite(aSites, aCell)) - this._repositionOverflowedPinnedSite(aSites, aCell); - }, - - /** - * Filter pinned sites out of the grid that are still on their old positions - * and have not moved. - * @param aSites The array of sites to filter. - * @param aCell The drop target cell. - * @return The filtered array of sites. - */ - _filterPinnedSites: function DropPreview_filterPinnedSites(aSites, aCell) { - let draggedSite = gDrag.draggedSite; - - // When dropping on a cell that contains a pinned site make sure that all - // pinned cells surrounding the drop target are moved as well. - let range = this._getPinnedRange(aCell); - - return aSites.filter(function (aSite, aIndex) { - // The site must be valid, pinned and not the dragged site. - if (!aSite || aSite == draggedSite || !aSite.isPinned()) - return false; - - let index = aSite.cell.index; - - // If it's not in the 'pinned range' it's a valid pinned site. - return (index > range.end || index < range.start); - }); - }, - - /** - * Determines the range of pinned sites surrounding the drop target cell. - * @param aCell The drop target cell. - * @return The range of pinned cells. - */ - _getPinnedRange: function DropPreview_getPinnedRange(aCell) { - let dropIndex = aCell.index; - let range = {start: dropIndex, end: dropIndex}; - - // We need a pinned range only when dropping on a pinned site. - if (aCell.containsPinnedSite()) { - let links = gPinnedLinks.links; - - // Find all previous siblings of the drop target that are pinned as well. - while (range.start && links[range.start - 1]) - range.start--; - - let maxEnd = links.length - 1; - - // Find all next siblings of the drop target that are pinned as well. - while (range.end < maxEnd && links[range.end + 1]) - range.end++; - } - - return range; - }, - - /** - * Checks if the given array of sites contains a pinned site that has - * been pushed out of the grid. - * @param aSites The array of sites to check. - * @param aCell The drop target cell. - * @return Whether there is an overflowed pinned cell. - */ - _hasOverflowedPinnedSite: - function DropPreview_hasOverflowedPinnedSite(aSites, aCell) { - - // If the drop target isn't pinned there's no way a pinned site has been - // pushed out of the grid so we can just exit here. - if (!aCell.containsPinnedSite()) - return false; - - let cells = gGrid.cells; - - // No cells have been pushed out of the grid, nothing to do here. - if (aSites.length <= cells.length) - return false; - - let overflowedSite = aSites[cells.length]; - - // Nothing to do if the site that got pushed out of the grid is not pinned. - return (overflowedSite && overflowedSite.isPinned()); - }, - - /** - * We have a overflowed pinned site that we need to re-position so that it's - * visible again. We try to find a lower-priority cell (empty or containing - * an unpinned site) that we can move it to. - * @param aSites The array of sites. - * @param aCell The drop target cell. - */ - _repositionOverflowedPinnedSite: - function DropPreview_repositionOverflowedPinnedSite(aSites, aCell) { - - // Try to find a lower-priority cell (empty or containing an unpinned site). - let index = this._indexOfLowerPrioritySite(aSites, aCell); - - if (index > -1) { - let cells = gGrid.cells; - let dropIndex = aCell.index; - - // Move all pinned cells to their new positions to let the overflowed - // site fit into the grid. - for (let i = index + 1, lastPosition = index; i < aSites.length; i++) { - if (i != dropIndex) { - aSites[lastPosition] = aSites[i]; - lastPosition = i; - } - } - - // Finally, remove the overflowed site from its previous position. - aSites.splice(cells.length, 1); - } - }, - - /** - * Finds the index of the last cell that is empty or contains an unpinned - * site. These are considered to be of a lower priority. - * @param aSites The array of sites. - * @param aCell The drop target cell. - * @return The cell's index. - */ - _indexOfLowerPrioritySite: - function DropPreview_indexOfLowerPrioritySite(aSites, aCell) { - - let cells = gGrid.cells; - let dropIndex = aCell.index; - - // Search (beginning with the last site in the grid) for a site that is - // empty or unpinned (an thus lower-priority) and can be pushed out of the - // grid instead of the pinned site. - for (let i = cells.length - 1; i >= 0; i--) { - // The cell that is our drop target is not a good choice. - if (i == dropIndex) - continue; - - let site = aSites[i]; - - // We can use the cell only if it's empty or the site is un-pinned. - if (!site || !site.isPinned()) - return i; - } - - return -1; - } -}; diff --git a/browser/base/content/newtab/dropTargetShim.js b/browser/base/content/newtab/dropTargetShim.js deleted file mode 100644 index 57a97fa00a21..000000000000 --- a/browser/base/content/newtab/dropTargetShim.js +++ /dev/null @@ -1,232 +0,0 @@ -#ifdef 0 -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ -#endif - -/** - * This singleton provides a custom drop target detection. We need this because - * the default DnD target detection relies on the cursor's position. We want - * to pick a drop target based on the dragged site's position. - */ -var gDropTargetShim = { - /** - * Cache for the position of all cells, cleaned after drag finished. - */ - _cellPositions: null, - - /** - * The last drop target that was hovered. - */ - _lastDropTarget: null, - - /** - * Initializes the drop target shim. - */ - init: function () { - gGrid.node.addEventListener("dragstart", this, true); - }, - - /** - * Add all event listeners needed during a drag operation. - */ - _addEventListeners: function () { - gGrid.node.addEventListener("dragend", this); - - let docElement = document.documentElement; - docElement.addEventListener("dragover", this); - docElement.addEventListener("dragenter", this); - docElement.addEventListener("drop", this); - }, - - /** - * Remove all event listeners that were needed during a drag operation. - */ - _removeEventListeners: function () { - gGrid.node.removeEventListener("dragend", this); - - let docElement = document.documentElement; - docElement.removeEventListener("dragover", this); - docElement.removeEventListener("dragenter", this); - docElement.removeEventListener("drop", this); - }, - - /** - * Handles all shim events. - */ - handleEvent: function (aEvent) { - switch (aEvent.type) { - case "dragstart": - this._dragstart(aEvent); - break; - case "dragenter": - aEvent.preventDefault(); - break; - case "dragover": - this._dragover(aEvent); - break; - case "drop": - this._drop(aEvent); - break; - case "dragend": - this._dragend(aEvent); - break; - } - }, - - /** - * Handles the 'dragstart' event. - * @param aEvent The 'dragstart' event. - */ - _dragstart: function (aEvent) { - if (aEvent.target.classList.contains("newtab-link")) { - gGrid.lock(); - this._addEventListeners(); - } - }, - - /** - * Handles the 'dragover' event. - * @param aEvent The 'dragover' event. - */ - _dragover: function (aEvent) { - // XXX bug 505521 - Use the dragover event to retrieve the - // current mouse coordinates while dragging. - let sourceNode = aEvent.dataTransfer.mozSourceNode.parentNode; - gDrag.drag(sourceNode._newtabSite, aEvent); - - // Find the current drop target, if there's one. - this._updateDropTarget(aEvent); - - // If we have a valid drop target, - // let the drag-and-drop service know. - if (this._lastDropTarget) { - aEvent.preventDefault(); - } - }, - - /** - * Handles the 'drop' event. - * @param aEvent The 'drop' event. - */ - _drop: function (aEvent) { - // We're accepting all drops. - aEvent.preventDefault(); - - // remember that drop event was seen, this explicitly - // assumes that drop event preceeds dragend event - this._dropSeen = true; - - // Make sure to determine the current drop target - // in case the dragover event hasn't been fired. - this._updateDropTarget(aEvent); - - // A site was successfully dropped. - this._dispatchEvent(aEvent, "drop", this._lastDropTarget); - }, - - /** - * Handles the 'dragend' event. - * @param aEvent The 'dragend' event. - */ - _dragend: function (aEvent) { - if (this._lastDropTarget) { - if (aEvent.dataTransfer.mozUserCancelled || !this._dropSeen) { - // The drag operation was cancelled or no drop event was generated - this._dispatchEvent(aEvent, "dragexit", this._lastDropTarget); - this._dispatchEvent(aEvent, "dragleave", this._lastDropTarget); - } - - // Clean up. - this._lastDropTarget = null; - this._cellPositions = null; - } - - this._dropSeen = false; - gGrid.unlock(); - this._removeEventListeners(); - }, - - /** - * Tries to find the current drop target and will fire - * appropriate dragenter, dragexit, and dragleave events. - * @param aEvent The current drag event. - */ - _updateDropTarget: function (aEvent) { - // Let's see if we find a drop target. - let target = this._findDropTarget(aEvent); - - if (target != this._lastDropTarget) { - if (this._lastDropTarget) - // We left the last drop target. - this._dispatchEvent(aEvent, "dragexit", this._lastDropTarget); - - if (target) - // We're now hovering a (new) drop target. - this._dispatchEvent(aEvent, "dragenter", target); - - if (this._lastDropTarget) - // We left the last drop target. - this._dispatchEvent(aEvent, "dragleave", this._lastDropTarget); - - this._lastDropTarget = target; - } - }, - - /** - * Determines the current drop target by matching the dragged site's position - * against all cells in the grid. - * @return The currently hovered drop target or null. - */ - _findDropTarget: function () { - // These are the minimum intersection values - we want to use the cell if - // the site is >= 50% hovering its position. - let minWidth = gDrag.cellWidth / 2; - let minHeight = gDrag.cellHeight / 2; - - let cellPositions = this._getCellPositions(); - let rect = gTransformation.getNodePosition(gDrag.draggedSite.node); - - // Compare each cell's position to the dragged site's position. - for (let i = 0; i < cellPositions.length; i++) { - let inter = rect.intersect(cellPositions[i].rect); - - // If the intersection is big enough we found a drop target. - if (inter.width >= minWidth && inter.height >= minHeight) - return cellPositions[i].cell; - } - - // No drop target found. - return null; - }, - - /** - * Gets the positions of all cell nodes. - * @return The (cached) cell positions. - */ - _getCellPositions: function DropTargetShim_getCellPositions() { - if (this._cellPositions) - return this._cellPositions; - - return this._cellPositions = gGrid.cells.map(function (cell) { - return {cell: cell, rect: gTransformation.getNodePosition(cell.node)}; - }); - }, - - /** - * Dispatches a custom DragEvent on the given target node. - * @param aEvent The source event. - * @param aType The event type. - * @param aTarget The target node that receives the event. - */ - _dispatchEvent: function (aEvent, aType, aTarget) { - let node = aTarget.node; - let event = document.createEvent("DragEvent"); - - // The event should not bubble to prevent recursion. - event.initDragEvent(aType, false, true, window, 0, 0, 0, 0, 0, false, false, - false, false, 0, node, aEvent.dataTransfer); - - node.dispatchEvent(event); - } -}; diff --git a/browser/base/content/newtab/grid.js b/browser/base/content/newtab/grid.js deleted file mode 100644 index 7a086091f814..000000000000 --- a/browser/base/content/newtab/grid.js +++ /dev/null @@ -1,295 +0,0 @@ -#ifdef 0 -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ -#endif - -/** - * Define various fixed dimensions - */ -const GRID_BOTTOM_EXTRA = 7; // title's line-height extends 7px past the margin -const GRID_WIDTH_EXTRA = 1; // provide 1px buffer to allow for rounding error - -/** - * This singleton represents the grid that contains all sites. - */ -var gGrid = { - /** - * The DOM node of the grid. - */ - _node: null, - _gridDefaultContent: null, - get node() { return this._node; }, - - /** - * The cached DOM fragment for sites. - */ - _siteFragment: null, - - /** - * All cells contained in the grid. - */ - _cells: [], - get cells() { return this._cells; }, - - /** - * All sites contained in the grid's cells. Sites may be empty. - */ - get sites() { return this.cells.map(cell => cell.site); }, - - // Tells whether the grid has already been initialized. - get ready() { return !!this._ready; }, - - // Returns whether the page has finished loading yet. - get isDocumentLoaded() { return document.readyState == "complete"; }, - - /** - * Initializes the grid. - * @param aSelector The query selector of the grid. - */ - init: function Grid_init() { - this._node = document.getElementById("newtab-grid"); - this._gridDefaultContent = this._node.lastChild; - this._createSiteFragment(); - - gLinks.populateCache(() => { - this._refreshGrid(); - this._ready = true; - - // If fetching links took longer than loading the page itself then - // we need to resize the grid as that was blocked until now. - // We also want to resize now if the page was already loaded when - // initializing the grid (the user toggled the page). - this._resizeGrid(); - - addEventListener("resize", this); - }); - - // Resize the grid as soon as the page loads. - if (!this.isDocumentLoaded) { - addEventListener("load", this); - } - }, - - /** - * Creates a new site in the grid. - * @param aLink The new site's link. - * @param aCell The cell that will contain the new site. - * @return The newly created site. - */ - createSite: function Grid_createSite(aLink, aCell) { - let node = aCell.node; - node.appendChild(this._siteFragment.cloneNode(true)); - return new Site(node.firstElementChild, aLink); - }, - - /** - * Handles all grid events. - */ - handleEvent: function Grid_handleEvent(aEvent) { - switch (aEvent.type) { - case "load": - case "resize": - this._resizeGrid(); - break; - } - }, - - /** - * Locks the grid to block all pointer events. - */ - lock: function Grid_lock() { - this.node.setAttribute("locked", "true"); - }, - - /** - * Unlocks the grid to allow all pointer events. - */ - unlock: function Grid_unlock() { - this.node.removeAttribute("locked"); - }, - - /** - * Renders and resizes the gird. _resizeGrid() call is needed to ensure - * that scrollbar disappears when the bottom row becomes empty following - * the block action, or tile display is turmed off via cog menu - */ - - refresh() { - this._refreshGrid(); - this._resizeGrid(); - }, - - /** - * Renders the grid, including cells and sites. - */ - _refreshGrid() { - let cell = document.createElementNS(HTML_NAMESPACE, "div"); - cell.classList.add("newtab-cell"); - - // Creates all the cells up to the maximum - let fragment = document.createDocumentFragment(); - for (let i = 0; i < gGridPrefs.gridColumns * gGridPrefs.gridRows; i++) { - fragment.appendChild(cell.cloneNode(true)); - } - - // Create cells. - let cells = Array.from(fragment.childNodes, (cell) => new Cell(this, cell)); - - // Fetch links. - let links = gLinks.getLinks(); - - // Create sites. - let numLinks = Math.min(links.length, cells.length); - let hasHistoryTiles = false; - for (let i = 0; i < numLinks; i++) { - if (links[i]) { - this.createSite(links[i], cells[i]); - if (links[i].type == "history") { - hasHistoryTiles = true; - } - } - } - - this._cells = cells; - while (this._gridDefaultContent.nextSibling) { - this._gridDefaultContent.nextSibling.remove(); - } - this._node.appendChild(fragment); - - document.getElementById("topsites-heading").textContent = - newTabString(hasHistoryTiles ? "userTopSites.heading" : "defaultTopSites.heading"); - }, - - /** - * Calculate the height for a number of rows up to the maximum rows - * @param rows Number of rows defaulting to the max - */ - _computeHeight: function Grid_computeHeight(aRows) { - let {gridRows} = gGridPrefs; - aRows = aRows === undefined ? gridRows : Math.min(gridRows, aRows); - return aRows * this._cellHeight + GRID_BOTTOM_EXTRA; - }, - - /** - * Creates the DOM fragment that is re-used when creating sites. - */ - _createSiteFragment: function Grid_createSiteFragment() { - let site = document.createElementNS(HTML_NAMESPACE, "div"); - site.classList.add("newtab-site"); - site.setAttribute("draggable", "true"); - - let link = document.createElement("a"); - link.className = "newtab-link"; - site.appendChild(link); - - let thumbnailPlaceHolder = document.createElement("span"); - thumbnailPlaceHolder.className = "newtab-thumbnail placeholder"; - link.appendChild(thumbnailPlaceHolder); - - let thumbnail = document.createElement("img"); - thumbnail.className = "newtab-thumbnail thumbnail"; - link.appendChild(thumbnail); - - let enhancedContent = document.createElement("img"); - enhancedContent.className = "newtab-thumbnail enhanced-content"; - link.appendChild(enhancedContent); - - let title = document.createElement("span"); - title.className = "newtab-title"; - link.appendChild(title); - - let pinButton = document.createElement("input"); - pinButton.type = "button"; - pinButton.title = newTabString("pin"); - pinButton.className = "newtab-control newtab-control-pin"; - site.appendChild(pinButton); - - let removeButton = document.createElement("input"); - removeButton.type = "button"; - removeButton.title = newTabString("block"); - removeButton.className = "newtab-control newtab-control-block"; - site.appendChild(removeButton); - - this._siteFragment = document.createDocumentFragment(); - this._siteFragment.appendChild(site); - }, - - /** - * Test a tile at a given position for being pinned or history - * @param position Position in sites array - */ - _isHistoricalTile: function Grid_isHistoricalTile(aPos) { - let site = this.sites[aPos]; - return site && (site.isPinned() || site.link && site.link.type == "history"); - }, - - /** - * Make sure the correct number of rows and columns are visible - */ - _resizeGrid: function Grid_resizeGrid() { - // If we're somehow called before the page has finished loading, - // let's bail out to avoid caching zero heights and widths. - // We'll be called again when DOMContentLoaded fires. - // Same goes for the grid if that's not ready yet. - if (!this.isDocumentLoaded || !this._ready) { - return; - } - - // Save the cell's computed height/width including margin and border - if (this._cellHeight === undefined) { - let refCell = document.querySelector(".newtab-cell"); - let style = getComputedStyle(refCell); - this._cellHeight = refCell.offsetHeight + - parseFloat(style.marginTop) + parseFloat(style.marginBottom); - this._cellWidth = refCell.offsetWidth + - parseFloat(style.marginLeft) + parseFloat(style.marginRight); - } - - let searchContainer = document.querySelector("#newtab-search-container"); - // Save search-container margin height - if (this._searchContainerMargin === undefined) { - let style = getComputedStyle(searchContainer); - this._searchContainerMargin = parseFloat(style.marginBottom) + - parseFloat(style.marginTop); - } - - // Find the number of rows we can place into view port - let availHeight = document.documentElement.clientHeight - - searchContainer.offsetHeight - this._searchContainerMargin; - let visibleRows = Math.floor(availHeight / this._cellHeight); - - // Find the number of columns that fit into view port - let maxGridWidth = gGridPrefs.gridColumns * this._cellWidth + GRID_WIDTH_EXTRA; - // available width is current grid width, but no greater than maxGridWidth - let availWidth = Math.min(document.querySelector("#newtab-grid").clientWidth, - maxGridWidth); - // finally get the number of columns we can fit into view port - let gridColumns = Math.floor(availWidth / this._cellWidth); - // walk sites backwords until a pinned or history tile is found or visibleRows reached - let tileIndex = Math.min(gGridPrefs.gridRows * gridColumns, this.sites.length) - 1; - while (tileIndex >= visibleRows * gridColumns) { - if (this._isHistoricalTile(tileIndex)) { - break; - } - tileIndex--; - } - - // Compute the actual number of grid rows we will display (potentially - // with a scroll bar). tileIndex now points to a historical tile with - // heighest index or to the last index of the visible row, if none found - // Dividing tileIndex by number of tiles in a column gives the rows - let gridRows = Math.floor(tileIndex / gridColumns) + 1; - - // we need to set grid width, for otherwise the scrollbar may shrink - // the grid when shown and cause grid layout to be different from - // what being computed above. This, in turn, may cause scrollbar shown - // for directory tiles, and introduce jitter when grid width is aligned - // exactly on the column boundary - this._node.style.width = gridColumns * this._cellWidth + "px"; - this._node.style.maxWidth = gGridPrefs.gridColumns * this._cellWidth + - GRID_WIDTH_EXTRA + "px"; - this._node.style.height = this._computeHeight() + "px"; - this._node.style.maxHeight = this._computeHeight(gridRows) + "px"; - } -}; diff --git a/browser/base/content/newtab/newTab.css b/browser/base/content/newtab/newTab.css deleted file mode 100644 index 42a58fc64084..000000000000 --- a/browser/base/content/newtab/newTab.css +++ /dev/null @@ -1,512 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -html { - width: 100%; - height: 100%; -} - -body { - font: message-box; - width: 100%; - height: 100%; - padding: 0; - margin: 0; - background-color: #F9F9FA; - display: -moz-box; - position: relative; - -moz-box-flex: 1; - -moz-user-focus: normal; - -moz-box-orient: vertical; -} - -input { - font: message-box; - font-size: 16px; -} - -input[type=button] { - cursor: pointer; -} - -/* UNDO */ -#newtab-undo-container { - transition: opacity 100ms ease-out; - -moz-box-align: center; - -moz-box-pack: center; - position: relative; - left: -50%; -} - -#newtab-undo-container[undo-disabled] { - opacity: 0; - pointer-events: none; -} - -/* CUSTOMIZE */ -#newtab-customize-button { - position: absolute; - top: 10px; - right: 20px; - z-index: 101; -} - -#newtab-customize-button:dir(rtl) { - left: 20px; - right: auto; -} - -/* MARGINS */ -#newtab-vertical-margin { - display: -moz-box; - position: relative; - -moz-box-flex: 1; - -moz-box-orient: vertical; -} - -#newtab-margin-undo-container { - display: -moz-box; - left: 50%; - position: absolute; - top: 6px; - z-index: 1; -} - -#newtab-margin-undo-container:dir(rtl) { - left: auto; - right: 6px; -} - -#newtab-undo-close-button:dir(rtl) { - float:left; -} - -#newtab-horizontal-margin { - display: -moz-box; - -moz-box-flex: 1; -} - -#newtab-margin-top, -#newtab-margin-bottom { - display: -moz-box; - position: relative; -} - -#newtab-margin-top { - -moz-box-flex: 1; -} - -#newtab-margin-bottom { - -moz-box-flex: 2; -} - -.newtab-side-margin { - min-width: 10px; - -moz-box-flex: 1; -} - -/* GRID */ -#newtab-grid { - -moz-box-flex: 5; - overflow: hidden; - text-align: center; - transition: 100ms ease-out; - transition-property: opacity; -} - -#newtab-grid[page-disabled] { - opacity: 0; -} - -#newtab-grid[locked], -#newtab-grid[page-disabled] { - pointer-events: none; -} - -body:not(.compact) #topsites-heading { - display: none; -} - -/* - * If you change the sizes here, make sure you - * change the preferences: - * toolkit.pageThumbs.minWidth - * toolkit.pageThumbs.minHeight - */ -/* CELLS */ -.newtab-cell { - display: -moz-box; - height: 210px; - margin: 20px 10px 35px; - width: 290px; -} - -body.compact .newtab-cell { - width: 110px; - height: 110px; - margin: 12px; -} - -/* SITES */ -.newtab-site { - position: relative; - -moz-box-flex: 1; - transition: 100ms ease-out; - transition-property: top, left, opacity; -} - -.newtab-site[frozen] { - position: absolute; - pointer-events: none; -} - -.newtab-site[dragged] { - transition-property: none; - z-index: 10; -} - -/* LINK + THUMBNAILS */ -.newtab-link, -.newtab-thumbnail { - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; -} - -/* TITLES */ -.newtab-title { - overflow: hidden; - position: absolute; - right: 0; - text-align: center; - bottom: 0; - white-space: nowrap; - text-overflow: ellipsis; - vertical-align: middle; -} - -.newtab-title { - left: 0; - padding: 0 4px; -} - -/* CONTROLS */ -.newtab-control { - position: absolute; - opacity: 0; - transition: opacity 100ms ease-out; -} - -.newtab-control:-moz-focusring, -.newtab-cell:not([ignorehover]) > .newtab-site:hover > .newtab-control { - opacity: 1; -} - -.newtab-control[dragged] { - opacity: 0 !important; -} - -@media (-moz-touch-enabled) { - .newtab-control { - opacity: 1; - } -} - -/* DRAG & DROP */ - -/* - * This is just a temporary drag element used for dataTransfer.setDragImage() - * so that we can use custom drag images and elements. It needs an opacity of - * 0.01 so that the core code detects that it's in fact a visible element. - */ -.newtab-drag { - width: 1px; - height: 1px; - background-color: #fff; - opacity: 0.01; -} - -/* SEARCH */ -#newtab-search-container { - display: -moz-box; - position: relative; - -moz-box-pack: center; - margin: 55px 0 15px; -} - -body.compact #newtab-search-container { - margin-top: 0; - margin-bottom: 80px; -} - -#newtab-search-container[page-disabled] { - opacity: 0; - pointer-events: none; -} - -#newtab-search-form { - display: -moz-box; - position: relative; - height: 36px; - -moz-box-flex: 1; - max-width: 600px; /* 2 * (290 cell width + 10 cell margin) */ -} - -#newtab-search-icon { - width: 35px; - height: 35px; - background: url("chrome://browser/skin/search-glass.svg") no-repeat 12px center/16px; - fill: rgba(12, 12, 13, 0.4); - -moz-context-properties: fill; - position: absolute; - offset-inline-start: 0; -} - -#newtab-search-text { - -moz-box-flex: 1; - border: 1px solid rgba(0, 0, 0, 0.15); - border-radius: 3px; - box-shadow: 0 1px 4px 0 rgba(12, 12, 13, 0.1); - color: inherit; - padding: 0; - padding-inline-end: 36px; - padding-inline-start: 35px; - width: 100%; - font-size: 15px; -} - -#newtab-search-text:active, -#newtab-search-text:focus { - border-color: #0A84FF; - box-shadow: 0 0 0 2px #0A84FF; -} - -#newtab-search-submit { - offset-inline-end: 0; - color: transparent; - background: url("chrome://browser/skin/forward.svg") no-repeat center center; - -moz-context-properties: fill; - fill: rgba(12, 12, 13, 0.4); - position: absolute; - border: 0; - border-radius: 0 3px 3px 0; - background-size: 16px 16px; - height: 100%; - width: 36px; -} - -#newtab-search-submit:dir(rtl) { - transform: scaleX(-1); -} - -#newtab-search-submit:focus, #newtab-search-submit:hover { - background-color: rgba(12, 12, 13, 0.1); - cursor: pointer; -} - -#newtab-search-submit:active { - background-color: rgba(12, 12, 13, 0.15); -} - -/* CUSTOMIZE */ -#newtab-customize-overlay { - opacity: 0; - display: none; - width: 100%; - height: 100%; - background: #F9F9F9; - z-index: 100; - position: fixed; - transition: opacity .07s linear; -} - -.newtab-customize-panel-container { - position: absolute; - margin-right: 40px; - right: 0; -} - -.newtab-customize-panel-container:dir(rtl) { - right: auto; - left: 0; -} - -#newtab-customize-panel { - z-index: 999; - margin-top: 55px; - min-width: 270px; - position: absolute; - top: 100%; - right: -25px; - filter: drop-shadow(0 0 1px rgba(0,0,0,0.4)) drop-shadow(0 3px 4px rgba(0,0,0,0.4)); - transition: all 200ms ease-in-out; - transform-origin: top right; - transform: translate(-30px, -20px) scale(0) translate(30px, 20px); -} - -#newtab-customize-panel:dir(rtl) { - transform-origin: 40px top 20px; -} - -#newtab-customize-panel:dir(rtl), -#newtab-customize-panel-anchor:dir(rtl) { - left: 15px; - right: auto; -} - -#newtab-customize-panel[open="true"] { - transform: translate(-30px, -20px) scale(1) translate(30px, 20px); -} - -#newtab-customize-panel-anchor { - width: 18px; - height: 18px; - background-color: white; - transform: rotate(45deg); - position: absolute; - top: -6px; - right: 15px; -} - -#newtab-customize-title { - color: #7A7A7A; - font-size: 14px; - background-color: #FFFFFF; - line-height: 25px; - padding: 15px; - font-weight: 600; - cursor: default; - border-radius: 5px 5px 0px 0px; - max-width: 300px; - overflow: hidden; - display: table-cell; - border-top: none; -} - -#newtab-customize-panel-inner-wrapper { - background-color: #FFFFFF; - border-radius: 6px; - overflow: hidden; -} - -#newtab-customize-title > label { - cursor: default; -} - -#newtab-customize-panel > .panel-arrowcontainer > .panel-arrowcontent { - padding: 0; -} - -.newtab-customize-panel-item { - line-height: 25px; - padding: 15px; - padding-inline-start: 40px; - font-size: 14px; - cursor: pointer; - max-width: 300px; -} - -.newtab-customize-panel-item:not(:first-child) { - border-top: 1px solid threedshadow; -} - -.newtab-customize-panel-subitem > label, -.newtab-customize-panel-item > label, -.newtab-customize-complex-option { - padding: 0; - margin: 0; - cursor: pointer; -} - -.newtab-customize-panel-item, -.newtab-customize-complex-option { - display: block; - text-align: start; - background-color: #F9F9F9; -} - -.newtab-customize-panel-item[selected]:dir(rtl){ - background-position: right 15px center; -} - -.newtab-customize-complex-option:hover > .selectable:not([selected]):dir(rtl), -.selectable:not([selected]):hover:dir(rtl) { - background-position: right 15px center; -} - -.newtab-customize-panel-item:not([selected]), -.newtab-customize-panel-subitem:not([selected]){ - color: #7A7A7A; -} - -.newtab-customize-panel-item:not([selected]):hover { - color: #FFFFFF; - background-color: #4A90E2 -} - -.newtab-customize-complex-option:hover > .selectable:not([selected]), -.selectable:not([selected]):hover { - background: url("chrome://global/skin/menu/shared-menu-check-hover.svg") no-repeat #FFFFFF; - background-size: 16px 16px; - background-position: 15px 15px; - color: #171F26; -} - -.newtab-customize-complex-option:hover > .selectable:not([selected]) + .newtab-customize-panel-subitem { - background-color: #FFFFFF; -} - -.newtab-customize-panel-item[selected] { - background: url("chrome://global/skin/menu/shared-menu-check-active.svg") no-repeat transparent; - background-size: 16px 16px; - background-position: 15px 15px; - color: black; - font-weight: 600; -} - -.newtab-customize-panel-subitem > .checkbox { - width: 18px; - height: 18px; - background-color: #FFFFFF; - border: solid 1px threedshadow; -} - -.newtab-customize-panel-subitem[selected] > .checkbox { - background: url("chrome://global/skin/menu/shared-menu-check-black.svg") no-repeat #FFFFFF; - background-size: 9px 9px; - background-position: center; - color: #333333; -} - -.newtab-customize-panel-subitem { - font-size: 12px; - padding: 0px 15px 15px 15px; - padding-inline-start: 40px; - display: block; - max-width: 300px; -} - -.newtab-customize-panel-subitem > label { - padding: 0px 10px; - line-height: 20px; - vertical-align: middle; - max-width: 225px; -} - -.newtab-customize-panel-superitem { - line-height: 20px; - border-bottom: medium none !important; - padding: 15px 15px 10px 15px; - padding-inline-start: 40px; - border-top: 1px solid threedshadow; -} - -.contentSearchSuggestionTable { - font: message-box; - font-size: 16px; - border: 0; - transform: translateY(2px); -} diff --git a/browser/base/content/newtab/newTab.js b/browser/base/content/newtab/newTab.js deleted file mode 100644 index 1f98b0773814..000000000000 --- a/browser/base/content/newtab/newTab.js +++ /dev/null @@ -1,67 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -"use strict"; - -ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); -ChromeUtils.import("resource://gre/modules/Services.jsm"); -ChromeUtils.import("resource://gre/modules/PageThumbs.jsm"); -ChromeUtils.import("resource://gre/modules/BackgroundPageThumbs.jsm"); -ChromeUtils.import("resource://gre/modules/NewTabUtils.jsm"); - -ChromeUtils.defineModuleGetter(this, "Rect", - "resource://gre/modules/Geometry.jsm"); -ChromeUtils.defineModuleGetter(this, "PrivateBrowsingUtils", - "resource://gre/modules/PrivateBrowsingUtils.jsm"); - -var { - links: gLinks, - allPages: gAllPages, - linkChecker: gLinkChecker, - pinnedLinks: gPinnedLinks, - blockedLinks: gBlockedLinks, - gridPrefs: gGridPrefs -} = NewTabUtils; - -XPCOMUtils.defineLazyGetter(this, "gStringBundle", function() { - return Services.strings. - createBundle("chrome://browser/locale/newTab.properties"); -}); - -function newTabString(name, args) { - let stringName = "newtab." + name; - if (!args) { - return gStringBundle.GetStringFromName(stringName); - } - return gStringBundle.formatStringFromName(stringName, args, args.length); -} - -function inPrivateBrowsingMode() { - return PrivateBrowsingUtils.isContentWindowPrivate(window); -} - -const HTML_NAMESPACE = "http://www.w3.org/1999/xhtml"; -const XUL_NAMESPACE = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; - -const TILES_EXPLAIN_LINK = "https://support.mozilla.org/kb/how-do-tiles-work-firefox"; -const TILES_INTRO_LINK = "https://www.mozilla.org/firefox/tiles/"; -const TILES_PRIVACY_LINK = "https://www.mozilla.org/privacy/"; - -#include transformations.js -#include page.js -#include grid.js -#include cells.js -#include sites.js -#include drag.js -#include dragDataHelper.js -#include drop.js -#include dropTargetShim.js -#include dropPreview.js -#include updater.js -#include undo.js -#include search.js -#include customize.js - -// Everything is loaded. Initialize the New Tab Page. -gPage.init(); diff --git a/browser/base/content/newtab/newTab.xhtml b/browser/base/content/newtab/newTab.xhtml deleted file mode 100644 index 98fb60eab2cf..000000000000 --- a/browser/base/content/newtab/newTab.xhtml +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - %newTabDTD; - - %browserDTD; - - %globalDTD; -]> - - - - &newtab.pageTitle; - - - - - - - - -
- -
-
-
-
-
- -
- -
-
- -
-
- - -
-
-
- -
-
- -
-
-
-
- -
-
- -
-
- - - -
-
- -
-
-
- - -
-
- -
-
-
-

-

-
-
- -
-
- - - \ No newline at end of file +React App
diff --git a/testing/talos/talos/tests/devtools/addon/content/pages/custom/debugger/static/js/main.447c224f.js b/testing/talos/talos/tests/devtools/addon/content/pages/custom/debugger/static/js/main.447c224f.js deleted file mode 100644 index fafea302dd24..000000000000 --- a/testing/talos/talos/tests/devtools/addon/content/pages/custom/debugger/static/js/main.447c224f.js +++ /dev/null @@ -1,3 +0,0 @@ -/* eslint-disable */ -!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="./",t(t.s=5)}([function(e,t,n){"use strict";function r(e){if(null===e||void 0===e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}var o=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,l,u=r(e),s=1;ss){for(var t=0,n=i.length-u;t-1?t:e}function d(e,t){t=t||{};var n=t.body;if(e instanceof d){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new o(e.headers)),this.method=e.method,this.mode=e.mode,n||null==e._bodyInit||(n=e._bodyInit,e.bodyUsed=!0)}else this.url=String(e);if(this.credentials=t.credentials||this.credentials||"omit",!t.headers&&this.headers||(this.headers=new o(t.headers)),this.method=p(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(n)}function h(e){var t=new FormData;return e.trim().split("&").forEach(function(e){if(e){var n=e.split("="),r=n.shift().replace(/\+/g," "),o=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(r),decodeURIComponent(o))}}),t}function m(e){var t=new o;return e.split(/\r?\n/).forEach(function(e){var n=e.split(":"),r=n.shift().trim();if(r){var o=n.join(":").trim();t.append(r,o)}}),t}function y(e,t){t||(t={}),this.type="default",this.status="status"in t?t.status:200,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new o(t.headers),this.url=t.url||"",this._initBody(e)}if(!e.fetch){var g={searchParams:"URLSearchParams"in e,iterable:"Symbol"in e&&"iterator"in Symbol,blob:"FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),formData:"FormData"in e,arrayBuffer:"ArrayBuffer"in e};if(g.arrayBuffer)var v=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],b=function(e){return e&&DataView.prototype.isPrototypeOf(e)},w=ArrayBuffer.isView||function(e){return e&&v.indexOf(Object.prototype.toString.call(e))>-1};o.prototype.append=function(e,r){e=t(e),r=n(r);var o=this.map[e];this.map[e]=o?o+","+r:r},o.prototype.delete=function(e){delete this.map[t(e)]},o.prototype.get=function(e){return e=t(e),this.has(e)?this.map[e]:null},o.prototype.has=function(e){return this.map.hasOwnProperty(t(e))},o.prototype.set=function(e,r){this.map[t(e)]=n(r)},o.prototype.forEach=function(e,t){for(var n in this.map)this.map.hasOwnProperty(n)&&e.call(t,this.map[n],n,this)},o.prototype.keys=function(){var e=[];return this.forEach(function(t,n){e.push(n)}),r(e)},o.prototype.values=function(){var e=[];return this.forEach(function(t){e.push(t)}),r(e)},o.prototype.entries=function(){var e=[];return this.forEach(function(t,n){e.push([n,t])}),r(e)},g.iterable&&(o.prototype[Symbol.iterator]=o.prototype.entries);var C=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];d.prototype.clone=function(){return new d(this,{body:this._bodyInit})},f.call(d.prototype),f.call(y.prototype),y.prototype.clone=function(){return new y(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new o(this.headers),url:this.url})},y.error=function(){var e=new y(null,{status:0,statusText:""});return e.type="error",e};var k=[301,302,303,307,308];y.redirect=function(e,t){if(-1===k.indexOf(t))throw new RangeError("Invalid status code");return new y(null,{status:t,headers:{location:e}})},e.Headers=o,e.Request=d,e.Response=y,e.fetch=function(e,t){return new Promise(function(n,r){var o=new d(e,t),a=new XMLHttpRequest;a.onload=function(){var e={status:a.status,statusText:a.statusText,headers:m(a.getAllResponseHeaders()||"")};e.url="responseURL"in a?a.responseURL:e.headers.get("X-Request-URL");var t="response"in a?a.response:a.responseText;n(new y(t,e))},a.onerror=function(){r(new TypeError("Network request failed"))},a.ontimeout=function(){r(new TypeError("Network request failed"))},a.open(o.method,o.url,!0),"include"===o.credentials&&(a.withCredentials=!0),"responseType"in a&&g.blob&&(a.responseType="blob"),o.headers.forEach(function(e,t){a.setRequestHeader(t,e)}),a.send("undefined"===typeof o._bodyInit?null:o._bodyInit)})},e.fetch.polyfill=!0}}("undefined"!==typeof self?self:this)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(1),o=n.n(r),a=n(14),i=n.n(a),l=n(24);i.a.render(o.a.createElement(l.a,null),document.getElementById("root"))},function(e,t,n){"use strict";function r(e){for(var t=arguments.length-1,n="Minified React error #"+e+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+e,r=0;rM.length&&M.push(e)}function d(e,t,n,o){var a=typeof e;"undefined"!==a&&"boolean"!==a||(e=null);var i=!1;if(null===e)i=!0;else switch(a){case"string":case"number":i=!0;break;case"object":switch(e.$$typeof){case k:case x:case E:case T:i=!0}}if(i)return n(o,e,""===t?"."+h(e,0):t),1;if(i=0,t=""===t?".":t+":",Array.isArray(e))for(var l=0;lthis.eventPool.length&&this.eventPool.push(e)}function z(e){e.eventPool=[],e.getPooled=H,e.release=B}function V(e,t,n,r){return j.call(this,e,t,n,r)}function K(e,t,n,r){return j.call(this,e,t,n,r)}function W(e,t){switch(e){case"topKeyUp":return-1!==dr.indexOf(t.keyCode);case"topKeyDown":return 229!==t.keyCode;case"topKeyPress":case"topMouseDown":case"topBlur":return!0;default:return!1}}function q(e){return e=e.detail,"object"===typeof e&&"data"in e?e.data:null}function $(e,t){switch(e){case"topCompositionEnd":return q(t);case"topKeyPress":return 32!==t.which?null:(xr=!0,Cr);case"topTextInput":return e=t.data,e===Cr&&xr?null:e;default:return null}}function Q(e,t){if(Er)return"topCompositionEnd"===e||!hr&&W(e,t)?(e=U(),cr._root=null,cr._startText=null,cr._fallbackText=null,Er=!1,e):null;switch(e){case"topPaste":return null;case"topKeyPress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1zr.length&&zr.push(e)}}}function Ae(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n["ms"+e]="MS"+t,n["O"+e]="o"+t.toLowerCase(),n}function De(e){if($r[e])return $r[e];if(!qr[e])return e;var t,n=qr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Qr)return $r[e]=n[t];return""}function Me(e){return Object.prototype.hasOwnProperty.call(e,Zr)||(e[Zr]=Xr++,Yr[e[Zr]]={}),Yr[e[Zr]]}function Fe(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function Ue(e,t){var n=Fe(e);e=0;for(var r;n;){if(3===n.nodeType){if(r=e+n.textContent.length,e<=t&&r>=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Fe(n)}}function Le(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&"text"===e.type||"textarea"===t||"true"===e.contentEditable)}function je(e,t){if(oo||null==to||to!==En())return null;var n=to;return"selectionStart"in n&&Le(n)?n={start:n.selectionStart,end:n.selectionEnd}:window.getSelection?(n=window.getSelection(),n={anchorNode:n.anchorNode,anchorOffset:n.anchorOffset,focusNode:n.focusNode,focusOffset:n.focusOffset}):n=void 0,ro&&Tn(ro,n)?null:(ro=n,e=j.getPooled(eo.select,no,e,t),e.type="select",e.target=to,D(e),e)}function He(e,t,n,r){return j.call(this,e,t,n,r)}function Be(e,t,n,r){return j.call(this,e,t,n,r)}function ze(e,t,n,r){return j.call(this,e,t,n,r)}function Ve(e){var t=e.keyCode;return"charCode"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,32<=e||13===e?e:0}function Ke(e,t,n,r){return j.call(this,e,t,n,r)}function We(e,t,n,r){return j.call(this,e,t,n,r)}function qe(e,t,n,r){return j.call(this,e,t,n,r)}function $e(e,t,n,r){return j.call(this,e,t,n,r)}function Qe(e,t,n,r){return j.call(this,e,t,n,r)}function Ge(e){0>po||(e.current=fo[po],fo[po]=null,po--)}function Ye(e,t){po++,fo[po]=e.current,e.current=t}function Xe(e){return Je(e)?yo:ho.current}function Ze(e,t){var n=e.type.contextTypes;if(!n)return Pn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,a={};for(o in n)a[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function Je(e){return 2===e.tag&&null!=e.type.childContextTypes}function et(e){Je(e)&&(Ge(mo,e),Ge(ho,e))}function tt(e,t,n){null!=ho.cursor&&r("168"),Ye(ho,t,e),Ye(mo,n,e)}function nt(e,t){var n=e.stateNode,o=e.type.childContextTypes;if("function"!==typeof n.getChildContext)return t;n=n.getChildContext();for(var a in n)a in o||r("108",Ce(e)||"Unknown",a);return Cn({},t,n)}function rt(e){if(!Je(e))return!1;var t=e.stateNode;return t=t&&t.__reactInternalMemoizedMergedChildContext||Pn,yo=ho.current,Ye(ho,t,e),Ye(mo,mo.current,e),!0}function ot(e,t){var n=e.stateNode;if(n||r("169"),t){var o=nt(e,yo);n.__reactInternalMemoizedMergedChildContext=o,Ge(mo,e),Ge(ho,e),Ye(ho,o,e)}else Ge(mo,e);Ye(mo,t,e)}function at(e,t,n){this.tag=e,this.key=t,this.stateNode=this.type=null,this.sibling=this.child=this.return=null,this.index=0,this.memoizedState=this.updateQueue=this.memoizedProps=this.pendingProps=this.ref=null,this.internalContextTag=n,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.expirationTime=0,this.alternate=null}function it(e,t,n){var r=e.alternate;return null===r?(r=new at(e.tag,e.key,e.internalContextTag),r.type=e.type,r.stateNode=e.stateNode,r.alternate=e,e.alternate=r):(r.effectTag=0,r.nextEffect=null,r.firstEffect=null,r.lastEffect=null),r.expirationTime=n,r.pendingProps=t,r.child=e.child,r.memoizedProps=e.memoizedProps,r.memoizedState=e.memoizedState,r.updateQueue=e.updateQueue,r.sibling=e.sibling,r.index=e.index,r.ref=e.ref,r}function lt(e,t,n){var o=void 0,a=e.type,i=e.key;return"function"===typeof a?(o=a.prototype&&a.prototype.isReactComponent?new at(2,i,t):new at(0,i,t),o.type=a,o.pendingProps=e.props):"string"===typeof a?(o=new at(5,i,t),o.type=a,o.pendingProps=e.props):"object"===typeof a&&null!==a&&"number"===typeof a.tag?(o=a,o.pendingProps=e.props):r("130",null==a?a:typeof a,""),o.expirationTime=n,o}function ut(e,t,n,r){return t=new at(10,r,t),t.pendingProps=e,t.expirationTime=n,t}function st(e,t,n){return t=new at(6,null,t),t.pendingProps=e,t.expirationTime=n,t}function ct(e,t,n){return t=new at(7,e.key,t),t.type=e.handler,t.pendingProps=e,t.expirationTime=n,t}function ft(e,t,n){return e=new at(9,null,t),e.expirationTime=n,e}function pt(e,t,n){return t=new at(4,e.key,t),t.pendingProps=e.children||[],t.expirationTime=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function dt(e){return function(t){try{return e(t)}catch(e){}}}function ht(e){if("undefined"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var n=t.inject(e);go=dt(function(e){return t.onCommitFiberRoot(n,e)}),vo=dt(function(e){return t.onCommitFiberUnmount(n,e)})}catch(e){}return!0}function mt(e){"function"===typeof go&&go(e)}function yt(e){"function"===typeof vo&&vo(e)}function gt(e){return{baseState:e,expirationTime:0,first:null,last:null,callbackList:null,hasForceUpdate:!1,isInitialized:!1}}function vt(e,t){null===e.last?e.first=e.last=t:(e.last.next=t,e.last=t),(0===e.expirationTime||e.expirationTime>t.expirationTime)&&(e.expirationTime=t.expirationTime)}function bt(e,t){var n=e.alternate,r=e.updateQueue;null===r&&(r=e.updateQueue=gt(null)),null!==n?null===(e=n.updateQueue)&&(e=n.updateQueue=gt(null)):e=null,e=e!==r?e:null,null===e?vt(r,t):null===r.last||null===e.last?(vt(r,t),vt(e,t)):(vt(r,t),e.last=t)}function wt(e,t,n,r){return e=e.partialState,"function"===typeof e?e.call(t,n,r):e}function Ct(e,t,n,r,o,a){null!==e&&e.updateQueue===n&&(n=t.updateQueue={baseState:n.baseState,expirationTime:n.expirationTime,first:n.first,last:n.last,isInitialized:n.isInitialized,callbackList:null,hasForceUpdate:!1}),n.expirationTime=0,n.isInitialized?e=n.baseState:(e=n.baseState=t.memoizedState,n.isInitialized=!0);for(var i=!0,l=n.first,u=!1;null!==l;){var s=l.expirationTime;if(s>a){var c=n.expirationTime;(0===c||c>s)&&(n.expirationTime=s),u||(u=!0,n.baseState=e)}else u||(n.first=l.next,null===n.first&&(n.last=null)),l.isReplace?(e=wt(l,r,e,o),i=!0):(s=wt(l,r,e,o))&&(e=i?Cn({},e,s):Cn(e,s),i=!1),l.isForced&&(n.hasForceUpdate=!0),null!==l.callback&&(s=n.callbackList,null===s&&(s=n.callbackList=[]),s.push(l));l=l.next}return null!==n.callbackList?t.effectTag|=32:null!==n.first||n.hasForceUpdate||(t.updateQueue=null),u||(n.baseState=e),e}function kt(e,t){var n=e.callbackList;if(null!==n)for(e.callbackList=null,e=0;ep?(d=f,f=null):d=f.sibling;var g=m(r,f,l[p],u);if(null===g){null===f&&(f=d);break}e&&f&&null===g.alternate&&t(r,f),a=i(g,a,p),null===c?s=g:c.sibling=g,c=g,f=d}if(p===l.length)return n(r,f),s;if(null===f){for(;pd?(g=p,p=null):g=p.sibling;var b=m(a,p,v.value,s);if(null===b){p||(p=g);break}e&&p&&null===b.alternate&&t(a,p),l=i(b,l,d),null===f?c=b:f.sibling=b,f=b,p=g}if(v.done)return n(a,p),c;if(null===p){for(;!v.done;d++,v=u.next())null!==(v=h(a,v.value,s))&&(l=i(v,l,d),null===f?c=v:f.sibling=v,f=v);return c}for(p=o(a,p);!v.done;d++,v=u.next())null!==(v=y(p,a,d,v.value,s))&&(e&&null!==v.alternate&&p.delete(null===v.key?d:v.key),l=i(v,l,d),null===f?c=v:f.sibling=v,f=v);return e&&p.forEach(function(e){return t(a,e)}),c}return function(e,o,i,u){"object"===typeof i&&null!==i&&i.type===Eo&&null===i.key&&(i=i.props.children);var s="object"===typeof i&&null!==i;if(s)switch(i.$$typeof){case wo:e:{var c=i.key;for(s=o;null!==s;){if(s.key===c){if(10===s.tag?i.type===Eo:s.type===i.type){n(e,s.sibling),o=a(s,i.type===Eo?i.props.children:i.props,u),o.ref=Tt(s,i),o.return=e,e=o;break e}n(e,s);break}t(e,s),s=s.sibling}i.type===Eo?(o=ut(i.props.children,e.internalContextTag,u,i.key),o.return=e,e=o):(u=lt(i,e.internalContextTag,u),u.ref=Tt(o,i),u.return=e,e=u)}return l(e);case Co:e:{for(s=i.key;null!==o;){if(o.key===s){if(7===o.tag){n(e,o.sibling),o=a(o,i,u),o.return=e,e=o;break e}n(e,o);break}t(e,o),o=o.sibling}o=ct(i,e.internalContextTag,u),o.return=e,e=o}return l(e);case ko:e:{if(null!==o){if(9===o.tag){n(e,o.sibling),o=a(o,null,u),o.type=i.value,o.return=e,e=o;break e}n(e,o)}o=ft(i,e.internalContextTag,u),o.type=i.value,o.return=e,e=o}return l(e);case xo:e:{for(s=i.key;null!==o;){if(o.key===s){if(4===o.tag&&o.stateNode.containerInfo===i.containerInfo&&o.stateNode.implementation===i.implementation){n(e,o.sibling),o=a(o,i.children||[],u),o.return=e,e=o;break e}n(e,o);break}t(e,o),o=o.sibling}o=pt(i,e.internalContextTag,u),o.return=e,e=o}return l(e)}if("string"===typeof i||"number"===typeof i)return i=""+i,null!==o&&6===o.tag?(n(e,o.sibling),o=a(o,i,u)):(n(e,o),o=st(i,e.internalContextTag,u)),o.return=e,e=o,l(e);if(_o(i))return g(e,o,i,u);if(Et(i))return v(e,o,i,u);if(s&&_t(e,i),"undefined"===typeof i)switch(e.tag){case 2:case 1:u=e.type,r("152",u.displayName||u.name||"Component")}return n(e,o)}}function Pt(e,t,n,o,a){function i(e,t,n){var r=t.expirationTime;t.child=null===e?Po(t,null,n,r):So(t,e.child,n,r)}function l(e,t){var n=t.ref;null===n||e&&e.ref===n||(t.effectTag|=128)}function u(e,t,n,r){if(l(e,t),!n)return r&&ot(t,!1),c(e,t);n=t.stateNode,Br.current=t;var o=n.render();return t.effectTag|=1,i(e,t,o),t.memoizedState=n.state,t.memoizedProps=n.props,r&&ot(t,!0),t.child}function s(e){var t=e.stateNode;t.pendingContext?tt(e,t.pendingContext,t.pendingContext!==t.context):t.context&&tt(e,t.context,!1),y(e,t.containerInfo)}function c(e,t){if(null!==e&&t.child!==e.child&&r("153"),null!==t.child){e=t.child;var n=it(e,e.pendingProps,e.expirationTime);for(t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,n=n.sibling=it(e,e.pendingProps,e.expirationTime),n.return=t;n.sibling=null}return t.child}function f(e,t){switch(t.tag){case 3:s(t);break;case 2:rt(t);break;case 4:y(t,t.stateNode.containerInfo)}return null}var p=e.shouldSetTextContent,d=e.useSyncScheduling,h=e.shouldDeprioritizeSubtree,m=t.pushHostContext,y=t.pushHostContainer,g=n.enterHydrationState,v=n.resetHydrationState,b=n.tryToClaimNextHydratableInstance;e=xt(o,a,function(e,t){e.memoizedProps=t},function(e,t){e.memoizedState=t});var w=e.adoptClassInstance,C=e.constructClassInstance,k=e.mountClassInstance,x=e.updateClassInstance;return{beginWork:function(e,t,n){if(0===t.expirationTime||t.expirationTime>n)return f(e,t);switch(t.tag){case 0:null!==e&&r("155");var o=t.type,a=t.pendingProps,E=Xe(t);return E=Ze(t,E),o=o(a,E),t.effectTag|=1,"object"===typeof o&&null!==o&&"function"===typeof o.render?(t.tag=2,a=rt(t),w(t,o),k(t,n),t=u(e,t,!0,a)):(t.tag=1,i(e,t,o),t.memoizedProps=a,t=t.child),t;case 1:e:{if(a=t.type,n=t.pendingProps,o=t.memoizedProps,mo.current)null===n&&(n=o);else if(null===n||o===n){t=c(e,t);break e}o=Xe(t),o=Ze(t,o),a=a(n,o),t.effectTag|=1,i(e,t,a),t.memoizedProps=n,t=t.child}return t;case 2:return a=rt(t),o=void 0,null===e?t.stateNode?r("153"):(C(t,t.pendingProps),k(t,n),o=!0):o=x(e,t,n),u(e,t,o,a);case 3:return s(t),a=t.updateQueue,null!==a?(o=t.memoizedState,a=Ct(e,t,a,null,null,n),o===a?(v(),t=c(e,t)):(o=a.element,E=t.stateNode,(null===e||null===e.child)&&E.hydrate&&g(t)?(t.effectTag|=2,t.child=Po(t,null,o,n)):(v(),i(e,t,o)),t.memoizedState=a,t=t.child)):(v(),t=c(e,t)),t;case 5:m(t),null===e&&b(t),a=t.type;var T=t.memoizedProps;return o=t.pendingProps,null===o&&null===(o=T)&&r("154"),E=null!==e?e.memoizedProps:null,mo.current||null!==o&&T!==o?(T=o.children,p(a,o)?T=null:E&&p(a,E)&&(t.effectTag|=16),l(e,t),2147483647!==n&&!d&&h(a,o)?(t.expirationTime=2147483647,t=null):(i(e,t,T),t.memoizedProps=o,t=t.child)):t=c(e,t),t;case 6:return null===e&&b(t),e=t.pendingProps,null===e&&(e=t.memoizedProps),t.memoizedProps=e,null;case 8:t.tag=7;case 7:return a=t.pendingProps,mo.current?null===a&&null===(a=e&&e.memoizedProps)&&r("154"):null!==a&&t.memoizedProps!==a||(a=t.memoizedProps),o=a.children,t.stateNode=null===e?Po(t,t.stateNode,o,n):So(t,t.stateNode,o,n),t.memoizedProps=a,t.stateNode;case 9:return null;case 4:e:{if(y(t,t.stateNode.containerInfo),a=t.pendingProps,mo.current)null===a&&null==(a=e&&e.memoizedProps)&&r("154");else if(null===a||t.memoizedProps===a){t=c(e,t);break e}null===e?t.child=So(t,null,a,n):i(e,t,a),t.memoizedProps=a,t=t.child}return t;case 10:e:{if(n=t.pendingProps,mo.current)null===n&&(n=t.memoizedProps);else if(null===n||t.memoizedProps===n){t=c(e,t);break e}i(e,t,n),t.memoizedProps=n,t=t.child}return t;default:r("156")}},beginFailedWork:function(e,t,n){switch(t.tag){case 2:rt(t);break;case 3:s(t);break;default:r("157")}return t.effectTag|=64,null===e?t.child=null:t.child!==e.child&&(t.child=e.child),0===t.expirationTime||t.expirationTime>n?f(e,t):(t.firstEffect=null,t.lastEffect=null,t.child=null===e?Po(t,null,null,n):So(t,e.child,null,n),2===t.tag&&(e=t.stateNode,t.memoizedProps=e.props,t.memoizedState=e.state),t.child)}}}function Ot(e,t,n){function o(e){e.effectTag|=4}var a=e.createInstance,i=e.createTextInstance,l=e.appendInitialChild,u=e.finalizeInitialChildren,s=e.prepareUpdate,c=e.persistence,f=t.getRootHostContainer,p=t.popHostContext,d=t.getHostContext,h=t.popHostContainer,m=n.prepareToHydrateHostInstance,y=n.prepareToHydrateHostTextInstance,g=n.popHydrationState,v=void 0,b=void 0,w=void 0;return e.mutation?(v=function(){},b=function(e,t,n){(t.updateQueue=n)&&o(t)},w=function(e,t,n,r){n!==r&&o(t)}):r(c?"235":"236"),{completeWork:function(e,t,n){var c=t.pendingProps;switch(null===c?c=t.memoizedProps:2147483647===t.expirationTime&&2147483647!==n||(t.pendingProps=null),t.tag){case 1:return null;case 2:return et(t),null;case 3:return h(t),Ge(mo,t),Ge(ho,t),c=t.stateNode,c.pendingContext&&(c.context=c.pendingContext,c.pendingContext=null),null!==e&&null!==e.child||(g(t),t.effectTag&=-3),v(t),null;case 5:p(t),n=f();var C=t.type;if(null!==e&&null!=t.stateNode){var k=e.memoizedProps,x=t.stateNode,E=d();x=s(x,C,k,c,n,E),b(e,t,x,C,k,c,n),e.ref!==t.ref&&(t.effectTag|=128)}else{if(!c)return null===t.stateNode&&r("166"),null;if(e=d(),g(t))m(t,n,e)&&o(t);else{e=a(C,c,n,e,t);e:for(k=t.child;null!==k;){if(5===k.tag||6===k.tag)l(e,k.stateNode);else if(4!==k.tag&&null!==k.child){k.child.return=k,k=k.child;continue}if(k===t)break;for(;null===k.sibling;){if(null===k.return||k.return===t)break e;k=k.return}k.sibling.return=k.return,k=k.sibling}u(e,C,c,n)&&o(t),t.stateNode=e}null!==t.ref&&(t.effectTag|=128)}return null;case 6:if(e&&null!=t.stateNode)w(e,t,e.memoizedProps,c);else{if("string"!==typeof c)return null===t.stateNode&&r("166"),null;e=f(),n=d(),g(t)?y(t)&&o(t):t.stateNode=i(c,e,n,t)}return null;case 7:(c=t.memoizedProps)||r("165"),t.tag=8,C=[];e:for((k=t.stateNode)&&(k.return=t);null!==k;){if(5===k.tag||6===k.tag||4===k.tag)r("247");else if(9===k.tag)C.push(k.type);else if(null!==k.child){k.child.return=k,k=k.child;continue}for(;null===k.sibling;){if(null===k.return||k.return===t)break e;k=k.return}k.sibling.return=k.return,k=k.sibling}return k=c.handler,c=k(c.props,C),t.child=So(t,null!==e?e.child:null,c,n),t.child;case 8:return t.tag=7,null;case 9:case 10:return null;case 4:return h(t),v(t),null;case 0:r("167");default:r("156")}}}}function Nt(e,t){function n(e){var n=e.ref;if(null!==n)try{n(null)}catch(n){t(e,n)}}function o(e){switch("function"===typeof yt&&yt(e),e.tag){case 2:n(e);var r=e.stateNode;if("function"===typeof r.componentWillUnmount)try{r.props=e.memoizedProps,r.state=e.memoizedState,r.componentWillUnmount()}catch(n){t(e,n)}break;case 5:n(e);break;case 7:a(e.stateNode);break;case 4:s&&l(e)}}function a(e){for(var t=e;;)if(o(t),null===t.child||s&&4===t.tag){if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return;t=t.return}t.sibling.return=t.return,t=t.sibling}else t.child.return=t,t=t.child}function i(e){return 5===e.tag||3===e.tag||4===e.tag}function l(e){for(var t=e,n=!1,i=void 0,l=void 0;;){if(!n){n=t.return;e:for(;;){switch(null===n&&r("160"),n.tag){case 5:i=n.stateNode,l=!1;break e;case 3:case 4:i=n.stateNode.containerInfo,l=!0;break e}n=n.return}n=!0}if(5===t.tag||6===t.tag)a(t),l?b(i,t.stateNode):v(i,t.stateNode);else if(4===t.tag?i=t.stateNode.containerInfo:o(t),null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return;t=t.return,4===t.tag&&(n=!1)}t.sibling.return=t.return,t=t.sibling}}var u=e.getPublicInstance,s=e.mutation;e=e.persistence,s||r(e?"235":"236");var c=s.commitMount,f=s.commitUpdate,p=s.resetTextContent,d=s.commitTextUpdate,h=s.appendChild,m=s.appendChildToContainer,y=s.insertBefore,g=s.insertInContainerBefore,v=s.removeChild,b=s.removeChildFromContainer;return{commitResetTextContent:function(e){p(e.stateNode)},commitPlacement:function(e){e:{for(var t=e.return;null!==t;){if(i(t)){var n=t;break e}t=t.return}r("160"),n=void 0}var o=t=void 0;switch(n.tag){case 5:t=n.stateNode,o=!1;break;case 3:case 4:t=n.stateNode.containerInfo,o=!0;break;default:r("161")}16&n.effectTag&&(p(t),n.effectTag&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||i(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag;){if(2&n.effectTag)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.effectTag)){n=n.stateNode;break e}}for(var a=e;;){if(5===a.tag||6===a.tag)n?o?g(t,a.stateNode,n):y(t,a.stateNode,n):o?m(t,a.stateNode):h(t,a.stateNode);else if(4!==a.tag&&null!==a.child){a.child.return=a,a=a.child;continue}if(a===e)break;for(;null===a.sibling;){if(null===a.return||a.return===e)return;a=a.return}a.sibling.return=a.return,a=a.sibling}},commitDeletion:function(e){l(e),e.return=null,e.child=null,e.alternate&&(e.alternate.child=null,e.alternate.return=null)},commitWork:function(e,t){switch(t.tag){case 2:break;case 5:var n=t.stateNode;if(null!=n){var o=t.memoizedProps;e=null!==e?e.memoizedProps:o;var a=t.type,i=t.updateQueue;t.updateQueue=null,null!==i&&f(n,i,a,e,o,t)}break;case 6:null===t.stateNode&&r("162"),n=t.memoizedProps,d(t.stateNode,null!==e?e.memoizedProps:n,n);break;case 3:break;default:r("163")}},commitLifeCycles:function(e,t){switch(t.tag){case 2:var n=t.stateNode;if(4&t.effectTag)if(null===e)n.props=t.memoizedProps,n.state=t.memoizedState,n.componentDidMount();else{var o=e.memoizedProps;e=e.memoizedState,n.props=t.memoizedProps,n.state=t.memoizedState,n.componentDidUpdate(o,e)}t=t.updateQueue,null!==t&&kt(t,n);break;case 3:n=t.updateQueue,null!==n&&kt(n,null!==t.child?t.child.stateNode:null);break;case 5:n=t.stateNode,null===e&&4&t.effectTag&&c(n,t.type,t.memoizedProps,t);break;case 6:case 4:break;default:r("163")}},commitAttachRef:function(e){var t=e.ref;if(null!==t){var n=e.stateNode;switch(e.tag){case 5:t(u(n));break;default:t(n)}}},commitDetachRef:function(e){null!==(e=e.ref)&&e(null)}}}function It(e){function t(e){return e===Oo&&r("174"),e}var n=e.getChildHostContext,o=e.getRootHostContext,a={current:Oo},i={current:Oo},l={current:Oo};return{getHostContext:function(){return t(a.current)},getRootHostContainer:function(){return t(l.current)},popHostContainer:function(e){Ge(a,e),Ge(i,e),Ge(l,e)},popHostContext:function(e){i.current===e&&(Ge(a,e),Ge(i,e))},pushHostContainer:function(e,t){Ye(l,t,e),t=o(t),Ye(i,e,e),Ye(a,t,e)},pushHostContext:function(e){var r=t(l.current),o=t(a.current);r=n(o,e.type,r),o!==r&&(Ye(i,e,e),Ye(a,r,e))},resetHostContainer:function(){a.current=Oo,l.current=Oo}}}function Rt(e){function t(e,t){var n=new at(5,null,0);n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function n(e,t){switch(e.tag){case 5:return null!==(t=i(t,e.type,e.pendingProps))&&(e.stateNode=t,!0);case 6:return null!==(t=l(t,e.pendingProps))&&(e.stateNode=t,!0);default:return!1}}function o(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag;)e=e.return;p=e}var a=e.shouldSetTextContent;if(!(e=e.hydration))return{enterHydrationState:function(){return!1},resetHydrationState:function(){},tryToClaimNextHydratableInstance:function(){},prepareToHydrateHostInstance:function(){r("175")},prepareToHydrateHostTextInstance:function(){r("176")},popHydrationState:function(){return!1}};var i=e.canHydrateInstance,l=e.canHydrateTextInstance,u=e.getNextHydratableSibling,s=e.getFirstHydratableChild,c=e.hydrateInstance,f=e.hydrateTextInstance,p=null,d=null,h=!1;return{enterHydrationState:function(e){return d=s(e.stateNode.containerInfo),p=e,h=!0},resetHydrationState:function(){d=p=null,h=!1},tryToClaimNextHydratableInstance:function(e){if(h){var r=d;if(r){if(!n(e,r)){if(!(r=u(r))||!n(e,r))return e.effectTag|=2,h=!1,void(p=e);t(p,d)}p=e,d=s(r)}else e.effectTag|=2,h=!1,p=e}},prepareToHydrateHostInstance:function(e,t,n){return t=c(e.stateNode,e.type,e.memoizedProps,t,n,e),e.updateQueue=t,null!==t},prepareToHydrateHostTextInstance:function(e){return f(e.stateNode,e.memoizedProps,e)},popHydrationState:function(e){if(e!==p)return!1;if(!h)return o(e),h=!0,!1;var n=e.type;if(5!==e.tag||"head"!==n&&"body"!==n&&!a(n,e.memoizedProps))for(n=d;n;)t(e,n),n=u(n);return o(e),d=p?u(e.stateNode):null,!0}}}function At(e){function t(e){ae=G=!0;var t=e.stateNode;if(t.current===e&&r("177"),t.isReadyForCommit=!1,Br.current=null,1i.expirationTime)&&(a=i.expirationTime),i=i.sibling;o.expirationTime=a}if(null!==t)return t;if(null!==n&&(null===n.firstEffect&&(n.firstEffect=e.firstEffect),null!==e.lastEffect&&(null!==n.lastEffect&&(n.lastEffect.nextEffect=e.firstEffect),n.lastEffect=e.lastEffect),1e))if(Z<=$)for(;null!==Y;)Y=s(Y)?a(Y):o(Y);else for(;null!==Y&&!k();)Y=s(Y)?a(Y):o(Y)}else if(!(0===Z||Z>e))if(Z<=$)for(;null!==Y;)Y=o(Y);else for(;null!==Y&&!k();)Y=o(Y)}function l(e,t){if(G&&r("243"),G=!0,e.isReadyForCommit=!1,e!==X||t!==Z||null===Y){for(;-1t)&&(e.expirationTime=t),null!==e.alternate&&(0===e.alternate.expirationTime||e.alternate.expirationTime>t)&&(e.alternate.expirationTime=t),null===e.return){if(3!==e.tag)break;var n=e.stateNode;!G&&n===X&&twe&&r("185"),null===o.nextScheduledRoot)o.remainingExpirationTime=a,null===ue?(le=ue=o,o.nextScheduledRoot=o):(ue=ue.nextScheduledRoot=o,ue.nextScheduledRoot=le);else{var i=o.remainingExpirationTime;(0===i||ase)return;z(ce)}var t=H()-q;se=e,ce=B(b,{timeout:10*(e-2)-t})}function v(){var e=0,t=null;if(null!==ue)for(var n=ue,o=le;null!==o;){var a=o.remainingExpirationTime;if(0===a){if((null===n||null===ue)&&r("244"),o===o.nextScheduledRoot){le=ue=o.nextScheduledRoot=null;break}if(o===le)le=a=o.nextScheduledRoot,ue.nextScheduledRoot=a,o.nextScheduledRoot=null;else{if(o===ue){ue=n,ue.nextScheduledRoot=le,o.nextScheduledRoot=null;break}n.nextScheduledRoot=o.nextScheduledRoot,o.nextScheduledRoot=null}o=n.nextScheduledRoot}else{if((0===e||axe)&&(he=!0)}function x(e){null===pe&&r("246"),pe.remainingExpirationTime=0,me||(me=!0,ye=e)}var E=It(e),T=Rt(e),_=E.popHostContainer,S=E.popHostContext,P=E.resetHostContainer,O=Pt(e,E,T,d,p),N=O.beginWork,I=O.beginFailedWork,R=Ot(e,E,T).completeWork;E=Nt(e,u);var A=E.commitResetTextContent,D=E.commitPlacement,M=E.commitDeletion,F=E.commitWork,U=E.commitLifeCycles,L=E.commitAttachRef,j=E.commitDetachRef,H=e.now,B=e.scheduleDeferredCallback,z=e.cancelDeferredCallback,V=e.useSyncScheduling,K=e.prepareForCommit,W=e.resetAfterCommit,q=H(),$=2,Q=0,G=!1,Y=null,X=null,Z=0,J=null,ee=null,te=null,ne=null,re=null,oe=!1,ae=!1,ie=!1,le=null,ue=null,se=0,ce=-1,fe=!1,pe=null,de=0,he=!1,me=!1,ye=null,ge=null,ve=!1,be=!1,we=1e3,ke=0,xe=1;return{computeAsyncExpiration:f,computeExpirationForFiber:p,scheduleWork:d,batchedUpdates:function(e,t){var n=ve;ve=!0;try{return e(t)}finally{(ve=n)||fe||w(1,null)}},unbatchedUpdates:function(e){if(ve&&!be){be=!0;try{return e()}finally{be=!1}}return e()},flushSync:function(e){var t=ve;ve=!0;try{e:{var n=Q;Q=1;try{var o=e();break e}finally{Q=n}o=void 0}return o}finally{ve=t,fe&&r("187"),w(1,null)}},deferredUpdates:function(e){var t=Q;Q=f();try{return e()}finally{Q=t}}}}function Dt(e){function t(e){return e=_e(e),null===e?null:e.stateNode}var n=e.getPublicInstance;e=At(e);var o=e.computeAsyncExpiration,a=e.computeExpirationForFiber,i=e.scheduleWork;return{createContainer:function(e,t){var n=new at(3,null,0);return e={current:n,containerInfo:e,pendingChildren:null,remainingExpirationTime:0,isReadyForCommit:!1,finishedWork:null,context:null,pendingContext:null,hydrate:t,nextScheduledRoot:null},n.stateNode=e},updateContainer:function(e,t,n,l){var u=t.current;if(n){n=n._reactInternalFiber;var s;e:{for(2===ke(n)&&2===n.tag||r("170"),s=n;3!==s.tag;){if(Je(s)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break e}(s=s.return)||r("171")}s=s.stateNode.context}n=Je(n)?nt(n,s):s}else n=Pn;null===t.context?t.context=n:t.pendingContext=n,t=l,t=void 0===t?null:t,l=null!=e&&null!=e.type&&null!=e.type.prototype&&!0===e.type.prototype.unstable_isAsyncReactComponent?o():a(u),bt(u,{expirationTime:l,partialState:{element:e},callback:t,isReplace:!1,isForced:!1,nextCallback:null,next:null}),i(u,l)},batchedUpdates:e.batchedUpdates,unbatchedUpdates:e.unbatchedUpdates,deferredUpdates:e.deferredUpdates,flushSync:e.flushSync,getPublicRootInstance:function(e){if(e=e.current,!e.child)return null;switch(e.child.tag){case 5:return n(e.child.stateNode);default:return e.child.stateNode}},findHostInstance:t,findHostInstanceWithNoPortals:function(e){return e=Se(e),null===e?null:e.stateNode},injectIntoDevTools:function(e){var n=e.findFiberByHostInstance;return ht(Cn({},e,{findHostInstanceByFiber:function(e){return t(e)},findFiberByHostInstance:function(e){return n?n(e):null}}))}}}function Mt(e,t,n){var r=3n||r.hasOverloadedBooleanValue&&!1===n?jt(e,t):r.mustUseProperty?e[r.propertyName]=n:(t=r.attributeName,(o=r.attributeNamespace)?e.setAttributeNS(o,t,""+n):r.hasBooleanValue||r.hasOverloadedBooleanValue&&!0===n?e.setAttribute(t,""):e.setAttribute(t,""+n))}else Lt(e,t,a(t,n)?n:null)}function Lt(e,t,n){Ft(t)&&(null==n?e.removeAttribute(t):e.setAttribute(t,""+n))}function jt(e,t){var n=i(t);n?(t=n.mutationMethod)?t(e,void 0):n.mustUseProperty?e[n.propertyName]=!n.hasBooleanValue&&"":e.removeAttribute(n.attributeName):e.removeAttribute(t)}function Ht(e,t){var n=t.value,r=t.checked;return Cn({type:void 0,step:void 0,min:void 0,max:void 0},t,{defaultChecked:void 0,defaultValue:void 0,value:null!=n?n:e._wrapperState.initialValue,checked:null!=r?r:e._wrapperState.initialChecked})}function Bt(e,t){var n=t.defaultValue;e._wrapperState={initialChecked:null!=t.checked?t.checked:t.defaultChecked,initialValue:null!=t.value?t.value:n,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function zt(e,t){null!=(t=t.checked)&&Ut(e,"checked",t)}function Vt(e,t){zt(e,t);var n=t.value;null!=n?0===n&&""===e.value?e.value="0":"number"===t.type?(t=parseFloat(e.value)||0,(n!=t||n==t&&e.value!=n)&&(e.value=""+n)):e.value!==""+n&&(e.value=""+n):(null==t.value&&null!=t.defaultValue&&e.defaultValue!==""+t.defaultValue&&(e.defaultValue=""+t.defaultValue),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked))}function Kt(e,t){switch(t.type){case"submit":case"reset":break;case"color":case"date":case"datetime":case"datetime-local":case"month":case"time":case"week":e.value="",e.value=e.defaultValue;break;default:e.value=e.value}t=e.name,""!==t&&(e.name=""),e.defaultChecked=!e.defaultChecked,e.defaultChecked=!e.defaultChecked,""!==t&&(e.name=t)}function Wt(e){var t="";return bn.Children.forEach(e,function(e){null==e||"string"!==typeof e&&"number"!==typeof e||(t+=e)}),t}function qt(e,t){return e=Cn({children:void 0},t),(t=Wt(t.children))&&(e.children=t),e}function $t(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o=t.length||r("93"),t=t[0]),n=""+t),null==n&&(n="")),e._wrapperState={initialValue:""+n}}function Xt(e,t){var n=t.value;null!=n&&(n=""+n,n!==e.value&&(e.value=n),null==t.defaultValue&&(e.defaultValue=n)),null!=t.defaultValue&&(e.defaultValue=t.defaultValue)}function Zt(e){var t=e.textContent;t===e._wrapperState.initialValue&&(e.value=t)}function Jt(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function en(e,t){return null==e||"http://www.w3.org/1999/xhtml"===e?Jt(t):"http://www.w3.org/2000/svg"===e&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":e}function tn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}function nn(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=0===n.indexOf("--"),o=n,a=t[n];o=null==a||"boolean"===typeof a||""===a?"":r||"number"!==typeof a||0===a||Jo.hasOwnProperty(o)&&Jo[o]?(""+a).trim():a+"px","float"===n&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}function rn(e,t,n){t&&(ta[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML)&&r("137",e,n()),null!=t.dangerouslySetInnerHTML&&(null!=t.children&&r("60"),"object"===typeof t.dangerouslySetInnerHTML&&"__html"in t.dangerouslySetInnerHTML||r("61")),null!=t.style&&"object"!==typeof t.style&&r("62",n()))}function on(e,t){if(-1===e.indexOf("-"))return"string"===typeof t.is;switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function an(e,t){e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument;var n=Me(e);t=Yn[t];for(var r=0;r<\/script>",e=e.removeChild(e.firstChild)):e="string"===typeof t.is?n.createElement(e,{is:t.is}):n.createElement(e):e=n.createElementNS(r,e),e}function un(e,t){return(9===t.nodeType?t:t.ownerDocument).createTextNode(e)}function sn(e,t,n,r){var o=on(t,n);switch(t){case"iframe":case"object":Ne("topLoad","load",e);var a=n;break;case"video":case"audio":for(a in oa)oa.hasOwnProperty(a)&&Ne(a,oa[a],e);a=n;break;case"source":Ne("topError","error",e),a=n;break;case"img":case"image":Ne("topError","error",e),Ne("topLoad","load",e),a=n;break;case"form":Ne("topReset","reset",e),Ne("topSubmit","submit",e),a=n;break;case"details":Ne("topToggle","toggle",e),a=n;break;case"input":Bt(e,n),a=Ht(e,n),Ne("topInvalid","invalid",e),an(r,"onChange");break;case"option":a=qt(e,n);break;case"select":Qt(e,n),a=Cn({},n,{value:void 0}),Ne("topInvalid","invalid",e),an(r,"onChange");break;case"textarea":Yt(e,n),a=Gt(e,n),Ne("topInvalid","invalid",e),an(r,"onChange");break;default:a=n}rn(t,a,ra);var i,l=a;for(i in l)if(l.hasOwnProperty(i)){var u=l[i];"style"===i?nn(e,u,ra):"dangerouslySetInnerHTML"===i?null!=(u=u?u.__html:void 0)&&Zo(e,u):"children"===i?"string"===typeof u?("textarea"!==t||""!==u)&&tn(e,u):"number"===typeof u&&tn(e,""+u):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(Gn.hasOwnProperty(i)?null!=u&&an(r,i):o?Lt(e,i,u):null!=u&&Ut(e,i,u))}switch(t){case"input":ae(e),Kt(e,n);break;case"textarea":ae(e),Zt(e,n);break;case"option":null!=n.value&&e.setAttribute("value",n.value);break;case"select":e.multiple=!!n.multiple,t=n.value,null!=t?$t(e,!!n.multiple,t,!1):null!=n.defaultValue&&$t(e,!!n.multiple,n.defaultValue,!0);break;default:"function"===typeof a.onClick&&(e.onclick=kn)}}function cn(e,t,n,r,o){var a=null;switch(t){case"input":n=Ht(e,n),r=Ht(e,r),a=[];break;case"option":n=qt(e,n),r=qt(e,r),a=[];break;case"select":n=Cn({},n,{value:void 0}),r=Cn({},r,{value:void 0}),a=[];break;case"textarea":n=Gt(e,n),r=Gt(e,r),a=[];break;default:"function"!==typeof n.onClick&&"function"===typeof r.onClick&&(e.onclick=kn)}rn(t,r,ra);var i,l;e=null;for(i in n)if(!r.hasOwnProperty(i)&&n.hasOwnProperty(i)&&null!=n[i])if("style"===i)for(l in t=n[i])t.hasOwnProperty(l)&&(e||(e={}),e[l]="");else"dangerouslySetInnerHTML"!==i&&"children"!==i&&"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&"autoFocus"!==i&&(Gn.hasOwnProperty(i)?a||(a=[]):(a=a||[]).push(i,null));for(i in r){var u=r[i];if(t=null!=n?n[i]:void 0,r.hasOwnProperty(i)&&u!==t&&(null!=u||null!=t))if("style"===i)if(t){for(l in t)!t.hasOwnProperty(l)||u&&u.hasOwnProperty(l)||(e||(e={}),e[l]="");for(l in u)u.hasOwnProperty(l)&&t[l]!==u[l]&&(e||(e={}),e[l]=u[l])}else e||(a||(a=[]),a.push(i,e)),e=u;else"dangerouslySetInnerHTML"===i?(u=u?u.__html:void 0,t=t?t.__html:void 0,null!=u&&t!==u&&(a=a||[]).push(i,""+u)):"children"===i?t===u||"string"!==typeof u&&"number"!==typeof u||(a=a||[]).push(i,""+u):"suppressContentEditableWarning"!==i&&"suppressHydrationWarning"!==i&&(Gn.hasOwnProperty(i)?(null!=u&&an(o,i),a||t===u||(a=[])):(a=a||[]).push(i,u))}return e&&(a=a||[]).push("style",e),a}function fn(e,t,n,r,o){"input"===n&&"radio"===o.type&&null!=o.name&&zt(e,o),on(n,r),r=on(n,o);for(var a=0;a=u.hasBooleanValue+u.hasNumericValue+u.hasOverloadedBooleanValue||r("50",l),i.hasOwnProperty(l)&&(u.attributeName=i[l]),a.hasOwnProperty(l)&&(u.attributeNamespace=a[l]),e.hasOwnProperty(l)&&(u.mutationMethod=e[l]),In[l]=u}}},In={},Rn=Nn,An=Rn.MUST_USE_PROPERTY,Dn=Rn.HAS_BOOLEAN_VALUE,Mn=Rn.HAS_NUMERIC_VALUE,Fn=Rn.HAS_POSITIVE_NUMERIC_VALUE,Un=Rn.HAS_OVERLOADED_BOOLEAN_VALUE,Ln=Rn.HAS_STRING_BOOLEAN_VALUE,jn={Properties:{allowFullScreen:Dn,async:Dn,autoFocus:Dn,autoPlay:Dn,capture:Un,checked:An|Dn,cols:Fn,contentEditable:Ln,controls:Dn,default:Dn,defer:Dn,disabled:Dn,download:Un,draggable:Ln,formNoValidate:Dn,hidden:Dn,loop:Dn,multiple:An|Dn,muted:An|Dn,noValidate:Dn,open:Dn,playsInline:Dn,readOnly:Dn,required:Dn,reversed:Dn,rows:Fn,rowSpan:Mn,scoped:Dn,seamless:Dn,selected:An|Dn,size:Fn,start:Mn,span:Fn,spellCheck:Ln,style:0,tabIndex:0,itemScope:Dn,acceptCharset:0,className:0,htmlFor:0,httpEquiv:0,value:Ln},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMMutationMethods:{value:function(e,t){if(null==t)return e.removeAttribute("value");"number"!==e.type||!1===e.hasAttribute("value")?e.setAttribute("value",""+t):e.validity&&!e.validity.badInput&&e.ownerDocument.activeElement!==e&&e.setAttribute("value",""+t)}}},Hn=Rn.HAS_STRING_BOOLEAN_VALUE,Bn={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"},zn={Properties:{autoReverse:Hn,externalResourcesRequired:Hn,preserveAlpha:Hn},DOMAttributeNames:{autoReverse:"autoReverse",externalResourcesRequired:"externalResourcesRequired",preserveAlpha:"preserveAlpha"},DOMAttributeNamespaces:{xlinkActuate:Bn.xlink,xlinkArcrole:Bn.xlink,xlinkHref:Bn.xlink,xlinkRole:Bn.xlink,xlinkShow:Bn.xlink,xlinkTitle:Bn.xlink,xlinkType:Bn.xlink,xmlBase:Bn.xml,xmlLang:Bn.xml,xmlSpace:Bn.xml}},Vn=/[\-\:]([a-z])/g;"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode x-height xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type xml:base xmlns:xlink xml:lang xml:space".split(" ").forEach(function(e){var t=e.replace(Vn,l);zn.Properties[t]=0,zn.DOMAttributeNames[t]=e}),Rn.injectDOMPropertyConfig(jn),Rn.injectDOMPropertyConfig(zn);var Kn={_caughtError:null,_hasCaughtError:!1,_rethrowError:null,_hasRethrowError:!1,injection:{injectErrorUtils:function(e){"function"!==typeof e.invokeGuardedCallback&&r("197"),u=e.invokeGuardedCallback}},invokeGuardedCallback:function(e,t,n,r,o,a,i,l,s){u.apply(Kn,arguments)},invokeGuardedCallbackAndCatchFirstError:function(e,t,n,r,o,a,i,l,u){if(Kn.invokeGuardedCallback.apply(this,arguments),Kn.hasCaughtError()){var s=Kn.clearCaughtError();Kn._hasRethrowError||(Kn._hasRethrowError=!0,Kn._rethrowError=s)}},rethrowCaughtError:function(){return s.apply(Kn,arguments)},hasCaughtError:function(){return Kn._hasCaughtError},clearCaughtError:function(){if(Kn._hasCaughtError){var e=Kn._caughtError;return Kn._caughtError=null,Kn._hasCaughtError=!1,e}r("198")}},Wn=null,qn={},$n=[],Qn={},Gn={},Yn={},Xn=Object.freeze({plugins:$n,eventNameDispatchConfigs:Qn,registrationNameModules:Gn,registrationNameDependencies:Yn,possibleRegistrationNames:null,injectEventPluginOrder:p,injectEventPluginsByName:d}),Zn=null,Jn=null,er=null,tr=null,nr={injectEventPluginOrder:p,injectEventPluginsByName:d},rr=Object.freeze({injection:nr,getListener:w,extractEvents:C,enqueueEvents:k,processEventQueue:x}),or=Math.random().toString(36).slice(2),ar="__reactInternalInstance$"+or,ir="__reactEventHandlers$"+or,lr=Object.freeze({precacheFiberNode:function(e,t){t[ar]=e},getClosestInstanceFromNode:E,getInstanceFromNode:function(e){return e=e[ar],!e||5!==e.tag&&6!==e.tag?null:e},getNodeFromInstance:T,getFiberCurrentPropsFromNode:_,updateFiberProps:function(e,t){e[ir]=t}}),ur=Object.freeze({accumulateTwoPhaseDispatches:D,accumulateTwoPhaseDispatchesSkipTarget:function(e){y(e,I)},accumulateEnterLeaveDispatches:M,accumulateDirectDispatches:function(e){y(e,A)}}),sr=null,cr={_root:null,_startText:null,_fallbackText:null},fr="dispatchConfig _targetInst nativeEvent isDefaultPrevented isPropagationStopped _dispatchListeners _dispatchInstances".split(" "),pr={type:null,target:null,currentTarget:kn.thatReturnsNull,eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};Cn(j.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!==typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=kn.thatReturnsTrue)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!==typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=kn.thatReturnsTrue)},persist:function(){this.isPersistent=kn.thatReturnsTrue},isPersistent:kn.thatReturnsFalse,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;for(t=0;t=parseInt(gr.version(),10))}var vr,br=yr,wr=wn.canUseDOM&&(!hr||mr&&8=mr),Cr=String.fromCharCode(32),kr={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["topCompositionEnd","topKeyPress","topTextInput","topPaste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"topBlur topCompositionEnd topKeyDown topKeyPress topKeyUp topMouseDown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"topBlur topCompositionStart topKeyDown topKeyPress topKeyUp topMouseDown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"topBlur topCompositionUpdate topKeyDown topKeyPress topKeyUp topMouseDown".split(" ")}},xr=!1,Er=!1,Tr={eventTypes:kr,extractEvents:function(e,t,n,r){var o;if(hr)e:{switch(e){case"topCompositionStart":var a=kr.compositionStart;break e;case"topCompositionEnd":a=kr.compositionEnd;break e;case"topCompositionUpdate":a=kr.compositionUpdate;break e}a=void 0}else Er?W(e,n)&&(a=kr.compositionEnd):"topKeyDown"===e&&229===n.keyCode&&(a=kr.compositionStart);return a?(wr&&(Er||a!==kr.compositionStart?a===kr.compositionEnd&&Er&&(o=U()):(cr._root=r,cr._startText=L(),Er=!0)),a=V.getPooled(a,t,n,r),o?a.data=o:null!==(o=q(n))&&(a.data=o),D(a),o=a):o=null,(e=br?$(e,n):Q(e,n))?(t=K.getPooled(kr.beforeInput,t,n,r),t.data=e,D(t)):t=null,[o,t]}},_r=null,Sr=null,Pr=null,Or={injectFiberControlledHostComponent:function(e){_r=e}},Nr=Object.freeze({injection:Or,enqueueStateRestore:Y,restoreStateIfNeeded:X}),Ir=!1,Rr={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};wn.canUseDOM&&(vr=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("",""));var Ar={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"topBlur topChange topClick topFocus topInput topKeyDown topKeyUp topSelectionChange".split(" ")}},Dr=null,Mr=null,Fr=!1;wn.canUseDOM&&(Fr=ne("input")&&(!document.documentMode||9=document.documentMode,eo={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"topBlur topContextMenu topFocus topKeyDown topKeyUp topMouseDown topMouseUp topSelectionChange".split(" ")}},to=null,no=null,ro=null,oo=!1,ao={eventTypes:eo,extractEvents:function(e,t,n,r){var o,a=r.window===r?r.document:9===r.nodeType?r:r.ownerDocument;if(!(o=!a)){e:{a=Me(a),o=Yn.onSelect;for(var i=0;i=zo-e){if(!(-1!==Ho&&Ho<=e))return void(Bo||(Bo=!0,requestAnimationFrame(qo)));Uo.didTimeout=!0}else Uo.didTimeout=!1;Ho=-1,e=Lo,Lo=null,null!==e&&e(Uo)}},!1);var qo=function(e){Bo=!1;var t=e-zo+Ko;tt&&(t=8),Ko=t"+t+"",t=Xo.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}}),Jo={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ea=["Webkit","ms","Moz","O"];Object.keys(Jo).forEach(function(e){ea.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),Jo[t]=Jo[e]})});var ta=Cn({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}),na=Yo.html,ra=kn.thatReturns(""),oa={topAbort:"abort",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topSeeked:"seeked",topSeeking:"seeking",topStalled:"stalled",topSuspend:"suspend",topTimeUpdate:"timeupdate",topVolumeChange:"volumechange",topWaiting:"waiting"},aa=Object.freeze({createElement:ln,createTextNode:un,setInitialProperties:sn,diffProperties:cn,updateProperties:fn,diffHydratedProperties:pn,diffHydratedText:dn,warnForUnmatchedText:function(){},warnForDeletedHydratableElement:function(){},warnForDeletedHydratableText:function(){},warnForInsertedHydratedElement:function(){},warnForInsertedHydratedText:function(){},restoreControlledState:function(e,t,n){switch(t){case"input":if(Vt(e,n),t=n.name,"radio"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;tr&&(o=r,r=e,e=o),o=Ue(n,e);var a=Ue(n,r);if(o&&a&&(1!==t.rangeCount||t.anchorNode!==o.node||t.anchorOffset!==o.offset||t.focusNode!==a.node||t.focusOffset!==a.offset)){var i=document.createRange();i.setStart(o.node,o.offset),t.removeAllRanges(),e>r?(t.addRange(i),t.extend(a.node,a.offset)):(i.setEnd(a.node,a.offset),t.addRange(i))}}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(Sn(n),n=0;n capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\n// `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nvar scope = typeof global !== \"undefined\" ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\n// MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nif (typeof BrowserMutationObserver === \"function\") {\n requestFlush = makeRequestCallFromMutationObserver(flush);\n\n// MessageChannels are desirable because they give direct access to the HTML\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n}\n\n// `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\nrawAsap.requestFlush = requestFlush;\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode(\"\");\n observer.observe(node, {characterData: true});\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(9)))\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\n} catch(e) {\n\t// This works if the window reference is available\n\tif(typeof window === \"object\")\n\t\tg = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = __webpack_require__(3);\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n var p = new Promise(Promise._44);\n p._83 = 1;\n p._18 = value;\n return p;\n}\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value;\n\n if (value === null) return NULL;\n if (value === undefined) return UNDEFINED;\n if (value === true) return TRUE;\n if (value === false) return FALSE;\n if (value === 0) return ZERO;\n if (value === '') return EMPTYSTRING;\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(value));\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n }\n }\n return valuePromise(value);\n};\n\nPromise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n if (val instanceof Promise && val.then === Promise.prototype.then) {\n while (val._83 === 3) {\n val = val._18;\n }\n if (val._83 === 1) return res(i, val._18);\n if (val._83 === 2) reject(val._18);\n val.then(function (val) {\n res(i, val);\n }, reject);\n return;\n } else {\n var then = val.then;\n if (typeof then === 'function') {\n var p = new Promise(then.bind(val));\n p.then(function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) {\n values.forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n });\n });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\n(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_dom__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_dom___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react_dom__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__App__ = __webpack_require__(24);\n__WEBPACK_IMPORTED_MODULE_1_react_dom___default.a.render(__WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_2__App__[\"a\" /* default */],null),document.getElementById('root'));\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/** @license React v16.2.0\n * react.production.min.js\n *\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar m=__webpack_require__(0),n=__webpack_require__(4),p=__webpack_require__(2),q=\"function\"===typeof Symbol&&Symbol[\"for\"],r=q?Symbol[\"for\"](\"react.element\"):60103,t=q?Symbol[\"for\"](\"react.call\"):60104,u=q?Symbol[\"for\"](\"react.return\"):60105,v=q?Symbol[\"for\"](\"react.portal\"):60106,w=q?Symbol[\"for\"](\"react.fragment\"):60107,x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){for(var b=arguments.length-1,e=\"Minified React error #\"+a+\"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant\\x3d\"+a,c=0;cM.length&&M.push(a)}\nfunction P(a,b,e,c){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case r:case t:case u:case v:g=!0}}if(g)return e(c,a,\"\"===b?\".\"+Q(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k=g.hasBooleanValue+g.hasNumericValue+g.hasOverloadedBooleanValue?void 0:E(\"50\",f);e.hasOwnProperty(f)&&(g.attributeName=e[f]);d.hasOwnProperty(f)&&(g.attributeNamespace=d[f]);a.hasOwnProperty(f)&&(g.mutationMethod=a[f]);ua[f]=g}}},ua={};\nfunction va(a,b){if(oa.hasOwnProperty(a)||2this.eventPool.length&&this.eventPool.push(a)}function Jb(a){a.eventPool=[];a.getPooled=Kb;a.release=Lb}function Mb(a,b,c,d){return T.call(this,a,b,c,d)}T.augmentClass(Mb,{data:null});function Nb(a,b,c,d){return T.call(this,a,b,c,d)}T.augmentClass(Nb,{data:null});var Pb=[9,13,27,32],Vb=l.canUseDOM&&\"CompositionEvent\"in window,Wb=null;l.canUseDOM&&\"documentMode\"in document&&(Wb=document.documentMode);var Xb;\nif(Xb=l.canUseDOM&&\"TextEvent\"in window&&!Wb){var Yb=window.opera;Xb=!(\"object\"===typeof Yb&&\"function\"===typeof Yb.version&&12>=parseInt(Yb.version(),10))}\nvar Zb=Xb,$b=l.canUseDOM&&(!Vb||Wb&&8=Wb),ac=String.fromCharCode(32),bc={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"topCompositionEnd\",\"topKeyPress\",\"topTextInput\",\"topPaste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"topBlur topCompositionEnd topKeyDown topKeyPress topKeyUp topMouseDown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"topBlur topCompositionStart topKeyDown topKeyPress topKeyUp topMouseDown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"topBlur topCompositionUpdate topKeyDown topKeyPress topKeyUp topMouseDown\".split(\" \")}},cc=!1;\nfunction dc(a,b){switch(a){case \"topKeyUp\":return-1!==Pb.indexOf(b.keyCode);case \"topKeyDown\":return 229!==b.keyCode;case \"topKeyPress\":case \"topMouseDown\":case \"topBlur\":return!0;default:return!1}}function ec(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var fc=!1;function gc(a,b){switch(a){case \"topCompositionEnd\":return ec(b);case \"topKeyPress\":if(32!==b.which)return null;cc=!0;return ac;case \"topTextInput\":return a=b.data,a===ac&&cc?null:a;default:return null}}\nfunction hc(a,b){if(fc)return\"topCompositionEnd\"===a||!Vb&&dc(a,b)?(a=Fb(),S._root=null,S._startText=null,S._fallbackText=null,fc=!1,a):null;switch(a){case \"topPaste\":return null;case \"topKeyPress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1qd.length&&qd.push(a)}}}\nvar xd=Object.freeze({get _enabled(){return td},get _handleTopLevel(){return sd},setHandleTopLevel:function(a){sd=a},setEnabled:ud,isEnabled:function(){return td},trapBubbledEvent:U,trapCapturedEvent:wd,dispatchEvent:vd});function yd(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;c[\"ms\"+a]=\"MS\"+b;c[\"O\"+a]=\"o\"+b.toLowerCase();return c}\nvar zd={animationend:yd(\"Animation\",\"AnimationEnd\"),animationiteration:yd(\"Animation\",\"AnimationIteration\"),animationstart:yd(\"Animation\",\"AnimationStart\"),transitionend:yd(\"Transition\",\"TransitionEnd\")},Ad={},Bd={};l.canUseDOM&&(Bd=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete zd.animationend.animation,delete zd.animationiteration.animation,delete zd.animationstart.animation),\"TransitionEvent\"in window||delete zd.transitionend.transition);\nfunction Cd(a){if(Ad[a])return Ad[a];if(!zd[a])return a;var b=zd[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Bd)return Ad[a]=b[c];return\"\"}\nvar Dd={topAbort:\"abort\",topAnimationEnd:Cd(\"animationend\")||\"animationend\",topAnimationIteration:Cd(\"animationiteration\")||\"animationiteration\",topAnimationStart:Cd(\"animationstart\")||\"animationstart\",topBlur:\"blur\",topCancel:\"cancel\",topCanPlay:\"canplay\",topCanPlayThrough:\"canplaythrough\",topChange:\"change\",topClick:\"click\",topClose:\"close\",topCompositionEnd:\"compositionend\",topCompositionStart:\"compositionstart\",topCompositionUpdate:\"compositionupdate\",topContextMenu:\"contextmenu\",topCopy:\"copy\",\ntopCut:\"cut\",topDoubleClick:\"dblclick\",topDrag:\"drag\",topDragEnd:\"dragend\",topDragEnter:\"dragenter\",topDragExit:\"dragexit\",topDragLeave:\"dragleave\",topDragOver:\"dragover\",topDragStart:\"dragstart\",topDrop:\"drop\",topDurationChange:\"durationchange\",topEmptied:\"emptied\",topEncrypted:\"encrypted\",topEnded:\"ended\",topError:\"error\",topFocus:\"focus\",topInput:\"input\",topKeyDown:\"keydown\",topKeyPress:\"keypress\",topKeyUp:\"keyup\",topLoadedData:\"loadeddata\",topLoad:\"load\",topLoadedMetadata:\"loadedmetadata\",topLoadStart:\"loadstart\",\ntopMouseDown:\"mousedown\",topMouseMove:\"mousemove\",topMouseOut:\"mouseout\",topMouseOver:\"mouseover\",topMouseUp:\"mouseup\",topPaste:\"paste\",topPause:\"pause\",topPlay:\"play\",topPlaying:\"playing\",topProgress:\"progress\",topRateChange:\"ratechange\",topScroll:\"scroll\",topSeeked:\"seeked\",topSeeking:\"seeking\",topSelectionChange:\"selectionchange\",topStalled:\"stalled\",topSuspend:\"suspend\",topTextInput:\"textInput\",topTimeUpdate:\"timeupdate\",topToggle:\"toggle\",topTouchCancel:\"touchcancel\",topTouchEnd:\"touchend\",topTouchMove:\"touchmove\",\ntopTouchStart:\"touchstart\",topTransitionEnd:Cd(\"transitionend\")||\"transitionend\",topVolumeChange:\"volumechange\",topWaiting:\"waiting\",topWheel:\"wheel\"},Ed={},Fd=0,Gd=\"_reactListenersID\"+(\"\"+Math.random()).slice(2);function Hd(a){Object.prototype.hasOwnProperty.call(a,Gd)||(a[Gd]=Fd++,Ed[a[Gd]]={});return Ed[a[Gd]]}function Id(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Jd(a,b){var c=Id(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Id(c)}}function Kd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&\"text\"===a.type||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Ld=l.canUseDOM&&\"documentMode\"in document&&11>=document.documentMode,Md={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"topBlur topContextMenu topFocus topKeyDown topKeyUp topMouseDown topMouseUp topSelectionChange\".split(\" \")}},Nd=null,Od=null,Pd=null,Qd=!1;\nfunction Rd(a,b){if(Qd||null==Nd||Nd!==da())return null;var c=Nd;\"selectionStart\"in c&&Kd(c)?c={start:c.selectionStart,end:c.selectionEnd}:window.getSelection?(c=window.getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}):c=void 0;return Pd&&ea(Pd,c)?null:(Pd=c,a=T.getPooled(Md.select,Od,a,b),a.type=\"select\",a.target=Nd,Ab(a),a)}\nvar Sd={eventTypes:Md,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=Hd(e);f=Sa.onSelect;for(var g=0;ghe||(a.current=ge[he],ge[he]=null,he--)}function W(a,b){he++;ge[he]=a.current;a.current=b}new Set;var ie={current:D},X={current:!1},je=D;function ke(a){return le(a)?je:ie.current}\nfunction me(a,b){var c=a.type.contextTypes;if(!c)return D;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function le(a){return 2===a.tag&&null!=a.type.childContextTypes}function ne(a){le(a)&&(V(X,a),V(ie,a))}\nfunction oe(a,b,c){null!=ie.cursor?E(\"168\"):void 0;W(ie,b,a);W(X,c,a)}function pe(a,b){var c=a.stateNode,d=a.type.childContextTypes;if(\"function\"!==typeof c.getChildContext)return b;c=c.getChildContext();for(var e in c)e in d?void 0:E(\"108\",jd(a)||\"Unknown\",e);return B({},b,c)}function qe(a){if(!le(a))return!1;var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||D;je=ie.current;W(ie,b,a);W(X,X.current,a);return!0}\nfunction re(a,b){var c=a.stateNode;c?void 0:E(\"169\");if(b){var d=pe(a,je);c.__reactInternalMemoizedMergedChildContext=d;V(X,a);V(ie,a);W(ie,d,a)}else V(X,a);W(X,b,a)}\nfunction Y(a,b,c){this.tag=a;this.key=b;this.stateNode=this.type=null;this.sibling=this.child=this[\"return\"]=null;this.index=0;this.memoizedState=this.updateQueue=this.memoizedProps=this.pendingProps=this.ref=null;this.internalContextTag=c;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.expirationTime=0;this.alternate=null}\nfunction se(a,b,c){var d=a.alternate;null===d?(d=new Y(a.tag,a.key,a.internalContextTag),d.type=a.type,d.stateNode=a.stateNode,d.alternate=a,a.alternate=d):(d.effectTag=0,d.nextEffect=null,d.firstEffect=null,d.lastEffect=null);d.expirationTime=c;d.pendingProps=b;d.child=a.child;d.memoizedProps=a.memoizedProps;d.memoizedState=a.memoizedState;d.updateQueue=a.updateQueue;d.sibling=a.sibling;d.index=a.index;d.ref=a.ref;return d}\nfunction te(a,b,c){var d=void 0,e=a.type,f=a.key;\"function\"===typeof e?(d=e.prototype&&e.prototype.isReactComponent?new Y(2,f,b):new Y(0,f,b),d.type=e,d.pendingProps=a.props):\"string\"===typeof e?(d=new Y(5,f,b),d.type=e,d.pendingProps=a.props):\"object\"===typeof e&&null!==e&&\"number\"===typeof e.tag?(d=e,d.pendingProps=a.props):E(\"130\",null==e?e:typeof e,\"\");d.expirationTime=c;return d}function ue(a,b,c,d){b=new Y(10,d,b);b.pendingProps=a;b.expirationTime=c;return b}\nfunction ve(a,b,c){b=new Y(6,null,b);b.pendingProps=a;b.expirationTime=c;return b}function we(a,b,c){b=new Y(7,a.key,b);b.type=a.handler;b.pendingProps=a;b.expirationTime=c;return b}function xe(a,b,c){a=new Y(9,null,b);a.expirationTime=c;return a}function ye(a,b,c){b=new Y(4,a.key,b);b.pendingProps=a.children||[];b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}var ze=null,Ae=null;\nfunction Be(a){return function(b){try{return a(b)}catch(c){}}}function Ce(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);ze=Be(function(a){return b.onCommitFiberRoot(c,a)});Ae=Be(function(a){return b.onCommitFiberUnmount(c,a)})}catch(d){}return!0}function De(a){\"function\"===typeof ze&&ze(a)}function Ee(a){\"function\"===typeof Ae&&Ae(a)}\nfunction Fe(a){return{baseState:a,expirationTime:0,first:null,last:null,callbackList:null,hasForceUpdate:!1,isInitialized:!1}}function Ge(a,b){null===a.last?a.first=a.last=b:(a.last.next=b,a.last=b);if(0===a.expirationTime||a.expirationTime>b.expirationTime)a.expirationTime=b.expirationTime}\nfunction He(a,b){var c=a.alternate,d=a.updateQueue;null===d&&(d=a.updateQueue=Fe(null));null!==c?(a=c.updateQueue,null===a&&(a=c.updateQueue=Fe(null))):a=null;a=a!==d?a:null;null===a?Ge(d,b):null===d.last||null===a.last?(Ge(d,b),Ge(a,b)):(Ge(d,b),a.last=b)}function Ie(a,b,c,d){a=a.partialState;return\"function\"===typeof a?a.call(b,c,d):a}\nfunction Je(a,b,c,d,e,f){null!==a&&a.updateQueue===c&&(c=b.updateQueue={baseState:c.baseState,expirationTime:c.expirationTime,first:c.first,last:c.last,isInitialized:c.isInitialized,callbackList:null,hasForceUpdate:!1});c.expirationTime=0;c.isInitialized?a=c.baseState:(a=c.baseState=b.memoizedState,c.isInitialized=!0);for(var g=!0,h=c.first,k=!1;null!==h;){var q=h.expirationTime;if(q>f){var v=c.expirationTime;if(0===v||v>q)c.expirationTime=q;k||(k=!0,c.baseState=a)}else{k||(c.first=h.next,null===\nc.first&&(c.last=null));if(h.isReplace)a=Ie(h,d,a,e),g=!0;else if(q=Ie(h,d,a,e))a=g?B({},a,q):B(a,q),g=!1;h.isForced&&(c.hasForceUpdate=!0);null!==h.callback&&(q=c.callbackList,null===q&&(q=c.callbackList=[]),q.push(h))}h=h.next}null!==c.callbackList?b.effectTag|=32:null!==c.first||c.hasForceUpdate||(b.updateQueue=null);k||(c.baseState=a);return a}\nfunction Ke(a,b){var c=a.callbackList;if(null!==c)for(a.callbackList=null,a=0;aw?(k=n,n=null):k=n.sibling;var x=G(e,n,m[w],A);if(null===x){null===n&&(n=k);break}a&&n&&null===x.alternate&&b(e,n);g=f(x,g,w);null===r?h=x:r.sibling=x;r=x;n=k}if(w===m.length)return c(e,n),h;if(null===n){for(;ww?(k=n,n=null):k=n.sibling;var J=G(e,n,x.value,A);if(null===J){n||(n=k);break}a&&n&&null===J.alternate&&b(e,n);g=f(J,\ng,w);null===r?h=J:r.sibling=J;r=J;n=k}if(x.done)return c(e,n),h;if(null===n){for(;!x.done;w++,x=m.next())x=z(e,x.value,A),null!==x&&(g=f(x,g,w),null===r?h=x:r.sibling=x,r=x);return h}for(n=d(e,n);!x.done;w++,x=m.next())if(x=I(n,e,w,x.value,A),null!==x){if(a&&null!==x.alternate)n[\"delete\"](null===x.key?w:x.key);g=f(x,g,w);null===r?h=x:r.sibling=x;r=x}a&&n.forEach(function(a){return b(e,a)});return h}return function(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===Ve&&null===f.key&&(f=f.props.children);\nvar m=\"object\"===typeof f&&null!==f;if(m)switch(f.$$typeof){case Re:a:{var r=f.key;for(m=d;null!==m;){if(m.key===r)if(10===m.tag?f.type===Ve:m.type===f.type){c(a,m.sibling);d=e(m,f.type===Ve?f.props.children:f.props,h);d.ref=Ze(m,f);d[\"return\"]=a;a=d;break a}else{c(a,m);break}else b(a,m);m=m.sibling}f.type===Ve?(d=ue(f.props.children,a.internalContextTag,h,f.key),d[\"return\"]=a,a=d):(h=te(f,a.internalContextTag,h),h.ref=Ze(d,f),h[\"return\"]=a,a=h)}return g(a);case Se:a:{for(m=f.key;null!==d;){if(d.key===\nm)if(7===d.tag){c(a,d.sibling);d=e(d,f,h);d[\"return\"]=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=we(f,a.internalContextTag,h);d[\"return\"]=a;a=d}return g(a);case Te:a:{if(null!==d)if(9===d.tag){c(a,d.sibling);d=e(d,null,h);d.type=f.value;d[\"return\"]=a;a=d;break a}else c(a,d);d=xe(f,a.internalContextTag,h);d.type=f.value;d[\"return\"]=a;a=d}return g(a);case Ue:a:{for(m=f.key;null!==d;){if(d.key===m)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===\nf.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d[\"return\"]=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=ye(f,a.internalContextTag,h);d[\"return\"]=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h)):(c(a,d),d=ve(f,a.internalContextTag,h)),d[\"return\"]=a,a=d,g(a);if(Ye(f))return L(a,d,f,h);if(Xe(f))return N(a,d,f,h);m&&$e(a,f);if(\"undefined\"===typeof f)switch(a.tag){case 2:case 1:h=a.type,E(\"152\",h.displayName||\nh.name||\"Component\")}return c(a,d)}}var bf=af(!0),cf=af(!1);\nfunction df(a,b,c,d,e){function f(a,b,c){var d=b.expirationTime;b.child=null===a?cf(b,null,c,d):bf(b,a.child,c,d)}function g(a,b){var c=b.ref;null===c||a&&a.ref===c||(b.effectTag|=128)}function h(a,b,c,d){g(a,b);if(!c)return d&&re(b,!1),q(a,b);c=b.stateNode;id.current=b;var e=c.render();b.effectTag|=1;f(a,b,e);b.memoizedState=c.state;b.memoizedProps=c.props;d&&re(b,!0);return b.child}function k(a){var b=a.stateNode;b.pendingContext?oe(a,b.pendingContext,b.pendingContext!==b.context):b.context&&oe(a,\nb.context,!1);I(a,b.containerInfo)}function q(a,b){null!==a&&b.child!==a.child?E(\"153\"):void 0;if(null!==b.child){a=b.child;var c=se(a,a.pendingProps,a.expirationTime);b.child=c;for(c[\"return\"]=b;null!==a.sibling;)a=a.sibling,c=c.sibling=se(a,a.pendingProps,a.expirationTime),c[\"return\"]=b;c.sibling=null}return b.child}function v(a,b){switch(b.tag){case 3:k(b);break;case 2:qe(b);break;case 4:I(b,b.stateNode.containerInfo)}return null}var y=a.shouldSetTextContent,u=a.useSyncScheduling,z=a.shouldDeprioritizeSubtree,\nG=b.pushHostContext,I=b.pushHostContainer,L=c.enterHydrationState,N=c.resetHydrationState,J=c.tryToClaimNextHydratableInstance;a=Le(d,e,function(a,b){a.memoizedProps=b},function(a,b){a.memoizedState=b});var w=a.adoptClassInstance,m=a.constructClassInstance,A=a.mountClassInstance,Ob=a.updateClassInstance;return{beginWork:function(a,b,c){if(0===b.expirationTime||b.expirationTime>c)return v(a,b);switch(b.tag){case 0:null!==a?E(\"155\"):void 0;var d=b.type,e=b.pendingProps,r=ke(b);r=me(b,r);d=d(e,r);b.effectTag|=\n1;\"object\"===typeof d&&null!==d&&\"function\"===typeof d.render?(b.tag=2,e=qe(b),w(b,d),A(b,c),b=h(a,b,!0,e)):(b.tag=1,f(a,b,d),b.memoizedProps=e,b=b.child);return b;case 1:a:{e=b.type;c=b.pendingProps;d=b.memoizedProps;if(X.current)null===c&&(c=d);else if(null===c||d===c){b=q(a,b);break a}d=ke(b);d=me(b,d);e=e(c,d);b.effectTag|=1;f(a,b,e);b.memoizedProps=c;b=b.child}return b;case 2:return e=qe(b),d=void 0,null===a?b.stateNode?E(\"153\"):(m(b,b.pendingProps),A(b,c),d=!0):d=Ob(a,b,c),h(a,b,d,e);case 3:return k(b),\ne=b.updateQueue,null!==e?(d=b.memoizedState,e=Je(a,b,e,null,null,c),d===e?(N(),b=q(a,b)):(d=e.element,r=b.stateNode,(null===a||null===a.child)&&r.hydrate&&L(b)?(b.effectTag|=2,b.child=cf(b,null,d,c)):(N(),f(a,b,d)),b.memoizedState=e,b=b.child)):(N(),b=q(a,b)),b;case 5:G(b);null===a&&J(b);e=b.type;var n=b.memoizedProps;d=b.pendingProps;null===d&&(d=n,null===d?E(\"154\"):void 0);r=null!==a?a.memoizedProps:null;X.current||null!==d&&n!==d?(n=d.children,y(e,d)?n=null:r&&y(e,r)&&(b.effectTag|=16),g(a,b),\n2147483647!==c&&!u&&z(e,d)?(b.expirationTime=2147483647,b=null):(f(a,b,n),b.memoizedProps=d,b=b.child)):b=q(a,b);return b;case 6:return null===a&&J(b),a=b.pendingProps,null===a&&(a=b.memoizedProps),b.memoizedProps=a,null;case 8:b.tag=7;case 7:e=b.pendingProps;if(X.current)null===e&&(e=a&&a.memoizedProps,null===e?E(\"154\"):void 0);else if(null===e||b.memoizedProps===e)e=b.memoizedProps;d=e.children;b.stateNode=null===a?cf(b,b.stateNode,d,c):bf(b,b.stateNode,d,c);b.memoizedProps=e;return b.stateNode;\ncase 9:return null;case 4:a:{I(b,b.stateNode.containerInfo);e=b.pendingProps;if(X.current)null===e&&(e=a&&a.memoizedProps,null==e?E(\"154\"):void 0);else if(null===e||b.memoizedProps===e){b=q(a,b);break a}null===a?b.child=bf(b,null,e,c):f(a,b,e);b.memoizedProps=e;b=b.child}return b;case 10:a:{c=b.pendingProps;if(X.current)null===c&&(c=b.memoizedProps);else if(null===c||b.memoizedProps===c){b=q(a,b);break a}f(a,b,c);b.memoizedProps=c;b=b.child}return b;default:E(\"156\")}},beginFailedWork:function(a,b,\nc){switch(b.tag){case 2:qe(b);break;case 3:k(b);break;default:E(\"157\")}b.effectTag|=64;null===a?b.child=null:b.child!==a.child&&(b.child=a.child);if(0===b.expirationTime||b.expirationTime>c)return v(a,b);b.firstEffect=null;b.lastEffect=null;b.child=null===a?cf(b,null,null,c):bf(b,a.child,null,c);2===b.tag&&(a=b.stateNode,b.memoizedProps=a.props,b.memoizedState=a.state);return b.child}}}\nfunction ef(a,b,c){function d(a){a.effectTag|=4}var e=a.createInstance,f=a.createTextInstance,g=a.appendInitialChild,h=a.finalizeInitialChildren,k=a.prepareUpdate,q=a.persistence,v=b.getRootHostContainer,y=b.popHostContext,u=b.getHostContext,z=b.popHostContainer,G=c.prepareToHydrateHostInstance,I=c.prepareToHydrateHostTextInstance,L=c.popHydrationState,N=void 0,J=void 0,w=void 0;a.mutation?(N=function(){},J=function(a,b,c){(b.updateQueue=c)&&d(b)},w=function(a,b,c,e){c!==e&&d(b)}):q?E(\"235\"):E(\"236\");\nreturn{completeWork:function(a,b,c){var m=b.pendingProps;if(null===m)m=b.memoizedProps;else if(2147483647!==b.expirationTime||2147483647===c)b.pendingProps=null;switch(b.tag){case 1:return null;case 2:return ne(b),null;case 3:z(b);V(X,b);V(ie,b);m=b.stateNode;m.pendingContext&&(m.context=m.pendingContext,m.pendingContext=null);if(null===a||null===a.child)L(b),b.effectTag&=-3;N(b);return null;case 5:y(b);c=v();var A=b.type;if(null!==a&&null!=b.stateNode){var p=a.memoizedProps,q=b.stateNode,x=u();q=\nk(q,A,p,m,c,x);J(a,b,q,A,p,m,c);a.ref!==b.ref&&(b.effectTag|=128)}else{if(!m)return null===b.stateNode?E(\"166\"):void 0,null;a=u();if(L(b))G(b,c,a)&&d(b);else{a=e(A,m,c,a,b);a:for(p=b.child;null!==p;){if(5===p.tag||6===p.tag)g(a,p.stateNode);else if(4!==p.tag&&null!==p.child){p.child[\"return\"]=p;p=p.child;continue}if(p===b)break;for(;null===p.sibling;){if(null===p[\"return\"]||p[\"return\"]===b)break a;p=p[\"return\"]}p.sibling[\"return\"]=p[\"return\"];p=p.sibling}h(a,A,m,c)&&d(b);b.stateNode=a}null!==b.ref&&\n(b.effectTag|=128)}return null;case 6:if(a&&null!=b.stateNode)w(a,b,a.memoizedProps,m);else{if(\"string\"!==typeof m)return null===b.stateNode?E(\"166\"):void 0,null;a=v();c=u();L(b)?I(b)&&d(b):b.stateNode=f(m,a,c,b)}return null;case 7:(m=b.memoizedProps)?void 0:E(\"165\");b.tag=8;A=[];a:for((p=b.stateNode)&&(p[\"return\"]=b);null!==p;){if(5===p.tag||6===p.tag||4===p.tag)E(\"247\");else if(9===p.tag)A.push(p.type);else if(null!==p.child){p.child[\"return\"]=p;p=p.child;continue}for(;null===p.sibling;){if(null===\np[\"return\"]||p[\"return\"]===b)break a;p=p[\"return\"]}p.sibling[\"return\"]=p[\"return\"];p=p.sibling}p=m.handler;m=p(m.props,A);b.child=bf(b,null!==a?a.child:null,m,c);return b.child;case 8:return b.tag=7,null;case 9:return null;case 10:return null;case 4:return z(b),N(b),null;case 0:E(\"167\");default:E(\"156\")}}}}\nfunction ff(a,b){function c(a){var c=a.ref;if(null!==c)try{c(null)}catch(A){b(a,A)}}function d(a){\"function\"===typeof Ee&&Ee(a);switch(a.tag){case 2:c(a);var d=a.stateNode;if(\"function\"===typeof d.componentWillUnmount)try{d.props=a.memoizedProps,d.state=a.memoizedState,d.componentWillUnmount()}catch(A){b(a,A)}break;case 5:c(a);break;case 7:e(a.stateNode);break;case 4:k&&g(a)}}function e(a){for(var b=a;;)if(d(b),null===b.child||k&&4===b.tag){if(b===a)break;for(;null===b.sibling;){if(null===b[\"return\"]||\nb[\"return\"]===a)return;b=b[\"return\"]}b.sibling[\"return\"]=b[\"return\"];b=b.sibling}else b.child[\"return\"]=b,b=b.child}function f(a){return 5===a.tag||3===a.tag||4===a.tag}function g(a){for(var b=a,c=!1,f=void 0,g=void 0;;){if(!c){c=b[\"return\"];a:for(;;){null===c?E(\"160\"):void 0;switch(c.tag){case 5:f=c.stateNode;g=!1;break a;case 3:f=c.stateNode.containerInfo;g=!0;break a;case 4:f=c.stateNode.containerInfo;g=!0;break a}c=c[\"return\"]}c=!0}if(5===b.tag||6===b.tag)e(b),g?J(f,b.stateNode):N(f,b.stateNode);\nelse if(4===b.tag?f=b.stateNode.containerInfo:d(b),null!==b.child){b.child[\"return\"]=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b[\"return\"]||b[\"return\"]===a)return;b=b[\"return\"];4===b.tag&&(c=!1)}b.sibling[\"return\"]=b[\"return\"];b=b.sibling}}var h=a.getPublicInstance,k=a.mutation;a=a.persistence;k||(a?E(\"235\"):E(\"236\"));var q=k.commitMount,v=k.commitUpdate,y=k.resetTextContent,u=k.commitTextUpdate,z=k.appendChild,G=k.appendChildToContainer,I=k.insertBefore,L=k.insertInContainerBefore,\nN=k.removeChild,J=k.removeChildFromContainer;return{commitResetTextContent:function(a){y(a.stateNode)},commitPlacement:function(a){a:{for(var b=a[\"return\"];null!==b;){if(f(b)){var c=b;break a}b=b[\"return\"]}E(\"160\");c=void 0}var d=b=void 0;switch(c.tag){case 5:b=c.stateNode;d=!1;break;case 3:b=c.stateNode.containerInfo;d=!0;break;case 4:b=c.stateNode.containerInfo;d=!0;break;default:E(\"161\")}c.effectTag&16&&(y(b),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c[\"return\"]||f(c[\"return\"])){c=\nnull;break a}c=c[\"return\"]}c.sibling[\"return\"]=c[\"return\"];for(c=c.sibling;5!==c.tag&&6!==c.tag;){if(c.effectTag&2)continue b;if(null===c.child||4===c.tag)continue b;else c.child[\"return\"]=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}for(var e=a;;){if(5===e.tag||6===e.tag)c?d?L(b,e.stateNode,c):I(b,e.stateNode,c):d?G(b,e.stateNode):z(b,e.stateNode);else if(4!==e.tag&&null!==e.child){e.child[\"return\"]=e;e=e.child;continue}if(e===a)break;for(;null===e.sibling;){if(null===e[\"return\"]||e[\"return\"]===\na)return;e=e[\"return\"]}e.sibling[\"return\"]=e[\"return\"];e=e.sibling}},commitDeletion:function(a){g(a);a[\"return\"]=null;a.child=null;a.alternate&&(a.alternate.child=null,a.alternate[\"return\"]=null)},commitWork:function(a,b){switch(b.tag){case 2:break;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps;a=null!==a?a.memoizedProps:d;var e=b.type,f=b.updateQueue;b.updateQueue=null;null!==f&&v(c,f,e,a,d,b)}break;case 6:null===b.stateNode?E(\"162\"):void 0;c=b.memoizedProps;u(b.stateNode,null!==a?a.memoizedProps:\nc,c);break;case 3:break;default:E(\"163\")}},commitLifeCycles:function(a,b){switch(b.tag){case 2:var c=b.stateNode;if(b.effectTag&4)if(null===a)c.props=b.memoizedProps,c.state=b.memoizedState,c.componentDidMount();else{var d=a.memoizedProps;a=a.memoizedState;c.props=b.memoizedProps;c.state=b.memoizedState;c.componentDidUpdate(d,a)}b=b.updateQueue;null!==b&&Ke(b,c);break;case 3:c=b.updateQueue;null!==c&&Ke(c,null!==b.child?b.child.stateNode:null);break;case 5:c=b.stateNode;null===a&&b.effectTag&4&&q(c,\nb.type,b.memoizedProps,b);break;case 6:break;case 4:break;default:E(\"163\")}},commitAttachRef:function(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:b(h(c));break;default:b(c)}}},commitDetachRef:function(a){a=a.ref;null!==a&&a(null)}}}var gf={};\nfunction hf(a){function b(a){a===gf?E(\"174\"):void 0;return a}var c=a.getChildHostContext,d=a.getRootHostContext,e={current:gf},f={current:gf},g={current:gf};return{getHostContext:function(){return b(e.current)},getRootHostContainer:function(){return b(g.current)},popHostContainer:function(a){V(e,a);V(f,a);V(g,a)},popHostContext:function(a){f.current===a&&(V(e,a),V(f,a))},pushHostContainer:function(a,b){W(g,b,a);b=d(b);W(f,a,a);W(e,b,a)},pushHostContext:function(a){var d=b(g.current),h=b(e.current);\nd=c(h,a.type,d);h!==d&&(W(f,a,a),W(e,d,a))},resetHostContainer:function(){e.current=gf;g.current=gf}}}\nfunction jf(a){function b(a,b){var c=new Y(5,null,0);c.type=\"DELETED\";c.stateNode=b;c[\"return\"]=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function c(a,b){switch(a.tag){case 5:return b=f(b,a.type,a.pendingProps),null!==b?(a.stateNode=b,!0):!1;case 6:return b=g(b,a.pendingProps),null!==b?(a.stateNode=b,!0):!1;default:return!1}}function d(a){for(a=a[\"return\"];null!==a&&5!==a.tag&&3!==a.tag;)a=a[\"return\"];y=a}var e=a.shouldSetTextContent;\na=a.hydration;if(!a)return{enterHydrationState:function(){return!1},resetHydrationState:function(){},tryToClaimNextHydratableInstance:function(){},prepareToHydrateHostInstance:function(){E(\"175\")},prepareToHydrateHostTextInstance:function(){E(\"176\")},popHydrationState:function(){return!1}};var f=a.canHydrateInstance,g=a.canHydrateTextInstance,h=a.getNextHydratableSibling,k=a.getFirstHydratableChild,q=a.hydrateInstance,v=a.hydrateTextInstance,y=null,u=null,z=!1;return{enterHydrationState:function(a){u=\nk(a.stateNode.containerInfo);y=a;return z=!0},resetHydrationState:function(){u=y=null;z=!1},tryToClaimNextHydratableInstance:function(a){if(z){var d=u;if(d){if(!c(a,d)){d=h(d);if(!d||!c(a,d)){a.effectTag|=2;z=!1;y=a;return}b(y,u)}y=a;u=k(d)}else a.effectTag|=2,z=!1,y=a}},prepareToHydrateHostInstance:function(a,b,c){b=q(a.stateNode,a.type,a.memoizedProps,b,c,a);a.updateQueue=b;return null!==b?!0:!1},prepareToHydrateHostTextInstance:function(a){return v(a.stateNode,a.memoizedProps,a)},popHydrationState:function(a){if(a!==\ny)return!1;if(!z)return d(a),z=!0,!1;var c=a.type;if(5!==a.tag||\"head\"!==c&&\"body\"!==c&&!e(c,a.memoizedProps))for(c=u;c;)b(a,c),c=h(c);d(a);u=y?h(a.stateNode):null;return!0}}}\nfunction kf(a){function b(a){Qb=ja=!0;var b=a.stateNode;b.current===a?E(\"177\"):void 0;b.isReadyForCommit=!1;id.current=null;if(1g.expirationTime)&&(f=g.expirationTime),g=g.sibling;e.expirationTime=f}if(null!==b)return b;null!==c&&(null===c.firstEffect&&(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1a))if(H<=Uc)for(;null!==F;)F=k(F)?e(F):d(F);else for(;null!==F&&!A();)F=k(F)?e(F):d(F)}else if(!(0===H||H>a))if(H<=Uc)for(;null!==F;)F=d(F);else for(;null!==F&&!A();)F=d(F)}function g(a,b){ja?E(\"243\"):void 0;ja=!0;a.isReadyForCommit=\n!1;if(a!==ra||b!==H||null===F){for(;-1b)a.expirationTime=b;null!==a.alternate&&(0===a.alternate.expirationTime||a.alternate.expirationTime>b)&&(a.alternate.expirationTime=b);if(null===a[\"return\"])if(3===a.tag){var c=a.stateNode;!ja&&c===ra&&bIg&&E(\"185\");if(null===d.nextScheduledRoot)d.remainingExpirationTime=e,null===O?(sa=O=d,d.nextScheduledRoot=d):(O=O.nextScheduledRoot=d,O.nextScheduledRoot=sa);else{var f=d.remainingExpirationTime;if(0===f||eTb)return;Jg(Xc)}var b=Wc()-Pe;Tb=a;Xc=Kg(J,{timeout:10*(a-2)-b})}function N(){var a=0,b=null;if(null!==O)for(var c=O,d=sa;null!==d;){var e=d.remainingExpirationTime;if(0===e){null===c||null===O?E(\"244\"):void 0;if(d===d.nextScheduledRoot){sa=O=d.nextScheduledRoot=null;break}else if(d===sa)sa=e=d.nextScheduledRoot,\nO.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===O){O=c;O.nextScheduledRoot=sa;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=null;d=c.nextScheduledRoot}else{if(0===a||eLg?!1:Yc=!0}function Ob(a){null===ma?E(\"246\"):\nvoid 0;ma.remainingExpirationTime=0;Ub||(Ub=!0,Zc=a)}var r=hf(a),n=jf(a),p=r.popHostContainer,qg=r.popHostContext,x=r.resetHostContainer,Me=df(a,r,n,u,y),rg=Me.beginWork,Gg=Me.beginFailedWork,Fg=ef(a,r,n).completeWork;r=ff(a,h);var zg=r.commitResetTextContent,Ne=r.commitPlacement,Bg=r.commitDeletion,Oe=r.commitWork,Dg=r.commitLifeCycles,Eg=r.commitAttachRef,Ag=r.commitDetachRef,Wc=a.now,Kg=a.scheduleDeferredCallback,Jg=a.cancelDeferredCallback,Hg=a.useSyncScheduling,yg=a.prepareForCommit,Cg=a.resetAfterCommit,\nPe=Wc(),Uc=2,ka=0,ja=!1,F=null,ra=null,H=0,t=null,R=null,qa=null,ha=null,ca=null,eb=!1,Qb=!1,Sc=!1,sa=null,O=null,Tb=0,Xc=-1,Fa=!1,ma=null,na=0,Yc=!1,Ub=!1,Zc=null,fb=null,la=!1,Sb=!1,Ig=1E3,Rb=0,Lg=1;return{computeAsyncExpiration:v,computeExpirationForFiber:y,scheduleWork:u,batchedUpdates:function(a,b){var c=la;la=!0;try{return a(b)}finally{(la=c)||Fa||w(1,null)}},unbatchedUpdates:function(a){if(la&&!Sb){Sb=!0;try{return a()}finally{Sb=!1}}return a()},flushSync:function(a){var b=la;la=!0;try{a:{var c=\nka;ka=1;try{var d=a();break a}finally{ka=c}d=void 0}return d}finally{la=b,Fa?E(\"187\"):void 0,w(1,null)}},deferredUpdates:function(a){var b=ka;ka=v();try{return a()}finally{ka=b}}}}\nfunction lf(a){function b(a){a=od(a);return null===a?null:a.stateNode}var c=a.getPublicInstance;a=kf(a);var d=a.computeAsyncExpiration,e=a.computeExpirationForFiber,f=a.scheduleWork;return{createContainer:function(a,b){var c=new Y(3,null,0);a={current:c,containerInfo:a,pendingChildren:null,remainingExpirationTime:0,isReadyForCommit:!1,finishedWork:null,context:null,pendingContext:null,hydrate:b,nextScheduledRoot:null};return c.stateNode=a},updateContainer:function(a,b,c,q){var g=b.current;if(c){c=\nc._reactInternalFiber;var h;b:{2===kd(c)&&2===c.tag?void 0:E(\"170\");for(h=c;3!==h.tag;){if(le(h)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}(h=h[\"return\"])?void 0:E(\"171\")}h=h.stateNode.context}c=le(c)?pe(c,h):h}else c=D;null===b.context?b.context=c:b.pendingContext=c;b=q;b=void 0===b?null:b;q=null!=a&&null!=a.type&&null!=a.type.prototype&&!0===a.type.prototype.unstable_isAsyncReactComponent?d():e(g);He(g,{expirationTime:q,partialState:{element:a},callback:b,isReplace:!1,isForced:!1,\nnextCallback:null,next:null});f(g,q)},batchedUpdates:a.batchedUpdates,unbatchedUpdates:a.unbatchedUpdates,deferredUpdates:a.deferredUpdates,flushSync:a.flushSync,getPublicRootInstance:function(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return c(a.child.stateNode);default:return a.child.stateNode}},findHostInstance:b,findHostInstanceWithNoPortals:function(a){a=pd(a);return null===a?null:a.stateNode},injectIntoDevTools:function(a){var c=a.findFiberByHostInstance;return Ce(B({},\na,{findHostInstanceByFiber:function(a){return b(a)},findFiberByHostInstance:function(a){return c?c(a):null}}))}}}var mf=Object.freeze({default:lf}),nf=mf&&lf||mf,of=nf[\"default\"]?nf[\"default\"]:nf;function pf(a,b,c){var d=3=yf-a)if(-1!==wf&&wf<=\na)Bf.didTimeout=!0;else{xf||(xf=!0,requestAnimationFrame(Df));return}else Bf.didTimeout=!1;wf=-1;a=uf;uf=null;null!==a&&a(Bf)}},!1);var Df=function(a){xf=!1;var b=a-yf+Af;bb&&(b=8),Af=bc||d.hasOverloadedBooleanValue&&!1===c?Jf(a,b):d.mustUseProperty?a[d.propertyName]=c:(b=d.attributeName,(e=d.attributeNamespace)?a.setAttributeNS(e,b,\"\"+c):d.hasBooleanValue||d.hasOverloadedBooleanValue&&!0===c?a.setAttribute(b,\"\"):a.setAttribute(b,\"\"+c))}else Kf(a,b,va(b,c)?c:null)}\nfunction Kf(a,b,c){Hf(b)&&(null==c?a.removeAttribute(b):a.setAttribute(b,\"\"+c))}function Jf(a,b){var c=wa(b);c?(b=c.mutationMethod)?b(a,void 0):c.mustUseProperty?a[c.propertyName]=c.hasBooleanValue?!1:\"\":a.removeAttribute(c.attributeName):a.removeAttribute(b)}\nfunction Lf(a,b){var c=b.value,d=b.checked;return B({type:void 0,step:void 0,min:void 0,max:void 0},b,{defaultChecked:void 0,defaultValue:void 0,value:null!=c?c:a._wrapperState.initialValue,checked:null!=d?d:a._wrapperState.initialChecked})}function Mf(a,b){var c=b.defaultValue;a._wrapperState={initialChecked:null!=b.checked?b.checked:b.defaultChecked,initialValue:null!=b.value?b.value:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}\nfunction Nf(a,b){b=b.checked;null!=b&&If(a,\"checked\",b)}function Of(a,b){Nf(a,b);var c=b.value;if(null!=c)if(0===c&&\"\"===a.value)a.value=\"0\";else if(\"number\"===b.type){if(b=parseFloat(a.value)||0,c!=b||c==b&&a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else null==b.value&&null!=b.defaultValue&&a.defaultValue!==\"\"+b.defaultValue&&(a.defaultValue=\"\"+b.defaultValue),null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Pf(a,b){switch(b.type){case \"submit\":case \"reset\":break;case \"color\":case \"date\":case \"datetime\":case \"datetime-local\":case \"month\":case \"time\":case \"week\":a.value=\"\";a.value=a.defaultValue;break;default:a.value=a.value}b=a.name;\"\"!==b&&(a.name=\"\");a.defaultChecked=!a.defaultChecked;a.defaultChecked=!a.defaultChecked;\"\"!==b&&(a.name=b)}function Qf(a){var b=\"\";aa.Children.forEach(a,function(a){null==a||\"string\"!==typeof a&&\"number\"!==typeof a||(b+=a)});return b}\nfunction Rf(a,b){a=B({children:void 0},b);if(b=Qf(b.children))a.children=b;return a}function Sf(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=b.length?void 0:E(\"93\"),b=b[0]),c=\"\"+b),null==c&&(c=\"\"));a._wrapperState={initialValue:\"\"+c}}\nfunction Wf(a,b){var c=b.value;null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&(a.defaultValue=c));null!=b.defaultValue&&(a.defaultValue=b.defaultValue)}function Xf(a){var b=a.textContent;b===a._wrapperState.initialValue&&(a.value=b)}var Yf={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Zf(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function $f(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Zf(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar ag=void 0,bg=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Yf.svg||\"innerHTML\"in a)a.innerHTML=b;else{ag=ag||document.createElement(\"div\");ag.innerHTML=\"\\x3csvg\\x3e\"+b+\"\\x3c/svg\\x3e\";for(b=ag.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction cg(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar dg={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,\nstopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},eg=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(dg).forEach(function(a){eg.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);dg[b]=dg[a]})});\nfunction fg(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\");var e=c;var f=b[c];e=null==f||\"boolean\"===typeof f||\"\"===f?\"\":d||\"number\"!==typeof f||0===f||dg.hasOwnProperty(e)&&dg[e]?(\"\"+f).trim():f+\"px\";\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var gg=B({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction hg(a,b,c){b&&(gg[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?E(\"137\",a,c()):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?E(\"60\"):void 0,\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML?void 0:E(\"61\")),null!=b.style&&\"object\"!==typeof b.style?E(\"62\",c()):void 0)}\nfunction ig(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var jg=Yf.html,kg=C.thatReturns(\"\");\nfunction lg(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Hd(a);b=Sa[b];for(var d=0;d\nd&&(e=d,d=a,a=e);e=Jd(c,a);var f=Jd(c,d);if(e&&f&&(1!==b.rangeCount||b.anchorNode!==e.node||b.anchorOffset!==e.offset||b.focusNode!==f.node||b.focusOffset!==f.offset)){var g=document.createRange();g.setStart(e.node,e.offset);b.removeAllRanges();a>d?(b.addRange(g),b.extend(f.node,f.offset)):(g.setEnd(f.node,f.offset),b.addRange(g))}}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});ia(c);for(c=0;c capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\n// `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nvar scope = typeof global !== \"undefined\" ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\n// MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nif (typeof BrowserMutationObserver === \"function\") {\n requestFlush = makeRequestCallFromMutationObserver(flush);\n\n// MessageChannels are desirable because they give direct access to the HTML\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n}\n\n// `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\nrawAsap.requestFlush = requestFlush;\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode(\"\");\n observer.observe(node, {characterData: true});\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/asap/browser-raw.js\n// module id = 8\n// module chunks = 0","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\n} catch(e) {\n\t// This works if the window reference is available\n\tif(typeof window === \"object\")\n\t\tg = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 9\n// module chunks = 0","'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n var p = new Promise(Promise._44);\n p._83 = 1;\n p._18 = value;\n return p;\n}\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value;\n\n if (value === null) return NULL;\n if (value === undefined) return UNDEFINED;\n if (value === true) return TRUE;\n if (value === false) return FALSE;\n if (value === 0) return ZERO;\n if (value === '') return EMPTYSTRING;\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(value));\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n }\n }\n return valuePromise(value);\n};\n\nPromise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n if (val instanceof Promise && val.then === Promise.prototype.then) {\n while (val._83 === 3) {\n val = val._18;\n }\n if (val._83 === 1) return res(i, val._18);\n if (val._83 === 2) reject(val._18);\n val.then(function (val) {\n res(i, val);\n }, reject);\n return;\n } else {\n var then = val.then;\n if (typeof then === 'function') {\n var p = new Promise(then.bind(val));\n p.then(function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) {\n values.forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n });\n });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/promise/lib/es6-extensions.js\n// module id = 10\n// module chunks = 0","(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/whatwg-fetch/fetch.js\n// module id = 11\n// module chunks = 0","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\n\nReactDOM.render(, document.getElementById('root'));\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","/** @license React v16.2.0\n * react.production.min.js\n *\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var m=require(\"object-assign\"),n=require(\"fbjs/lib/emptyObject\"),p=require(\"fbjs/lib/emptyFunction\"),q=\"function\"===typeof Symbol&&Symbol[\"for\"],r=q?Symbol[\"for\"](\"react.element\"):60103,t=q?Symbol[\"for\"](\"react.call\"):60104,u=q?Symbol[\"for\"](\"react.return\"):60105,v=q?Symbol[\"for\"](\"react.portal\"):60106,w=q?Symbol[\"for\"](\"react.fragment\"):60107,x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){for(var b=arguments.length-1,e=\"Minified React error #\"+a+\"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant\\x3d\"+a,c=0;cM.length&&M.push(a)}\nfunction P(a,b,e,c){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case r:case t:case u:case v:g=!0}}if(g)return e(c,a,\"\"===b?\".\"+Q(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k=g.hasBooleanValue+g.hasNumericValue+g.hasOverloadedBooleanValue?void 0:E(\"50\",f);e.hasOwnProperty(f)&&(g.attributeName=e[f]);d.hasOwnProperty(f)&&(g.attributeNamespace=d[f]);a.hasOwnProperty(f)&&(g.mutationMethod=a[f]);ua[f]=g}}},ua={};\nfunction va(a,b){if(oa.hasOwnProperty(a)||2this.eventPool.length&&this.eventPool.push(a)}function Jb(a){a.eventPool=[];a.getPooled=Kb;a.release=Lb}function Mb(a,b,c,d){return T.call(this,a,b,c,d)}T.augmentClass(Mb,{data:null});function Nb(a,b,c,d){return T.call(this,a,b,c,d)}T.augmentClass(Nb,{data:null});var Pb=[9,13,27,32],Vb=l.canUseDOM&&\"CompositionEvent\"in window,Wb=null;l.canUseDOM&&\"documentMode\"in document&&(Wb=document.documentMode);var Xb;\nif(Xb=l.canUseDOM&&\"TextEvent\"in window&&!Wb){var Yb=window.opera;Xb=!(\"object\"===typeof Yb&&\"function\"===typeof Yb.version&&12>=parseInt(Yb.version(),10))}\nvar Zb=Xb,$b=l.canUseDOM&&(!Vb||Wb&&8=Wb),ac=String.fromCharCode(32),bc={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"topCompositionEnd\",\"topKeyPress\",\"topTextInput\",\"topPaste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"topBlur topCompositionEnd topKeyDown topKeyPress topKeyUp topMouseDown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"topBlur topCompositionStart topKeyDown topKeyPress topKeyUp topMouseDown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"topBlur topCompositionUpdate topKeyDown topKeyPress topKeyUp topMouseDown\".split(\" \")}},cc=!1;\nfunction dc(a,b){switch(a){case \"topKeyUp\":return-1!==Pb.indexOf(b.keyCode);case \"topKeyDown\":return 229!==b.keyCode;case \"topKeyPress\":case \"topMouseDown\":case \"topBlur\":return!0;default:return!1}}function ec(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var fc=!1;function gc(a,b){switch(a){case \"topCompositionEnd\":return ec(b);case \"topKeyPress\":if(32!==b.which)return null;cc=!0;return ac;case \"topTextInput\":return a=b.data,a===ac&&cc?null:a;default:return null}}\nfunction hc(a,b){if(fc)return\"topCompositionEnd\"===a||!Vb&&dc(a,b)?(a=Fb(),S._root=null,S._startText=null,S._fallbackText=null,fc=!1,a):null;switch(a){case \"topPaste\":return null;case \"topKeyPress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1qd.length&&qd.push(a)}}}\nvar xd=Object.freeze({get _enabled(){return td},get _handleTopLevel(){return sd},setHandleTopLevel:function(a){sd=a},setEnabled:ud,isEnabled:function(){return td},trapBubbledEvent:U,trapCapturedEvent:wd,dispatchEvent:vd});function yd(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;c[\"ms\"+a]=\"MS\"+b;c[\"O\"+a]=\"o\"+b.toLowerCase();return c}\nvar zd={animationend:yd(\"Animation\",\"AnimationEnd\"),animationiteration:yd(\"Animation\",\"AnimationIteration\"),animationstart:yd(\"Animation\",\"AnimationStart\"),transitionend:yd(\"Transition\",\"TransitionEnd\")},Ad={},Bd={};l.canUseDOM&&(Bd=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete zd.animationend.animation,delete zd.animationiteration.animation,delete zd.animationstart.animation),\"TransitionEvent\"in window||delete zd.transitionend.transition);\nfunction Cd(a){if(Ad[a])return Ad[a];if(!zd[a])return a;var b=zd[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Bd)return Ad[a]=b[c];return\"\"}\nvar Dd={topAbort:\"abort\",topAnimationEnd:Cd(\"animationend\")||\"animationend\",topAnimationIteration:Cd(\"animationiteration\")||\"animationiteration\",topAnimationStart:Cd(\"animationstart\")||\"animationstart\",topBlur:\"blur\",topCancel:\"cancel\",topCanPlay:\"canplay\",topCanPlayThrough:\"canplaythrough\",topChange:\"change\",topClick:\"click\",topClose:\"close\",topCompositionEnd:\"compositionend\",topCompositionStart:\"compositionstart\",topCompositionUpdate:\"compositionupdate\",topContextMenu:\"contextmenu\",topCopy:\"copy\",\ntopCut:\"cut\",topDoubleClick:\"dblclick\",topDrag:\"drag\",topDragEnd:\"dragend\",topDragEnter:\"dragenter\",topDragExit:\"dragexit\",topDragLeave:\"dragleave\",topDragOver:\"dragover\",topDragStart:\"dragstart\",topDrop:\"drop\",topDurationChange:\"durationchange\",topEmptied:\"emptied\",topEncrypted:\"encrypted\",topEnded:\"ended\",topError:\"error\",topFocus:\"focus\",topInput:\"input\",topKeyDown:\"keydown\",topKeyPress:\"keypress\",topKeyUp:\"keyup\",topLoadedData:\"loadeddata\",topLoad:\"load\",topLoadedMetadata:\"loadedmetadata\",topLoadStart:\"loadstart\",\ntopMouseDown:\"mousedown\",topMouseMove:\"mousemove\",topMouseOut:\"mouseout\",topMouseOver:\"mouseover\",topMouseUp:\"mouseup\",topPaste:\"paste\",topPause:\"pause\",topPlay:\"play\",topPlaying:\"playing\",topProgress:\"progress\",topRateChange:\"ratechange\",topScroll:\"scroll\",topSeeked:\"seeked\",topSeeking:\"seeking\",topSelectionChange:\"selectionchange\",topStalled:\"stalled\",topSuspend:\"suspend\",topTextInput:\"textInput\",topTimeUpdate:\"timeupdate\",topToggle:\"toggle\",topTouchCancel:\"touchcancel\",topTouchEnd:\"touchend\",topTouchMove:\"touchmove\",\ntopTouchStart:\"touchstart\",topTransitionEnd:Cd(\"transitionend\")||\"transitionend\",topVolumeChange:\"volumechange\",topWaiting:\"waiting\",topWheel:\"wheel\"},Ed={},Fd=0,Gd=\"_reactListenersID\"+(\"\"+Math.random()).slice(2);function Hd(a){Object.prototype.hasOwnProperty.call(a,Gd)||(a[Gd]=Fd++,Ed[a[Gd]]={});return Ed[a[Gd]]}function Id(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Jd(a,b){var c=Id(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Id(c)}}function Kd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&\"text\"===a.type||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Ld=l.canUseDOM&&\"documentMode\"in document&&11>=document.documentMode,Md={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"topBlur topContextMenu topFocus topKeyDown topKeyUp topMouseDown topMouseUp topSelectionChange\".split(\" \")}},Nd=null,Od=null,Pd=null,Qd=!1;\nfunction Rd(a,b){if(Qd||null==Nd||Nd!==da())return null;var c=Nd;\"selectionStart\"in c&&Kd(c)?c={start:c.selectionStart,end:c.selectionEnd}:window.getSelection?(c=window.getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}):c=void 0;return Pd&&ea(Pd,c)?null:(Pd=c,a=T.getPooled(Md.select,Od,a,b),a.type=\"select\",a.target=Nd,Ab(a),a)}\nvar Sd={eventTypes:Md,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=Hd(e);f=Sa.onSelect;for(var g=0;ghe||(a.current=ge[he],ge[he]=null,he--)}function W(a,b){he++;ge[he]=a.current;a.current=b}new Set;var ie={current:D},X={current:!1},je=D;function ke(a){return le(a)?je:ie.current}\nfunction me(a,b){var c=a.type.contextTypes;if(!c)return D;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function le(a){return 2===a.tag&&null!=a.type.childContextTypes}function ne(a){le(a)&&(V(X,a),V(ie,a))}\nfunction oe(a,b,c){null!=ie.cursor?E(\"168\"):void 0;W(ie,b,a);W(X,c,a)}function pe(a,b){var c=a.stateNode,d=a.type.childContextTypes;if(\"function\"!==typeof c.getChildContext)return b;c=c.getChildContext();for(var e in c)e in d?void 0:E(\"108\",jd(a)||\"Unknown\",e);return B({},b,c)}function qe(a){if(!le(a))return!1;var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||D;je=ie.current;W(ie,b,a);W(X,X.current,a);return!0}\nfunction re(a,b){var c=a.stateNode;c?void 0:E(\"169\");if(b){var d=pe(a,je);c.__reactInternalMemoizedMergedChildContext=d;V(X,a);V(ie,a);W(ie,d,a)}else V(X,a);W(X,b,a)}\nfunction Y(a,b,c){this.tag=a;this.key=b;this.stateNode=this.type=null;this.sibling=this.child=this[\"return\"]=null;this.index=0;this.memoizedState=this.updateQueue=this.memoizedProps=this.pendingProps=this.ref=null;this.internalContextTag=c;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.expirationTime=0;this.alternate=null}\nfunction se(a,b,c){var d=a.alternate;null===d?(d=new Y(a.tag,a.key,a.internalContextTag),d.type=a.type,d.stateNode=a.stateNode,d.alternate=a,a.alternate=d):(d.effectTag=0,d.nextEffect=null,d.firstEffect=null,d.lastEffect=null);d.expirationTime=c;d.pendingProps=b;d.child=a.child;d.memoizedProps=a.memoizedProps;d.memoizedState=a.memoizedState;d.updateQueue=a.updateQueue;d.sibling=a.sibling;d.index=a.index;d.ref=a.ref;return d}\nfunction te(a,b,c){var d=void 0,e=a.type,f=a.key;\"function\"===typeof e?(d=e.prototype&&e.prototype.isReactComponent?new Y(2,f,b):new Y(0,f,b),d.type=e,d.pendingProps=a.props):\"string\"===typeof e?(d=new Y(5,f,b),d.type=e,d.pendingProps=a.props):\"object\"===typeof e&&null!==e&&\"number\"===typeof e.tag?(d=e,d.pendingProps=a.props):E(\"130\",null==e?e:typeof e,\"\");d.expirationTime=c;return d}function ue(a,b,c,d){b=new Y(10,d,b);b.pendingProps=a;b.expirationTime=c;return b}\nfunction ve(a,b,c){b=new Y(6,null,b);b.pendingProps=a;b.expirationTime=c;return b}function we(a,b,c){b=new Y(7,a.key,b);b.type=a.handler;b.pendingProps=a;b.expirationTime=c;return b}function xe(a,b,c){a=new Y(9,null,b);a.expirationTime=c;return a}function ye(a,b,c){b=new Y(4,a.key,b);b.pendingProps=a.children||[];b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}var ze=null,Ae=null;\nfunction Be(a){return function(b){try{return a(b)}catch(c){}}}function Ce(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);ze=Be(function(a){return b.onCommitFiberRoot(c,a)});Ae=Be(function(a){return b.onCommitFiberUnmount(c,a)})}catch(d){}return!0}function De(a){\"function\"===typeof ze&&ze(a)}function Ee(a){\"function\"===typeof Ae&&Ae(a)}\nfunction Fe(a){return{baseState:a,expirationTime:0,first:null,last:null,callbackList:null,hasForceUpdate:!1,isInitialized:!1}}function Ge(a,b){null===a.last?a.first=a.last=b:(a.last.next=b,a.last=b);if(0===a.expirationTime||a.expirationTime>b.expirationTime)a.expirationTime=b.expirationTime}\nfunction He(a,b){var c=a.alternate,d=a.updateQueue;null===d&&(d=a.updateQueue=Fe(null));null!==c?(a=c.updateQueue,null===a&&(a=c.updateQueue=Fe(null))):a=null;a=a!==d?a:null;null===a?Ge(d,b):null===d.last||null===a.last?(Ge(d,b),Ge(a,b)):(Ge(d,b),a.last=b)}function Ie(a,b,c,d){a=a.partialState;return\"function\"===typeof a?a.call(b,c,d):a}\nfunction Je(a,b,c,d,e,f){null!==a&&a.updateQueue===c&&(c=b.updateQueue={baseState:c.baseState,expirationTime:c.expirationTime,first:c.first,last:c.last,isInitialized:c.isInitialized,callbackList:null,hasForceUpdate:!1});c.expirationTime=0;c.isInitialized?a=c.baseState:(a=c.baseState=b.memoizedState,c.isInitialized=!0);for(var g=!0,h=c.first,k=!1;null!==h;){var q=h.expirationTime;if(q>f){var v=c.expirationTime;if(0===v||v>q)c.expirationTime=q;k||(k=!0,c.baseState=a)}else{k||(c.first=h.next,null===\nc.first&&(c.last=null));if(h.isReplace)a=Ie(h,d,a,e),g=!0;else if(q=Ie(h,d,a,e))a=g?B({},a,q):B(a,q),g=!1;h.isForced&&(c.hasForceUpdate=!0);null!==h.callback&&(q=c.callbackList,null===q&&(q=c.callbackList=[]),q.push(h))}h=h.next}null!==c.callbackList?b.effectTag|=32:null!==c.first||c.hasForceUpdate||(b.updateQueue=null);k||(c.baseState=a);return a}\nfunction Ke(a,b){var c=a.callbackList;if(null!==c)for(a.callbackList=null,a=0;aw?(k=n,n=null):k=n.sibling;var x=G(e,n,m[w],A);if(null===x){null===n&&(n=k);break}a&&n&&null===x.alternate&&b(e,n);g=f(x,g,w);null===r?h=x:r.sibling=x;r=x;n=k}if(w===m.length)return c(e,n),h;if(null===n){for(;ww?(k=n,n=null):k=n.sibling;var J=G(e,n,x.value,A);if(null===J){n||(n=k);break}a&&n&&null===J.alternate&&b(e,n);g=f(J,\ng,w);null===r?h=J:r.sibling=J;r=J;n=k}if(x.done)return c(e,n),h;if(null===n){for(;!x.done;w++,x=m.next())x=z(e,x.value,A),null!==x&&(g=f(x,g,w),null===r?h=x:r.sibling=x,r=x);return h}for(n=d(e,n);!x.done;w++,x=m.next())if(x=I(n,e,w,x.value,A),null!==x){if(a&&null!==x.alternate)n[\"delete\"](null===x.key?w:x.key);g=f(x,g,w);null===r?h=x:r.sibling=x;r=x}a&&n.forEach(function(a){return b(e,a)});return h}return function(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===Ve&&null===f.key&&(f=f.props.children);\nvar m=\"object\"===typeof f&&null!==f;if(m)switch(f.$$typeof){case Re:a:{var r=f.key;for(m=d;null!==m;){if(m.key===r)if(10===m.tag?f.type===Ve:m.type===f.type){c(a,m.sibling);d=e(m,f.type===Ve?f.props.children:f.props,h);d.ref=Ze(m,f);d[\"return\"]=a;a=d;break a}else{c(a,m);break}else b(a,m);m=m.sibling}f.type===Ve?(d=ue(f.props.children,a.internalContextTag,h,f.key),d[\"return\"]=a,a=d):(h=te(f,a.internalContextTag,h),h.ref=Ze(d,f),h[\"return\"]=a,a=h)}return g(a);case Se:a:{for(m=f.key;null!==d;){if(d.key===\nm)if(7===d.tag){c(a,d.sibling);d=e(d,f,h);d[\"return\"]=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=we(f,a.internalContextTag,h);d[\"return\"]=a;a=d}return g(a);case Te:a:{if(null!==d)if(9===d.tag){c(a,d.sibling);d=e(d,null,h);d.type=f.value;d[\"return\"]=a;a=d;break a}else c(a,d);d=xe(f,a.internalContextTag,h);d.type=f.value;d[\"return\"]=a;a=d}return g(a);case Ue:a:{for(m=f.key;null!==d;){if(d.key===m)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===\nf.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d[\"return\"]=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=ye(f,a.internalContextTag,h);d[\"return\"]=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h)):(c(a,d),d=ve(f,a.internalContextTag,h)),d[\"return\"]=a,a=d,g(a);if(Ye(f))return L(a,d,f,h);if(Xe(f))return N(a,d,f,h);m&&$e(a,f);if(\"undefined\"===typeof f)switch(a.tag){case 2:case 1:h=a.type,E(\"152\",h.displayName||\nh.name||\"Component\")}return c(a,d)}}var bf=af(!0),cf=af(!1);\nfunction df(a,b,c,d,e){function f(a,b,c){var d=b.expirationTime;b.child=null===a?cf(b,null,c,d):bf(b,a.child,c,d)}function g(a,b){var c=b.ref;null===c||a&&a.ref===c||(b.effectTag|=128)}function h(a,b,c,d){g(a,b);if(!c)return d&&re(b,!1),q(a,b);c=b.stateNode;id.current=b;var e=c.render();b.effectTag|=1;f(a,b,e);b.memoizedState=c.state;b.memoizedProps=c.props;d&&re(b,!0);return b.child}function k(a){var b=a.stateNode;b.pendingContext?oe(a,b.pendingContext,b.pendingContext!==b.context):b.context&&oe(a,\nb.context,!1);I(a,b.containerInfo)}function q(a,b){null!==a&&b.child!==a.child?E(\"153\"):void 0;if(null!==b.child){a=b.child;var c=se(a,a.pendingProps,a.expirationTime);b.child=c;for(c[\"return\"]=b;null!==a.sibling;)a=a.sibling,c=c.sibling=se(a,a.pendingProps,a.expirationTime),c[\"return\"]=b;c.sibling=null}return b.child}function v(a,b){switch(b.tag){case 3:k(b);break;case 2:qe(b);break;case 4:I(b,b.stateNode.containerInfo)}return null}var y=a.shouldSetTextContent,u=a.useSyncScheduling,z=a.shouldDeprioritizeSubtree,\nG=b.pushHostContext,I=b.pushHostContainer,L=c.enterHydrationState,N=c.resetHydrationState,J=c.tryToClaimNextHydratableInstance;a=Le(d,e,function(a,b){a.memoizedProps=b},function(a,b){a.memoizedState=b});var w=a.adoptClassInstance,m=a.constructClassInstance,A=a.mountClassInstance,Ob=a.updateClassInstance;return{beginWork:function(a,b,c){if(0===b.expirationTime||b.expirationTime>c)return v(a,b);switch(b.tag){case 0:null!==a?E(\"155\"):void 0;var d=b.type,e=b.pendingProps,r=ke(b);r=me(b,r);d=d(e,r);b.effectTag|=\n1;\"object\"===typeof d&&null!==d&&\"function\"===typeof d.render?(b.tag=2,e=qe(b),w(b,d),A(b,c),b=h(a,b,!0,e)):(b.tag=1,f(a,b,d),b.memoizedProps=e,b=b.child);return b;case 1:a:{e=b.type;c=b.pendingProps;d=b.memoizedProps;if(X.current)null===c&&(c=d);else if(null===c||d===c){b=q(a,b);break a}d=ke(b);d=me(b,d);e=e(c,d);b.effectTag|=1;f(a,b,e);b.memoizedProps=c;b=b.child}return b;case 2:return e=qe(b),d=void 0,null===a?b.stateNode?E(\"153\"):(m(b,b.pendingProps),A(b,c),d=!0):d=Ob(a,b,c),h(a,b,d,e);case 3:return k(b),\ne=b.updateQueue,null!==e?(d=b.memoizedState,e=Je(a,b,e,null,null,c),d===e?(N(),b=q(a,b)):(d=e.element,r=b.stateNode,(null===a||null===a.child)&&r.hydrate&&L(b)?(b.effectTag|=2,b.child=cf(b,null,d,c)):(N(),f(a,b,d)),b.memoizedState=e,b=b.child)):(N(),b=q(a,b)),b;case 5:G(b);null===a&&J(b);e=b.type;var n=b.memoizedProps;d=b.pendingProps;null===d&&(d=n,null===d?E(\"154\"):void 0);r=null!==a?a.memoizedProps:null;X.current||null!==d&&n!==d?(n=d.children,y(e,d)?n=null:r&&y(e,r)&&(b.effectTag|=16),g(a,b),\n2147483647!==c&&!u&&z(e,d)?(b.expirationTime=2147483647,b=null):(f(a,b,n),b.memoizedProps=d,b=b.child)):b=q(a,b);return b;case 6:return null===a&&J(b),a=b.pendingProps,null===a&&(a=b.memoizedProps),b.memoizedProps=a,null;case 8:b.tag=7;case 7:e=b.pendingProps;if(X.current)null===e&&(e=a&&a.memoizedProps,null===e?E(\"154\"):void 0);else if(null===e||b.memoizedProps===e)e=b.memoizedProps;d=e.children;b.stateNode=null===a?cf(b,b.stateNode,d,c):bf(b,b.stateNode,d,c);b.memoizedProps=e;return b.stateNode;\ncase 9:return null;case 4:a:{I(b,b.stateNode.containerInfo);e=b.pendingProps;if(X.current)null===e&&(e=a&&a.memoizedProps,null==e?E(\"154\"):void 0);else if(null===e||b.memoizedProps===e){b=q(a,b);break a}null===a?b.child=bf(b,null,e,c):f(a,b,e);b.memoizedProps=e;b=b.child}return b;case 10:a:{c=b.pendingProps;if(X.current)null===c&&(c=b.memoizedProps);else if(null===c||b.memoizedProps===c){b=q(a,b);break a}f(a,b,c);b.memoizedProps=c;b=b.child}return b;default:E(\"156\")}},beginFailedWork:function(a,b,\nc){switch(b.tag){case 2:qe(b);break;case 3:k(b);break;default:E(\"157\")}b.effectTag|=64;null===a?b.child=null:b.child!==a.child&&(b.child=a.child);if(0===b.expirationTime||b.expirationTime>c)return v(a,b);b.firstEffect=null;b.lastEffect=null;b.child=null===a?cf(b,null,null,c):bf(b,a.child,null,c);2===b.tag&&(a=b.stateNode,b.memoizedProps=a.props,b.memoizedState=a.state);return b.child}}}\nfunction ef(a,b,c){function d(a){a.effectTag|=4}var e=a.createInstance,f=a.createTextInstance,g=a.appendInitialChild,h=a.finalizeInitialChildren,k=a.prepareUpdate,q=a.persistence,v=b.getRootHostContainer,y=b.popHostContext,u=b.getHostContext,z=b.popHostContainer,G=c.prepareToHydrateHostInstance,I=c.prepareToHydrateHostTextInstance,L=c.popHydrationState,N=void 0,J=void 0,w=void 0;a.mutation?(N=function(){},J=function(a,b,c){(b.updateQueue=c)&&d(b)},w=function(a,b,c,e){c!==e&&d(b)}):q?E(\"235\"):E(\"236\");\nreturn{completeWork:function(a,b,c){var m=b.pendingProps;if(null===m)m=b.memoizedProps;else if(2147483647!==b.expirationTime||2147483647===c)b.pendingProps=null;switch(b.tag){case 1:return null;case 2:return ne(b),null;case 3:z(b);V(X,b);V(ie,b);m=b.stateNode;m.pendingContext&&(m.context=m.pendingContext,m.pendingContext=null);if(null===a||null===a.child)L(b),b.effectTag&=-3;N(b);return null;case 5:y(b);c=v();var A=b.type;if(null!==a&&null!=b.stateNode){var p=a.memoizedProps,q=b.stateNode,x=u();q=\nk(q,A,p,m,c,x);J(a,b,q,A,p,m,c);a.ref!==b.ref&&(b.effectTag|=128)}else{if(!m)return null===b.stateNode?E(\"166\"):void 0,null;a=u();if(L(b))G(b,c,a)&&d(b);else{a=e(A,m,c,a,b);a:for(p=b.child;null!==p;){if(5===p.tag||6===p.tag)g(a,p.stateNode);else if(4!==p.tag&&null!==p.child){p.child[\"return\"]=p;p=p.child;continue}if(p===b)break;for(;null===p.sibling;){if(null===p[\"return\"]||p[\"return\"]===b)break a;p=p[\"return\"]}p.sibling[\"return\"]=p[\"return\"];p=p.sibling}h(a,A,m,c)&&d(b);b.stateNode=a}null!==b.ref&&\n(b.effectTag|=128)}return null;case 6:if(a&&null!=b.stateNode)w(a,b,a.memoizedProps,m);else{if(\"string\"!==typeof m)return null===b.stateNode?E(\"166\"):void 0,null;a=v();c=u();L(b)?I(b)&&d(b):b.stateNode=f(m,a,c,b)}return null;case 7:(m=b.memoizedProps)?void 0:E(\"165\");b.tag=8;A=[];a:for((p=b.stateNode)&&(p[\"return\"]=b);null!==p;){if(5===p.tag||6===p.tag||4===p.tag)E(\"247\");else if(9===p.tag)A.push(p.type);else if(null!==p.child){p.child[\"return\"]=p;p=p.child;continue}for(;null===p.sibling;){if(null===\np[\"return\"]||p[\"return\"]===b)break a;p=p[\"return\"]}p.sibling[\"return\"]=p[\"return\"];p=p.sibling}p=m.handler;m=p(m.props,A);b.child=bf(b,null!==a?a.child:null,m,c);return b.child;case 8:return b.tag=7,null;case 9:return null;case 10:return null;case 4:return z(b),N(b),null;case 0:E(\"167\");default:E(\"156\")}}}}\nfunction ff(a,b){function c(a){var c=a.ref;if(null!==c)try{c(null)}catch(A){b(a,A)}}function d(a){\"function\"===typeof Ee&&Ee(a);switch(a.tag){case 2:c(a);var d=a.stateNode;if(\"function\"===typeof d.componentWillUnmount)try{d.props=a.memoizedProps,d.state=a.memoizedState,d.componentWillUnmount()}catch(A){b(a,A)}break;case 5:c(a);break;case 7:e(a.stateNode);break;case 4:k&&g(a)}}function e(a){for(var b=a;;)if(d(b),null===b.child||k&&4===b.tag){if(b===a)break;for(;null===b.sibling;){if(null===b[\"return\"]||\nb[\"return\"]===a)return;b=b[\"return\"]}b.sibling[\"return\"]=b[\"return\"];b=b.sibling}else b.child[\"return\"]=b,b=b.child}function f(a){return 5===a.tag||3===a.tag||4===a.tag}function g(a){for(var b=a,c=!1,f=void 0,g=void 0;;){if(!c){c=b[\"return\"];a:for(;;){null===c?E(\"160\"):void 0;switch(c.tag){case 5:f=c.stateNode;g=!1;break a;case 3:f=c.stateNode.containerInfo;g=!0;break a;case 4:f=c.stateNode.containerInfo;g=!0;break a}c=c[\"return\"]}c=!0}if(5===b.tag||6===b.tag)e(b),g?J(f,b.stateNode):N(f,b.stateNode);\nelse if(4===b.tag?f=b.stateNode.containerInfo:d(b),null!==b.child){b.child[\"return\"]=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b[\"return\"]||b[\"return\"]===a)return;b=b[\"return\"];4===b.tag&&(c=!1)}b.sibling[\"return\"]=b[\"return\"];b=b.sibling}}var h=a.getPublicInstance,k=a.mutation;a=a.persistence;k||(a?E(\"235\"):E(\"236\"));var q=k.commitMount,v=k.commitUpdate,y=k.resetTextContent,u=k.commitTextUpdate,z=k.appendChild,G=k.appendChildToContainer,I=k.insertBefore,L=k.insertInContainerBefore,\nN=k.removeChild,J=k.removeChildFromContainer;return{commitResetTextContent:function(a){y(a.stateNode)},commitPlacement:function(a){a:{for(var b=a[\"return\"];null!==b;){if(f(b)){var c=b;break a}b=b[\"return\"]}E(\"160\");c=void 0}var d=b=void 0;switch(c.tag){case 5:b=c.stateNode;d=!1;break;case 3:b=c.stateNode.containerInfo;d=!0;break;case 4:b=c.stateNode.containerInfo;d=!0;break;default:E(\"161\")}c.effectTag&16&&(y(b),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c[\"return\"]||f(c[\"return\"])){c=\nnull;break a}c=c[\"return\"]}c.sibling[\"return\"]=c[\"return\"];for(c=c.sibling;5!==c.tag&&6!==c.tag;){if(c.effectTag&2)continue b;if(null===c.child||4===c.tag)continue b;else c.child[\"return\"]=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}for(var e=a;;){if(5===e.tag||6===e.tag)c?d?L(b,e.stateNode,c):I(b,e.stateNode,c):d?G(b,e.stateNode):z(b,e.stateNode);else if(4!==e.tag&&null!==e.child){e.child[\"return\"]=e;e=e.child;continue}if(e===a)break;for(;null===e.sibling;){if(null===e[\"return\"]||e[\"return\"]===\na)return;e=e[\"return\"]}e.sibling[\"return\"]=e[\"return\"];e=e.sibling}},commitDeletion:function(a){g(a);a[\"return\"]=null;a.child=null;a.alternate&&(a.alternate.child=null,a.alternate[\"return\"]=null)},commitWork:function(a,b){switch(b.tag){case 2:break;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps;a=null!==a?a.memoizedProps:d;var e=b.type,f=b.updateQueue;b.updateQueue=null;null!==f&&v(c,f,e,a,d,b)}break;case 6:null===b.stateNode?E(\"162\"):void 0;c=b.memoizedProps;u(b.stateNode,null!==a?a.memoizedProps:\nc,c);break;case 3:break;default:E(\"163\")}},commitLifeCycles:function(a,b){switch(b.tag){case 2:var c=b.stateNode;if(b.effectTag&4)if(null===a)c.props=b.memoizedProps,c.state=b.memoizedState,c.componentDidMount();else{var d=a.memoizedProps;a=a.memoizedState;c.props=b.memoizedProps;c.state=b.memoizedState;c.componentDidUpdate(d,a)}b=b.updateQueue;null!==b&&Ke(b,c);break;case 3:c=b.updateQueue;null!==c&&Ke(c,null!==b.child?b.child.stateNode:null);break;case 5:c=b.stateNode;null===a&&b.effectTag&4&&q(c,\nb.type,b.memoizedProps,b);break;case 6:break;case 4:break;default:E(\"163\")}},commitAttachRef:function(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:b(h(c));break;default:b(c)}}},commitDetachRef:function(a){a=a.ref;null!==a&&a(null)}}}var gf={};\nfunction hf(a){function b(a){a===gf?E(\"174\"):void 0;return a}var c=a.getChildHostContext,d=a.getRootHostContext,e={current:gf},f={current:gf},g={current:gf};return{getHostContext:function(){return b(e.current)},getRootHostContainer:function(){return b(g.current)},popHostContainer:function(a){V(e,a);V(f,a);V(g,a)},popHostContext:function(a){f.current===a&&(V(e,a),V(f,a))},pushHostContainer:function(a,b){W(g,b,a);b=d(b);W(f,a,a);W(e,b,a)},pushHostContext:function(a){var d=b(g.current),h=b(e.current);\nd=c(h,a.type,d);h!==d&&(W(f,a,a),W(e,d,a))},resetHostContainer:function(){e.current=gf;g.current=gf}}}\nfunction jf(a){function b(a,b){var c=new Y(5,null,0);c.type=\"DELETED\";c.stateNode=b;c[\"return\"]=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function c(a,b){switch(a.tag){case 5:return b=f(b,a.type,a.pendingProps),null!==b?(a.stateNode=b,!0):!1;case 6:return b=g(b,a.pendingProps),null!==b?(a.stateNode=b,!0):!1;default:return!1}}function d(a){for(a=a[\"return\"];null!==a&&5!==a.tag&&3!==a.tag;)a=a[\"return\"];y=a}var e=a.shouldSetTextContent;\na=a.hydration;if(!a)return{enterHydrationState:function(){return!1},resetHydrationState:function(){},tryToClaimNextHydratableInstance:function(){},prepareToHydrateHostInstance:function(){E(\"175\")},prepareToHydrateHostTextInstance:function(){E(\"176\")},popHydrationState:function(){return!1}};var f=a.canHydrateInstance,g=a.canHydrateTextInstance,h=a.getNextHydratableSibling,k=a.getFirstHydratableChild,q=a.hydrateInstance,v=a.hydrateTextInstance,y=null,u=null,z=!1;return{enterHydrationState:function(a){u=\nk(a.stateNode.containerInfo);y=a;return z=!0},resetHydrationState:function(){u=y=null;z=!1},tryToClaimNextHydratableInstance:function(a){if(z){var d=u;if(d){if(!c(a,d)){d=h(d);if(!d||!c(a,d)){a.effectTag|=2;z=!1;y=a;return}b(y,u)}y=a;u=k(d)}else a.effectTag|=2,z=!1,y=a}},prepareToHydrateHostInstance:function(a,b,c){b=q(a.stateNode,a.type,a.memoizedProps,b,c,a);a.updateQueue=b;return null!==b?!0:!1},prepareToHydrateHostTextInstance:function(a){return v(a.stateNode,a.memoizedProps,a)},popHydrationState:function(a){if(a!==\ny)return!1;if(!z)return d(a),z=!0,!1;var c=a.type;if(5!==a.tag||\"head\"!==c&&\"body\"!==c&&!e(c,a.memoizedProps))for(c=u;c;)b(a,c),c=h(c);d(a);u=y?h(a.stateNode):null;return!0}}}\nfunction kf(a){function b(a){Qb=ja=!0;var b=a.stateNode;b.current===a?E(\"177\"):void 0;b.isReadyForCommit=!1;id.current=null;if(1g.expirationTime)&&(f=g.expirationTime),g=g.sibling;e.expirationTime=f}if(null!==b)return b;null!==c&&(null===c.firstEffect&&(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1a))if(H<=Uc)for(;null!==F;)F=k(F)?e(F):d(F);else for(;null!==F&&!A();)F=k(F)?e(F):d(F)}else if(!(0===H||H>a))if(H<=Uc)for(;null!==F;)F=d(F);else for(;null!==F&&!A();)F=d(F)}function g(a,b){ja?E(\"243\"):void 0;ja=!0;a.isReadyForCommit=\n!1;if(a!==ra||b!==H||null===F){for(;-1b)a.expirationTime=b;null!==a.alternate&&(0===a.alternate.expirationTime||a.alternate.expirationTime>b)&&(a.alternate.expirationTime=b);if(null===a[\"return\"])if(3===a.tag){var c=a.stateNode;!ja&&c===ra&&bIg&&E(\"185\");if(null===d.nextScheduledRoot)d.remainingExpirationTime=e,null===O?(sa=O=d,d.nextScheduledRoot=d):(O=O.nextScheduledRoot=d,O.nextScheduledRoot=sa);else{var f=d.remainingExpirationTime;if(0===f||eTb)return;Jg(Xc)}var b=Wc()-Pe;Tb=a;Xc=Kg(J,{timeout:10*(a-2)-b})}function N(){var a=0,b=null;if(null!==O)for(var c=O,d=sa;null!==d;){var e=d.remainingExpirationTime;if(0===e){null===c||null===O?E(\"244\"):void 0;if(d===d.nextScheduledRoot){sa=O=d.nextScheduledRoot=null;break}else if(d===sa)sa=e=d.nextScheduledRoot,\nO.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===O){O=c;O.nextScheduledRoot=sa;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=null;d=c.nextScheduledRoot}else{if(0===a||eLg?!1:Yc=!0}function Ob(a){null===ma?E(\"246\"):\nvoid 0;ma.remainingExpirationTime=0;Ub||(Ub=!0,Zc=a)}var r=hf(a),n=jf(a),p=r.popHostContainer,qg=r.popHostContext,x=r.resetHostContainer,Me=df(a,r,n,u,y),rg=Me.beginWork,Gg=Me.beginFailedWork,Fg=ef(a,r,n).completeWork;r=ff(a,h);var zg=r.commitResetTextContent,Ne=r.commitPlacement,Bg=r.commitDeletion,Oe=r.commitWork,Dg=r.commitLifeCycles,Eg=r.commitAttachRef,Ag=r.commitDetachRef,Wc=a.now,Kg=a.scheduleDeferredCallback,Jg=a.cancelDeferredCallback,Hg=a.useSyncScheduling,yg=a.prepareForCommit,Cg=a.resetAfterCommit,\nPe=Wc(),Uc=2,ka=0,ja=!1,F=null,ra=null,H=0,t=null,R=null,qa=null,ha=null,ca=null,eb=!1,Qb=!1,Sc=!1,sa=null,O=null,Tb=0,Xc=-1,Fa=!1,ma=null,na=0,Yc=!1,Ub=!1,Zc=null,fb=null,la=!1,Sb=!1,Ig=1E3,Rb=0,Lg=1;return{computeAsyncExpiration:v,computeExpirationForFiber:y,scheduleWork:u,batchedUpdates:function(a,b){var c=la;la=!0;try{return a(b)}finally{(la=c)||Fa||w(1,null)}},unbatchedUpdates:function(a){if(la&&!Sb){Sb=!0;try{return a()}finally{Sb=!1}}return a()},flushSync:function(a){var b=la;la=!0;try{a:{var c=\nka;ka=1;try{var d=a();break a}finally{ka=c}d=void 0}return d}finally{la=b,Fa?E(\"187\"):void 0,w(1,null)}},deferredUpdates:function(a){var b=ka;ka=v();try{return a()}finally{ka=b}}}}\nfunction lf(a){function b(a){a=od(a);return null===a?null:a.stateNode}var c=a.getPublicInstance;a=kf(a);var d=a.computeAsyncExpiration,e=a.computeExpirationForFiber,f=a.scheduleWork;return{createContainer:function(a,b){var c=new Y(3,null,0);a={current:c,containerInfo:a,pendingChildren:null,remainingExpirationTime:0,isReadyForCommit:!1,finishedWork:null,context:null,pendingContext:null,hydrate:b,nextScheduledRoot:null};return c.stateNode=a},updateContainer:function(a,b,c,q){var g=b.current;if(c){c=\nc._reactInternalFiber;var h;b:{2===kd(c)&&2===c.tag?void 0:E(\"170\");for(h=c;3!==h.tag;){if(le(h)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}(h=h[\"return\"])?void 0:E(\"171\")}h=h.stateNode.context}c=le(c)?pe(c,h):h}else c=D;null===b.context?b.context=c:b.pendingContext=c;b=q;b=void 0===b?null:b;q=null!=a&&null!=a.type&&null!=a.type.prototype&&!0===a.type.prototype.unstable_isAsyncReactComponent?d():e(g);He(g,{expirationTime:q,partialState:{element:a},callback:b,isReplace:!1,isForced:!1,\nnextCallback:null,next:null});f(g,q)},batchedUpdates:a.batchedUpdates,unbatchedUpdates:a.unbatchedUpdates,deferredUpdates:a.deferredUpdates,flushSync:a.flushSync,getPublicRootInstance:function(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return c(a.child.stateNode);default:return a.child.stateNode}},findHostInstance:b,findHostInstanceWithNoPortals:function(a){a=pd(a);return null===a?null:a.stateNode},injectIntoDevTools:function(a){var c=a.findFiberByHostInstance;return Ce(B({},\na,{findHostInstanceByFiber:function(a){return b(a)},findFiberByHostInstance:function(a){return c?c(a):null}}))}}}var mf=Object.freeze({default:lf}),nf=mf&&lf||mf,of=nf[\"default\"]?nf[\"default\"]:nf;function pf(a,b,c){var d=3=yf-a)if(-1!==wf&&wf<=\na)Bf.didTimeout=!0;else{xf||(xf=!0,requestAnimationFrame(Df));return}else Bf.didTimeout=!1;wf=-1;a=uf;uf=null;null!==a&&a(Bf)}},!1);var Df=function(a){xf=!1;var b=a-yf+Af;bb&&(b=8),Af=bc||d.hasOverloadedBooleanValue&&!1===c?Jf(a,b):d.mustUseProperty?a[d.propertyName]=c:(b=d.attributeName,(e=d.attributeNamespace)?a.setAttributeNS(e,b,\"\"+c):d.hasBooleanValue||d.hasOverloadedBooleanValue&&!0===c?a.setAttribute(b,\"\"):a.setAttribute(b,\"\"+c))}else Kf(a,b,va(b,c)?c:null)}\nfunction Kf(a,b,c){Hf(b)&&(null==c?a.removeAttribute(b):a.setAttribute(b,\"\"+c))}function Jf(a,b){var c=wa(b);c?(b=c.mutationMethod)?b(a,void 0):c.mustUseProperty?a[c.propertyName]=c.hasBooleanValue?!1:\"\":a.removeAttribute(c.attributeName):a.removeAttribute(b)}\nfunction Lf(a,b){var c=b.value,d=b.checked;return B({type:void 0,step:void 0,min:void 0,max:void 0},b,{defaultChecked:void 0,defaultValue:void 0,value:null!=c?c:a._wrapperState.initialValue,checked:null!=d?d:a._wrapperState.initialChecked})}function Mf(a,b){var c=b.defaultValue;a._wrapperState={initialChecked:null!=b.checked?b.checked:b.defaultChecked,initialValue:null!=b.value?b.value:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}\nfunction Nf(a,b){b=b.checked;null!=b&&If(a,\"checked\",b)}function Of(a,b){Nf(a,b);var c=b.value;if(null!=c)if(0===c&&\"\"===a.value)a.value=\"0\";else if(\"number\"===b.type){if(b=parseFloat(a.value)||0,c!=b||c==b&&a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else null==b.value&&null!=b.defaultValue&&a.defaultValue!==\"\"+b.defaultValue&&(a.defaultValue=\"\"+b.defaultValue),null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Pf(a,b){switch(b.type){case \"submit\":case \"reset\":break;case \"color\":case \"date\":case \"datetime\":case \"datetime-local\":case \"month\":case \"time\":case \"week\":a.value=\"\";a.value=a.defaultValue;break;default:a.value=a.value}b=a.name;\"\"!==b&&(a.name=\"\");a.defaultChecked=!a.defaultChecked;a.defaultChecked=!a.defaultChecked;\"\"!==b&&(a.name=b)}function Qf(a){var b=\"\";aa.Children.forEach(a,function(a){null==a||\"string\"!==typeof a&&\"number\"!==typeof a||(b+=a)});return b}\nfunction Rf(a,b){a=B({children:void 0},b);if(b=Qf(b.children))a.children=b;return a}function Sf(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=b.length?void 0:E(\"93\"),b=b[0]),c=\"\"+b),null==c&&(c=\"\"));a._wrapperState={initialValue:\"\"+c}}\nfunction Wf(a,b){var c=b.value;null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&(a.defaultValue=c));null!=b.defaultValue&&(a.defaultValue=b.defaultValue)}function Xf(a){var b=a.textContent;b===a._wrapperState.initialValue&&(a.value=b)}var Yf={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Zf(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function $f(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Zf(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar ag=void 0,bg=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Yf.svg||\"innerHTML\"in a)a.innerHTML=b;else{ag=ag||document.createElement(\"div\");ag.innerHTML=\"\\x3csvg\\x3e\"+b+\"\\x3c/svg\\x3e\";for(b=ag.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction cg(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar dg={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,\nstopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},eg=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(dg).forEach(function(a){eg.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);dg[b]=dg[a]})});\nfunction fg(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\");var e=c;var f=b[c];e=null==f||\"boolean\"===typeof f||\"\"===f?\"\":d||\"number\"!==typeof f||0===f||dg.hasOwnProperty(e)&&dg[e]?(\"\"+f).trim():f+\"px\";\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var gg=B({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction hg(a,b,c){b&&(gg[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?E(\"137\",a,c()):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?E(\"60\"):void 0,\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML?void 0:E(\"61\")),null!=b.style&&\"object\"!==typeof b.style?E(\"62\",c()):void 0)}\nfunction ig(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var jg=Yf.html,kg=C.thatReturns(\"\");\nfunction lg(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Hd(a);b=Sa[b];for(var d=0;d\nd&&(e=d,d=a,a=e);e=Jd(c,a);var f=Jd(c,d);if(e&&f&&(1!==b.rangeCount||b.anchorNode!==e.node||b.anchorOffset!==e.offset||b.focusNode!==f.node||b.focusOffset!==f.offset)){var g=document.createRange();g.setStart(e.node,e.offset);b.removeAllRanges();a>d?(b.addRange(g),b.extend(f.node,f.offset)):(g.setEnd(f.node,f.offset),b.addRange(g))}}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});ia(c);for(c=0;c\n
\n

Welcome to React

\n
\n

\n To get started, edit src/App.js and save to reload.\n

\n
\n );\n }\n}\n\nexport default App;\n\n\n\n// WEBPACK FOOTER //\n// ./src/App.js"],"sourceRoot":""} diff --git a/testing/talos/talos/tests/devtools/addon/content/pages/custom/debugger/static/js/main.js b/testing/talos/talos/tests/devtools/addon/content/pages/custom/debugger/static/js/main.js new file mode 100644 index 000000000000..d95013aff09d --- /dev/null +++ b/testing/talos/talos/tests/devtools/addon/content/pages/custom/debugger/static/js/main.js @@ -0,0 +1,2 @@ +!function(n){function t(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return n[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var e={};t.m=n,t.c=e,t.d=function(n,e,r){t.o(n,e)||Object.defineProperty(n,e,{configurable:!1,enumerable:!0,get:r})},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},t.p="./",t(t.s=5)}([function(n,t,e){"use strict";function r(n){if(null===n||void 0===n)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(n)}var o=Object.getOwnPropertySymbols,a=Object.prototype.hasOwnProperty,u=Object.prototype.propertyIsEnumerable;n.exports=function(){try{if(!Object.assign)return!1;var n=new String("abc");if(n[5]="de","5"===Object.getOwnPropertyNames(n)[0])return!1;for(var t={},e=0;e<10;e++)t["_"+String.fromCharCode(e)]=e;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(n){return t[n]}).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach(function(n){r[n]=n}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(n){return!1}}()?Object.assign:function(n,t){for(var e,i,c=r(n),d=1;dd){for(var t=0,e=u.length-c;t-1?t:n}function h(n,t){t=t||{};var e=t.body;if(n instanceof h){if(n.bodyUsed)throw new TypeError("Already read");this.url=n.url,this.credentials=n.credentials,t.headers||(this.headers=new o(n.headers)),this.method=n.method,this.mode=n.mode,e||null==n._bodyInit||(e=n._bodyInit,n.bodyUsed=!0)}else this.url=String(n);if(this.credentials=t.credentials||this.credentials||"omit",!t.headers&&this.headers||(this.headers=new o(t.headers)),this.method=l(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&e)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(e)}function s(n){var t=new FormData;return n.trim().split("&").forEach(function(n){if(n){var e=n.split("="),r=e.shift().replace(/\+/g," "),o=e.join("=").replace(/\+/g," ");t.append(decodeURIComponent(r),decodeURIComponent(o))}}),t}function p(n){var t=new o;return n.split(/\r?\n/).forEach(function(n){var e=n.split(":"),r=e.shift().trim();if(r){var o=e.join(":").trim();t.append(r,o)}}),t}function M(n,t){t||(t={}),this.type="default",this.status="status"in t?t.status:200,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new o(t.headers),this.url=t.url||"",this._initBody(n)}if(!n.fetch){var v={searchParams:"URLSearchParams"in n,iterable:"Symbol"in n&&"iterator"in Symbol,blob:"FileReader"in n&&"Blob"in n&&function(){try{return new Blob,!0}catch(n){return!1}}(),formData:"FormData"in n,arrayBuffer:"ArrayBuffer"in n};if(v.arrayBuffer)var N=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],C=function(n){return n&&DataView.prototype.isPrototypeOf(n)},y=ArrayBuffer.isView||function(n){return n&&N.indexOf(Object.prototype.toString.call(n))>-1};o.prototype.append=function(n,r){n=t(n),r=e(r);var o=this.map[n];this.map[n]=o?o+","+r:r},o.prototype.delete=function(n){delete this.map[t(n)]},o.prototype.get=function(n){return n=t(n),this.has(n)?this.map[n]:null},o.prototype.has=function(n){return this.map.hasOwnProperty(t(n))},o.prototype.set=function(n,r){this.map[t(n)]=e(r)},o.prototype.forEach=function(n,t){for(var e in this.map)this.map.hasOwnProperty(e)&&n.call(t,this.map[e],e,this)},o.prototype.keys=function(){var n=[];return this.forEach(function(t,e){n.push(e)}),r(n)},o.prototype.values=function(){var n=[];return this.forEach(function(t){n.push(t)}),r(n)},o.prototype.entries=function(){var n=[];return this.forEach(function(t,e){n.push([e,t])}),r(n)},v.iterable&&(o.prototype[Symbol.iterator]=o.prototype.entries);var x=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];h.prototype.clone=function(){return new h(this,{body:this._bodyInit})},m.call(h.prototype),m.call(M.prototype),M.prototype.clone=function(){return new M(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new o(this.headers),url:this.url})},M.error=function(){var n=new M(null,{status:0,statusText:""});return n.type="error",n};var g=[301,302,303,307,308];M.redirect=function(n,t){if(-1===g.indexOf(t))throw new RangeError("Invalid status code");return new M(null,{status:t,headers:{location:n}})},n.Headers=o,n.Request=h,n.Response=M,n.fetch=function(n,t){return new Promise(function(e,r){var o=new h(n,t),a=new XMLHttpRequest;a.onload=function(){var n={status:a.status,statusText:a.statusText,headers:p(a.getAllResponseHeaders()||"")};n.url="responseURL"in a?a.responseURL:n.headers.get("X-Request-URL");var t="response"in a?a.response:a.responseText;e(new M(t,n))},a.onerror=function(){r(new TypeError("Network request failed"))},a.ontimeout=function(){r(new TypeError("Network request failed"))},a.open(o.method,o.url,!0),"include"===o.credentials&&(a.withCredentials=!0),"responseType"in a&&v.blob&&(a.responseType="blob"),o.headers.forEach(function(n,t){a.setRequestHeader(t,n)}),a.send("undefined"===typeof o._bodyInit?null:o._bodyInit)})},n.fetch.polyfill=!0}}("undefined"!==typeof self?self:this)},function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=e(1),o=e.n(r),a=e(14),u=e.n(a),i=e(24);u.a.render(o.a.createElement(i.a,null),document.getElementById("root"))},function(n,t,e){"use strict";function r(n){for(var t=arguments.length-1,e="Minified React error #"+n+"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant="+n,r=0;rO.length&&O.push(n)}function h(n,t,e,o){var a=typeof n;"undefined"!==a&&"boolean"!==a||(n=null);var u=!1;if(null===n)u=!0;else switch(a){case"string":case"number":u=!0;break;case"object":switch(n.$$typeof){case g:case I:case b:case R:u=!0}}if(u)return e(o,n,""===t?"."+s(n,0):t),1;if(u=0,t=""===t?".":t+":",Array.isArray(n))for(var i=0;ithis.eventPool.length&&this.eventPool.push(n)}function B(n){n.eventPool=[],n.getPooled=j,n.release=H}function z(n,t,e,r){return L.call(this,n,t,e,r)}function V(n,t,e,r){return L.call(this,n,t,e,r)}function K(n,t){switch(n){case"topKeyUp":return-1!==hr.indexOf(t.keyCode);case"topKeyDown":return 229!==t.keyCode;case"topKeyPress":case"topMouseDown":case"topBlur":return!0;default:return!1}}function W(n){return n=n.detail,"object"===typeof n&&"data"in n?n.data:null}function q(n,t){switch(n){case"topCompositionEnd":return W(t);case"topKeyPress":return 32!==t.which?null:(Ir=!0,xr);case"topTextInput":return n=t.data,n===xr&&Ir?null:n;default:return null}}function $(n,t){if(br)return"topCompositionEnd"===n||!sr&&K(n,t)?(n=D(),fr._root=null,fr._startText=null,fr._fallbackText=null,br=!1,n):null;switch(n){case"topPaste":return null;case"topKeyPress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1Br.length&&Br.push(n)}}}function Pn(n,t){var e={};return e[n.toLowerCase()]=t.toLowerCase(),e["Webkit"+n]="webkit"+t,e["Moz"+n]="moz"+t,e["ms"+n]="MS"+t,e["O"+n]="o"+t.toLowerCase(),e}function On(n){if(qr[n])return qr[n];if(!Wr[n])return n;var t,e=Wr[n];for(t in e)if(e.hasOwnProperty(t)&&t in $r)return qr[n]=e[t];return""}function An(n){return Object.prototype.hasOwnProperty.call(n,Zr)||(n[Zr]=Xr++,Yr[n[Zr]]={}),Yr[n[Zr]]}function Dn(n){for(;n&&n.firstChild;)n=n.firstChild;return n}function Fn(n,t){var e=Dn(n);n=0;for(var r;e;){if(3===e.nodeType){if(r=n+e.textContent.length,n<=t&&r>=t)return{node:e,offset:t-n};n=r}n:{for(;e;){if(e.nextSibling){e=e.nextSibling;break n}e=e.parentNode}e=void 0}e=Dn(e)}}function Ln(n){var t=n&&n.nodeName&&n.nodeName.toLowerCase();return t&&("input"===t&&"text"===n.type||"textarea"===t||"true"===n.contentEditable)}function jn(n,t){if(oo||null==to||to!==be())return null;var e=to;return"selectionStart"in e&&Ln(e)?e={start:e.selectionStart,end:e.selectionEnd}:window.getSelection?(e=window.getSelection(),e={anchorNode:e.anchorNode,anchorOffset:e.anchorOffset,focusNode:e.focusNode,focusOffset:e.focusOffset}):e=void 0,ro&&Re(ro,e)?null:(ro=e,n=L.getPooled(no.select,eo,n,t),n.type="select",n.target=to,P(n),n)}function Hn(n,t,e,r){return L.call(this,n,t,e,r)}function Bn(n,t,e,r){return L.call(this,n,t,e,r)}function zn(n,t,e,r){return L.call(this,n,t,e,r)}function Vn(n){var t=n.keyCode;return"charCode"in n?0===(n=n.charCode)&&13===t&&(n=13):n=t,32<=n||13===n?n:0}function Kn(n,t,e,r){return L.call(this,n,t,e,r)}function Wn(n,t,e,r){return L.call(this,n,t,e,r)}function qn(n,t,e,r){return L.call(this,n,t,e,r)}function $n(n,t,e,r){return L.call(this,n,t,e,r)}function Gn(n,t,e,r){return L.call(this,n,t,e,r)}function Yn(n){0>ho||(n.current=lo[ho],lo[ho]=null,ho--)}function Xn(n,t){ho++,lo[ho]=n.current,n.current=t}function Zn(n){return nt(n)?Mo:so.current}function Jn(n,t){var e=n.type.contextTypes;if(!e)return we;var r=n.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,a={};for(o in e)a[o]=t[o];return r&&(n=n.stateNode,n.__reactInternalMemoizedUnmaskedChildContext=t,n.__reactInternalMemoizedMaskedChildContext=a),a}function nt(n){return 2===n.tag&&null!=n.type.childContextTypes}function tt(n){nt(n)&&(Yn(po,n),Yn(so,n))}function et(n,t,e){null!=so.cursor&&r("168"),Xn(so,t,n),Xn(po,e,n)}function rt(n,t){var e=n.stateNode,o=n.type.childContextTypes;if("function"!==typeof e.getChildContext)return t;e=e.getChildContext();for(var a in e)a in o||r("108",gn(n)||"Unknown",a);return xe({},t,e)}function ot(n){if(!nt(n))return!1;var t=n.stateNode;return t=t&&t.__reactInternalMemoizedMergedChildContext||we,Mo=so.current,Xn(so,t,n),Xn(po,po.current,n),!0}function at(n,t){var e=n.stateNode;if(e||r("169"),t){var o=rt(n,Mo);e.__reactInternalMemoizedMergedChildContext=o,Yn(po,n),Yn(so,n),Xn(so,o,n)}else Yn(po,n);Xn(po,t,n)}function ut(n,t,e){this.tag=n,this.key=t,this.stateNode=this.type=null,this.sibling=this.child=this.return=null,this.index=0,this.memoizedState=this.updateQueue=this.memoizedProps=this.pendingProps=this.ref=null,this.internalContextTag=e,this.effectTag=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.expirationTime=0,this.alternate=null}function it(n,t,e){var r=n.alternate;return null===r?(r=new ut(n.tag,n.key,n.internalContextTag),r.type=n.type,r.stateNode=n.stateNode,r.alternate=n,n.alternate=r):(r.effectTag=0,r.nextEffect=null,r.firstEffect=null,r.lastEffect=null),r.expirationTime=e,r.pendingProps=t,r.child=n.child,r.memoizedProps=n.memoizedProps,r.memoizedState=n.memoizedState,r.updateQueue=n.updateQueue,r.sibling=n.sibling,r.index=n.index,r.ref=n.ref,r}function ct(n,t,e){var o=void 0,a=n.type,u=n.key;return"function"===typeof a?(o=a.prototype&&a.prototype.isReactComponent?new ut(2,u,t):new ut(0,u,t),o.type=a,o.pendingProps=n.props):"string"===typeof a?(o=new ut(5,u,t),o.type=a,o.pendingProps=n.props):"object"===typeof a&&null!==a&&"number"===typeof a.tag?(o=a,o.pendingProps=n.props):r("130",null==a?a:typeof a,""),o.expirationTime=e,o}function dt(n,t,e,r){return t=new ut(10,r,t),t.pendingProps=n,t.expirationTime=e,t}function ft(n,t,e){return t=new ut(6,null,t),t.pendingProps=n,t.expirationTime=e,t}function mt(n,t,e){return t=new ut(7,n.key,t),t.type=n.handler,t.pendingProps=n,t.expirationTime=e,t}function lt(n,t,e){return n=new ut(9,null,t),n.expirationTime=e,n}function ht(n,t,e){return t=new ut(4,n.key,t),t.pendingProps=n.children||[],t.expirationTime=e,t.stateNode={containerInfo:n.containerInfo,pendingChildren:null,implementation:n.implementation},t}function st(n){return function(t){try{return n(t)}catch(n){}}}function pt(n){if("undefined"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)return!0;try{var e=t.inject(n);vo=st(function(n){return t.onCommitFiberRoot(e,n)}),No=st(function(n){return t.onCommitFiberUnmount(e,n)})}catch(n){}return!0}function Mt(n){"function"===typeof vo&&vo(n)}function vt(n){"function"===typeof No&&No(n)}function Nt(n){return{baseState:n,expirationTime:0,first:null,last:null,callbackList:null,hasForceUpdate:!1,isInitialized:!1}}function Ct(n,t){null===n.last?n.first=n.last=t:(n.last.next=t,n.last=t),(0===n.expirationTime||n.expirationTime>t.expirationTime)&&(n.expirationTime=t.expirationTime)}function yt(n,t){var e=n.alternate,r=n.updateQueue;null===r&&(r=n.updateQueue=Nt(null)),null!==e?null===(n=e.updateQueue)&&(n=e.updateQueue=Nt(null)):n=null,n=n!==r?n:null,null===n?Ct(r,t):null===r.last||null===n.last?(Ct(r,t),Ct(n,t)):(Ct(r,t),n.last=t)}function xt(n,t,e,r){return n=n.partialState,"function"===typeof n?n.call(t,e,r):n}function gt(n,t,e,r,o,a){null!==n&&n.updateQueue===e&&(e=t.updateQueue={baseState:e.baseState,expirationTime:e.expirationTime,first:e.first,last:e.last,isInitialized:e.isInitialized,callbackList:null,hasForceUpdate:!1}),e.expirationTime=0,e.isInitialized?n=e.baseState:(n=e.baseState=t.memoizedState,e.isInitialized=!0);for(var u=!0,i=e.first,c=!1;null!==i;){var d=i.expirationTime;if(d>a){var f=e.expirationTime;(0===f||f>d)&&(e.expirationTime=d),c||(c=!0,e.baseState=n)}else c||(e.first=i.next,null===e.first&&(e.last=null)),i.isReplace?(n=xt(i,r,n,o),u=!0):(d=xt(i,r,n,o))&&(n=u?xe({},n,d):xe(n,d),u=!1),i.isForced&&(e.hasForceUpdate=!0),null!==i.callback&&(d=e.callbackList,null===d&&(d=e.callbackList=[]),d.push(i));i=i.next}return null!==e.callbackList?t.effectTag|=32:null!==e.first||e.hasForceUpdate||(t.updateQueue=null),c||(e.baseState=n),n}function It(n,t){var e=n.callbackList;if(null!==e)for(n.callbackList=null,n=0;nl?(h=m,m=null):h=m.sibling;var v=p(r,m,i[l],c);if(null===v){null===m&&(m=h);break}n&&m&&null===v.alternate&&t(r,m),a=u(v,a,l),null===f?d=v:f.sibling=v,f=v,m=h}if(l===i.length)return e(r,m),d;if(null===m){for(;lh?(v=l,l=null):v=l.sibling;var C=p(a,l,N.value,d);if(null===C){l||(l=v);break}n&&l&&null===C.alternate&&t(a,l),i=u(C,i,h),null===m?f=C:m.sibling=C,m=C,l=v}if(N.done)return e(a,l),f;if(null===l){for(;!N.done;h++,N=c.next())null!==(N=s(a,N.value,d))&&(i=u(N,i,h),null===m?f=N:m.sibling=N,m=N);return f}for(l=o(a,l);!N.done;h++,N=c.next())null!==(N=M(l,a,h,N.value,d))&&(n&&null!==N.alternate&&l.delete(null===N.key?h:N.key),i=u(N,i,h),null===m?f=N:m.sibling=N,m=N);return n&&l.forEach(function(n){return t(a,n)}),f}return function(n,o,u,c){"object"===typeof u&&null!==u&&u.type===bo&&null===u.key&&(u=u.props.children);var d="object"===typeof u&&null!==u;if(d)switch(u.$$typeof){case yo:n:{var f=u.key;for(d=o;null!==d;){if(d.key===f){if(10===d.tag?u.type===bo:d.type===u.type){e(n,d.sibling),o=a(d,u.type===bo?u.props.children:u.props,c),o.ref=Ut(d,u),o.return=n,n=o;break n}e(n,d);break}t(n,d),d=d.sibling}u.type===bo?(o=dt(u.props.children,n.internalContextTag,c,u.key),o.return=n,n=o):(c=ct(u,n.internalContextTag,c),c.ref=Ut(o,u),c.return=n,n=c)}return i(n);case xo:n:{for(d=u.key;null!==o;){if(o.key===d){if(7===o.tag){e(n,o.sibling),o=a(o,u,c),o.return=n,n=o;break n}e(n,o);break}t(n,o),o=o.sibling}o=mt(u,n.internalContextTag,c),o.return=n,n=o}return i(n);case go:n:{if(null!==o){if(9===o.tag){e(n,o.sibling),o=a(o,null,c),o.type=u.value,o.return=n,n=o;break n}e(n,o)}o=lt(u,n.internalContextTag,c),o.type=u.value,o.return=n,n=o}return i(n);case Io:n:{for(d=u.key;null!==o;){if(o.key===d){if(4===o.tag&&o.stateNode.containerInfo===u.containerInfo&&o.stateNode.implementation===u.implementation){e(n,o.sibling),o=a(o,u.children||[],c),o.return=n,n=o;break n}e(n,o);break}t(n,o),o=o.sibling}o=ht(u,n.internalContextTag,c),o.return=n,n=o}return i(n)}if("string"===typeof u||"number"===typeof u)return u=""+u,null!==o&&6===o.tag?(e(n,o.sibling),o=a(o,u,c)):(e(n,o),o=ft(u,n.internalContextTag,c)),o.return=n,n=o,i(n);if(Uo(u))return v(n,o,u,c);if(Rt(u))return N(n,o,u,c);if(d&&Qt(n,u),"undefined"===typeof u)switch(n.tag){case 2:case 1:c=n.type,r("152",c.displayName||c.name||"Component")}return e(n,o)}}function kt(n,t,e,o,a){function u(n,t,e){var r=t.expirationTime;t.child=null===n?wo(t,null,e,r):Qo(t,n.child,e,r)}function i(n,t){var e=t.ref;null===e||n&&n.ref===e||(t.effectTag|=128)}function c(n,t,e,r){if(i(n,t),!e)return r&&at(t,!1),f(n,t);e=t.stateNode,Hr.current=t;var o=e.render();return t.effectTag|=1,u(n,t,o),t.memoizedState=e.state,t.memoizedProps=e.props,r&&at(t,!0),t.child}function d(n){var t=n.stateNode;t.pendingContext?et(n,t.pendingContext,t.pendingContext!==t.context):t.context&&et(n,t.context,!1),M(n,t.containerInfo)}function f(n,t){if(null!==n&&t.child!==n.child&&r("153"),null!==t.child){n=t.child;var e=it(n,n.pendingProps,n.expirationTime);for(t.child=e,e.return=t;null!==n.sibling;)n=n.sibling,e=e.sibling=it(n,n.pendingProps,n.expirationTime),e.return=t;e.sibling=null}return t.child}function m(n,t){switch(t.tag){case 3:d(t);break;case 2:ot(t);break;case 4:M(t,t.stateNode.containerInfo)}return null}var l=n.shouldSetTextContent,h=n.useSyncScheduling,s=n.shouldDeprioritizeSubtree,p=t.pushHostContext,M=t.pushHostContainer,v=e.enterHydrationState,N=e.resetHydrationState,C=e.tryToClaimNextHydratableInstance;n=bt(o,a,function(n,t){n.memoizedProps=t},function(n,t){n.memoizedState=t});var y=n.adoptClassInstance,x=n.constructClassInstance,g=n.mountClassInstance,I=n.updateClassInstance;return{beginWork:function(n,t,e){if(0===t.expirationTime||t.expirationTime>e)return m(n,t);switch(t.tag){case 0:null!==n&&r("155");var o=t.type,a=t.pendingProps,b=Zn(t);return b=Jn(t,b),o=o(a,b),t.effectTag|=1,"object"===typeof o&&null!==o&&"function"===typeof o.render?(t.tag=2,a=ot(t),y(t,o),g(t,e),t=c(n,t,!0,a)):(t.tag=1,u(n,t,o),t.memoizedProps=a,t=t.child),t;case 1:n:{if(a=t.type,e=t.pendingProps,o=t.memoizedProps,po.current)null===e&&(e=o);else if(null===e||o===e){t=f(n,t);break n}o=Zn(t),o=Jn(t,o),a=a(e,o),t.effectTag|=1,u(n,t,a),t.memoizedProps=e,t=t.child}return t;case 2:return a=ot(t),o=void 0,null===n?t.stateNode?r("153"):(x(t,t.pendingProps),g(t,e),o=!0):o=I(n,t,e),c(n,t,o,a);case 3:return d(t),a=t.updateQueue,null!==a?(o=t.memoizedState,a=gt(n,t,a,null,null,e),o===a?(N(),t=f(n,t)):(o=a.element,b=t.stateNode,(null===n||null===n.child)&&b.hydrate&&v(t)?(t.effectTag|=2,t.child=wo(t,null,o,e)):(N(),u(n,t,o)),t.memoizedState=a,t=t.child)):(N(),t=f(n,t)),t;case 5:p(t),null===n&&C(t),a=t.type;var R=t.memoizedProps;return o=t.pendingProps,null===o&&null===(o=R)&&r("154"),b=null!==n?n.memoizedProps:null,po.current||null!==o&&R!==o?(R=o.children,l(a,o)?R=null:b&&l(a,b)&&(t.effectTag|=16),i(n,t),2147483647!==e&&!h&&s(a,o)?(t.expirationTime=2147483647,t=null):(u(n,t,R),t.memoizedProps=o,t=t.child)):t=f(n,t),t;case 6:return null===n&&C(t),n=t.pendingProps,null===n&&(n=t.memoizedProps),t.memoizedProps=n,null;case 8:t.tag=7;case 7:return a=t.pendingProps,po.current?null===a&&null===(a=n&&n.memoizedProps)&&r("154"):null!==a&&t.memoizedProps!==a||(a=t.memoizedProps),o=a.children,t.stateNode=null===n?wo(t,t.stateNode,o,e):Qo(t,t.stateNode,o,e),t.memoizedProps=a,t.stateNode;case 9:return null;case 4:n:{if(M(t,t.stateNode.containerInfo),a=t.pendingProps,po.current)null===a&&null==(a=n&&n.memoizedProps)&&r("154");else if(null===a||t.memoizedProps===a){t=f(n,t);break n}null===n?t.child=Qo(t,null,a,e):u(n,t,a),t.memoizedProps=a,t=t.child}return t;case 10:n:{if(e=t.pendingProps,po.current)null===e&&(e=t.memoizedProps);else if(null===e||t.memoizedProps===e){t=f(n,t);break n}u(n,t,e),t.memoizedProps=e,t=t.child}return t;default:r("156")}},beginFailedWork:function(n,t,e){switch(t.tag){case 2:ot(t);break;case 3:d(t);break;default:r("157")}return t.effectTag|=64,null===n?t.child=null:t.child!==n.child&&(t.child=n.child),0===t.expirationTime||t.expirationTime>e?m(n,t):(t.firstEffect=null,t.lastEffect=null,t.child=null===n?wo(t,null,null,e):Qo(t,n.child,null,e),2===t.tag&&(n=t.stateNode,t.memoizedProps=n.props,t.memoizedState=n.state),t.child)}}}function Et(n,t,e){function o(n){n.effectTag|=4}var a=n.createInstance,u=n.createTextInstance,i=n.appendInitialChild,c=n.finalizeInitialChildren,d=n.prepareUpdate,f=n.persistence,m=t.getRootHostContainer,l=t.popHostContext,h=t.getHostContext,s=t.popHostContainer,p=e.prepareToHydrateHostInstance,M=e.prepareToHydrateHostTextInstance,v=e.popHydrationState,N=void 0,C=void 0,y=void 0;return n.mutation?(N=function(){},C=function(n,t,e){(t.updateQueue=e)&&o(t)},y=function(n,t,e,r){e!==r&&o(t)}):r(f?"235":"236"),{completeWork:function(n,t,e){var f=t.pendingProps;switch(null===f?f=t.memoizedProps:2147483647===t.expirationTime&&2147483647!==e||(t.pendingProps=null),t.tag){case 1:return null;case 2:return tt(t),null;case 3:return s(t),Yn(po,t),Yn(so,t),f=t.stateNode,f.pendingContext&&(f.context=f.pendingContext,f.pendingContext=null),null!==n&&null!==n.child||(v(t),t.effectTag&=-3),N(t),null;case 5:l(t),e=m();var x=t.type;if(null!==n&&null!=t.stateNode){var g=n.memoizedProps,I=t.stateNode,b=h();I=d(I,x,g,f,e,b),C(n,t,I,x,g,f,e),n.ref!==t.ref&&(t.effectTag|=128)}else{if(!f)return null===t.stateNode&&r("166"),null;if(n=h(),v(t))p(t,e,n)&&o(t);else{n=a(x,f,e,n,t);n:for(g=t.child;null!==g;){if(5===g.tag||6===g.tag)i(n,g.stateNode);else if(4!==g.tag&&null!==g.child){g.child.return=g,g=g.child;continue}if(g===t)break;for(;null===g.sibling;){if(null===g.return||g.return===t)break n;g=g.return}g.sibling.return=g.return,g=g.sibling}c(n,x,f,e)&&o(t),t.stateNode=n}null!==t.ref&&(t.effectTag|=128)}return null;case 6:if(n&&null!=t.stateNode)y(n,t,n.memoizedProps,f);else{if("string"!==typeof f)return null===t.stateNode&&r("166"),null;n=m(),e=h(),v(t)?M(t)&&o(t):t.stateNode=u(f,n,e,t)}return null;case 7:(f=t.memoizedProps)||r("165"),t.tag=8,x=[];n:for((g=t.stateNode)&&(g.return=t);null!==g;){if(5===g.tag||6===g.tag||4===g.tag)r("247");else if(9===g.tag)x.push(g.type);else if(null!==g.child){g.child.return=g,g=g.child;continue}for(;null===g.sibling;){if(null===g.return||g.return===t)break n;g=g.return}g.sibling.return=g.return,g=g.sibling}return g=f.handler,f=g(f.props,x),t.child=Qo(t,null!==n?n.child:null,f,e),t.child;case 8:return t.tag=7,null;case 9:case 10:return null;case 4:return s(t),N(t),null;case 0:r("167");default:r("156")}}}}function Tt(n,t){function e(n){var e=n.ref;if(null!==e)try{e(null)}catch(e){t(n,e)}}function o(n){switch("function"===typeof vt&&vt(n),n.tag){case 2:e(n);var r=n.stateNode;if("function"===typeof r.componentWillUnmount)try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(e){t(n,e)}break;case 5:e(n);break;case 7:a(n.stateNode);break;case 4:d&&i(n)}}function a(n){for(var t=n;;)if(o(t),null===t.child||d&&4===t.tag){if(t===n)break;for(;null===t.sibling;){if(null===t.return||t.return===n)return;t=t.return}t.sibling.return=t.return,t=t.sibling}else t.child.return=t,t=t.child}function u(n){return 5===n.tag||3===n.tag||4===n.tag}function i(n){for(var t=n,e=!1,u=void 0,i=void 0;;){if(!e){e=t.return;n:for(;;){switch(null===e&&r("160"),e.tag){case 5:u=e.stateNode,i=!1;break n;case 3:case 4:u=e.stateNode.containerInfo,i=!0;break n}e=e.return}e=!0}if(5===t.tag||6===t.tag)a(t),i?C(u,t.stateNode):N(u,t.stateNode);else if(4===t.tag?u=t.stateNode.containerInfo:o(t),null!==t.child){t.child.return=t,t=t.child;continue}if(t===n)break;for(;null===t.sibling;){if(null===t.return||t.return===n)return;t=t.return,4===t.tag&&(e=!1)}t.sibling.return=t.return,t=t.sibling}}var c=n.getPublicInstance,d=n.mutation;n=n.persistence,d||r(n?"235":"236");var f=d.commitMount,m=d.commitUpdate,l=d.resetTextContent,h=d.commitTextUpdate,s=d.appendChild,p=d.appendChildToContainer,M=d.insertBefore,v=d.insertInContainerBefore,N=d.removeChild,C=d.removeChildFromContainer;return{commitResetTextContent:function(n){l(n.stateNode)},commitPlacement:function(n){n:{for(var t=n.return;null!==t;){if(u(t)){var e=t;break n}t=t.return}r("160"),e=void 0}var o=t=void 0;switch(e.tag){case 5:t=e.stateNode,o=!1;break;case 3:case 4:t=e.stateNode.containerInfo,o=!0;break;default:r("161")}16&e.effectTag&&(l(t),e.effectTag&=-17);n:t:for(e=n;;){for(;null===e.sibling;){if(null===e.return||u(e.return)){e=null;break n}e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag;){if(2&e.effectTag)continue t;if(null===e.child||4===e.tag)continue t;e.child.return=e,e=e.child}if(!(2&e.effectTag)){e=e.stateNode;break n}}for(var a=n;;){if(5===a.tag||6===a.tag)e?o?v(t,a.stateNode,e):M(t,a.stateNode,e):o?p(t,a.stateNode):s(t,a.stateNode);else if(4!==a.tag&&null!==a.child){a.child.return=a,a=a.child;continue}if(a===n)break;for(;null===a.sibling;){if(null===a.return||a.return===n)return;a=a.return}a.sibling.return=a.return,a=a.sibling}},commitDeletion:function(n){i(n),n.return=null,n.child=null,n.alternate&&(n.alternate.child=null,n.alternate.return=null)},commitWork:function(n,t){switch(t.tag){case 2:break;case 5:var e=t.stateNode;if(null!=e){var o=t.memoizedProps;n=null!==n?n.memoizedProps:o;var a=t.type,u=t.updateQueue;t.updateQueue=null,null!==u&&m(e,u,a,n,o,t)}break;case 6:null===t.stateNode&&r("162"),e=t.memoizedProps,h(t.stateNode,null!==n?n.memoizedProps:e,e);break;case 3:break;default:r("163")}},commitLifeCycles:function(n,t){switch(t.tag){case 2:var e=t.stateNode;if(4&t.effectTag)if(null===n)e.props=t.memoizedProps,e.state=t.memoizedState,e.componentDidMount();else{var o=n.memoizedProps;n=n.memoizedState,e.props=t.memoizedProps,e.state=t.memoizedState,e.componentDidUpdate(o,n)}t=t.updateQueue,null!==t&&It(t,e);break;case 3:e=t.updateQueue,null!==e&&It(e,null!==t.child?t.child.stateNode:null);break;case 5:e=t.stateNode,null===n&&4&t.effectTag&&f(e,t.type,t.memoizedProps,t);break;case 6:case 4:break;default:r("163")}},commitAttachRef:function(n){var t=n.ref;if(null!==t){var e=n.stateNode;switch(n.tag){case 5:t(c(e));break;default:t(e)}}},commitDetachRef:function(n){null!==(n=n.ref)&&n(null)}}}function _t(n){function t(n){return n===ko&&r("174"),n}var e=n.getChildHostContext,o=n.getRootHostContext,a={current:ko},u={current:ko},i={current:ko};return{getHostContext:function(){return t(a.current)},getRootHostContainer:function(){return t(i.current)},popHostContainer:function(n){Yn(a,n),Yn(u,n),Yn(i,n)},popHostContext:function(n){u.current===n&&(Yn(a,n),Yn(u,n))},pushHostContainer:function(n,t){Xn(i,t,n),t=o(t),Xn(u,n,n),Xn(a,t,n)},pushHostContext:function(n){var r=t(i.current),o=t(a.current);r=e(o,n.type,r),o!==r&&(Xn(u,n,n),Xn(a,r,n))},resetHostContainer:function(){a.current=ko,i.current=ko}}}function St(n){function t(n,t){var e=new ut(5,null,0);e.type="DELETED",e.stateNode=t,e.return=n,e.effectTag=8,null!==n.lastEffect?(n.lastEffect.nextEffect=e,n.lastEffect=e):n.firstEffect=n.lastEffect=e}function e(n,t){switch(n.tag){case 5:return null!==(t=u(t,n.type,n.pendingProps))&&(n.stateNode=t,!0);case 6:return null!==(t=i(t,n.pendingProps))&&(n.stateNode=t,!0);default:return!1}}function o(n){for(n=n.return;null!==n&&5!==n.tag&&3!==n.tag;)n=n.return;l=n}var a=n.shouldSetTextContent;if(!(n=n.hydration))return{enterHydrationState:function(){return!1},resetHydrationState:function(){},tryToClaimNextHydratableInstance:function(){},prepareToHydrateHostInstance:function(){r("175")},prepareToHydrateHostTextInstance:function(){r("176")},popHydrationState:function(){return!1}};var u=n.canHydrateInstance,i=n.canHydrateTextInstance,c=n.getNextHydratableSibling,d=n.getFirstHydratableChild,f=n.hydrateInstance,m=n.hydrateTextInstance,l=null,h=null,s=!1;return{enterHydrationState:function(n){return h=d(n.stateNode.containerInfo),l=n,s=!0},resetHydrationState:function(){h=l=null,s=!1},tryToClaimNextHydratableInstance:function(n){if(s){var r=h;if(r){if(!e(n,r)){if(!(r=c(r))||!e(n,r))return n.effectTag|=2,s=!1,void(l=n);t(l,h)}l=n,h=d(r)}else n.effectTag|=2,s=!1,l=n}},prepareToHydrateHostInstance:function(n,t,e){return t=f(n.stateNode,n.type,n.memoizedProps,t,e,n),n.updateQueue=t,null!==t},prepareToHydrateHostTextInstance:function(n){return m(n.stateNode,n.memoizedProps,n)},popHydrationState:function(n){if(n!==l)return!1;if(!s)return o(n),s=!0,!1;var e=n.type;if(5!==n.tag||"head"!==e&&"body"!==e&&!a(e,n.memoizedProps))for(e=h;e;)t(n,e),e=c(e);return o(n),h=l?c(n.stateNode):null,!0}}}function Pt(n){function t(n){an=G=!0;var t=n.stateNode;if(t.current===n&&r("177"),t.isReadyForCommit=!1,Hr.current=null,1u.expirationTime)&&(a=u.expirationTime),u=u.sibling;o.expirationTime=a}if(null!==t)return t;if(null!==e&&(null===e.firstEffect&&(e.firstEffect=n.firstEffect),null!==n.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=n.firstEffect),e.lastEffect=n.lastEffect),1n))if(Z<=q)for(;null!==Y;)Y=d(Y)?a(Y):o(Y);else for(;null!==Y&&!g();)Y=d(Y)?a(Y):o(Y)}else if(!(0===Z||Z>n))if(Z<=q)for(;null!==Y;)Y=o(Y);else for(;null!==Y&&!g();)Y=o(Y)}function i(n,t){if(G&&r("243"),G=!0,n.isReadyForCommit=!1,n!==X||t!==Z||null===Y){for(;-1t)&&(n.expirationTime=t),null!==n.alternate&&(0===n.alternate.expirationTime||n.alternate.expirationTime>t)&&(n.alternate.expirationTime=t),null===n.return){if(3!==n.tag)break;var e=n.stateNode;!G&&e===X&&txn&&r("185"),null===o.nextScheduledRoot)o.remainingExpirationTime=a,null===dn?(cn=dn=o,o.nextScheduledRoot=o):(dn=dn.nextScheduledRoot=o,dn.nextScheduledRoot=cn);else{var u=o.remainingExpirationTime;(0===u||afn)return;B(mn)}var t=j()-W;fn=n,mn=H(C,{timeout:10*(n-2)-t})}function N(){var n=0,t=null;if(null!==dn)for(var e=dn,o=cn;null!==o;){var a=o.remainingExpirationTime;if(0===a){if((null===e||null===dn)&&r("244"),o===o.nextScheduledRoot){cn=dn=o.nextScheduledRoot=null;break}if(o===cn)cn=a=o.nextScheduledRoot,dn.nextScheduledRoot=a,o.nextScheduledRoot=null;else{if(o===dn){dn=e,dn.nextScheduledRoot=cn,o.nextScheduledRoot=null;break}e.nextScheduledRoot=o.nextScheduledRoot,o.nextScheduledRoot=null}o=e.nextScheduledRoot}else{if((0===n||abn)&&(pn=!0)}function I(n){null===hn&&r("246"),hn.remainingExpirationTime=0,Mn||(Mn=!0,vn=n)}var b=_t(n),R=St(n),U=b.popHostContainer,Q=b.popHostContext,w=b.resetHostContainer,k=kt(n,b,R,h,l),E=k.beginWork,T=k.beginFailedWork,_=Et(n,b,R).completeWork;b=Tt(n,c);var S=b.commitResetTextContent,P=b.commitPlacement,O=b.commitDeletion,A=b.commitWork,D=b.commitLifeCycles,F=b.commitAttachRef,L=b.commitDetachRef,j=n.now,H=n.scheduleDeferredCallback,B=n.cancelDeferredCallback,z=n.useSyncScheduling,V=n.prepareForCommit,K=n.resetAfterCommit,W=j(),q=2,$=0,G=!1,Y=null,X=null,Z=0,J=null,nn=null,tn=null,en=null,rn=null,on=!1,an=!1,un=!1,cn=null,dn=null,fn=0,mn=-1,ln=!1,hn=null,sn=0,pn=!1,Mn=!1,vn=null,Nn=null,Cn=!1,yn=!1,xn=1e3,In=0,bn=1;return{computeAsyncExpiration:m,computeExpirationForFiber:l,scheduleWork:h,batchedUpdates:function(n,t){var e=Cn;Cn=!0;try{return n(t)}finally{(Cn=e)||ln||y(1,null)}},unbatchedUpdates:function(n){if(Cn&&!yn){yn=!0;try{return n()}finally{yn=!1}}return n()},flushSync:function(n){var t=Cn;Cn=!0;try{n:{var e=$;$=1;try{var o=n();break n}finally{$=e}o=void 0}return o}finally{Cn=t,ln&&r("187"),y(1,null)}},deferredUpdates:function(n){var t=$;$=m();try{return n()}finally{$=t}}}}function Ot(n){function t(n){return n=Qn(n),null===n?null:n.stateNode}var e=n.getPublicInstance;n=Pt(n);var o=n.computeAsyncExpiration,a=n.computeExpirationForFiber,u=n.scheduleWork;return{createContainer:function(n,t){var e=new ut(3,null,0);return n={current:e,containerInfo:n,pendingChildren:null,remainingExpirationTime:0,isReadyForCommit:!1,finishedWork:null,context:null,pendingContext:null,hydrate:t,nextScheduledRoot:null},e.stateNode=n},updateContainer:function(n,t,e,i){var c=t.current;if(e){e=e._reactInternalFiber;var d;n:{for(2===In(e)&&2===e.tag||r("170"),d=e;3!==d.tag;){if(nt(d)){d=d.stateNode.__reactInternalMemoizedMergedChildContext;break n}(d=d.return)||r("171")}d=d.stateNode.context}e=nt(e)?rt(e,d):d}else e=we;null===t.context?t.context=e:t.pendingContext=e,t=i,t=void 0===t?null:t,i=null!=n&&null!=n.type&&null!=n.type.prototype&&!0===n.type.prototype.unstable_isAsyncReactComponent?o():a(c),yt(c,{expirationTime:i,partialState:{element:n},callback:t,isReplace:!1,isForced:!1,nextCallback:null,next:null}),u(c,i)},batchedUpdates:n.batchedUpdates,unbatchedUpdates:n.unbatchedUpdates,deferredUpdates:n.deferredUpdates,flushSync:n.flushSync,getPublicRootInstance:function(n){if(n=n.current,!n.child)return null;switch(n.child.tag){case 5:return e(n.child.stateNode);default:return n.child.stateNode}},findHostInstance:t,findHostInstanceWithNoPortals:function(n){return n=wn(n),null===n?null:n.stateNode},injectIntoDevTools:function(n){var e=n.findFiberByHostInstance;return pt(xe({},n,{findHostInstanceByFiber:function(n){return t(n)},findFiberByHostInstance:function(n){return e?e(n):null}}))}}}function At(n,t,e){var r=3e||r.hasOverloadedBooleanValue&&!1===e?jt(n,t):r.mustUseProperty?n[r.propertyName]=e:(t=r.attributeName,(o=r.attributeNamespace)?n.setAttributeNS(o,t,""+e):r.hasBooleanValue||r.hasOverloadedBooleanValue&&!0===e?n.setAttribute(t,""):n.setAttribute(t,""+e))}else Lt(n,t,a(t,e)?e:null)}function Lt(n,t,e){Dt(t)&&(null==e?n.removeAttribute(t):n.setAttribute(t,""+e))}function jt(n,t){var e=u(t);e?(t=e.mutationMethod)?t(n,void 0):e.mustUseProperty?n[e.propertyName]=!e.hasBooleanValue&&"":n.removeAttribute(e.attributeName):n.removeAttribute(t)}function Ht(n,t){var e=t.value,r=t.checked;return xe({type:void 0,step:void 0,min:void 0,max:void 0},t,{defaultChecked:void 0,defaultValue:void 0,value:null!=e?e:n._wrapperState.initialValue,checked:null!=r?r:n._wrapperState.initialChecked})}function Bt(n,t){var e=t.defaultValue;n._wrapperState={initialChecked:null!=t.checked?t.checked:t.defaultChecked,initialValue:null!=t.value?t.value:e,controlled:"checkbox"===t.type||"radio"===t.type?null!=t.checked:null!=t.value}}function zt(n,t){null!=(t=t.checked)&&Ft(n,"checked",t)}function Vt(n,t){zt(n,t);var e=t.value;null!=e?0===e&&""===n.value?n.value="0":"number"===t.type?(t=parseFloat(n.value)||0,(e!=t||e==t&&n.value!=e)&&(n.value=""+e)):n.value!==""+e&&(n.value=""+e):(null==t.value&&null!=t.defaultValue&&n.defaultValue!==""+t.defaultValue&&(n.defaultValue=""+t.defaultValue),null==t.checked&&null!=t.defaultChecked&&(n.defaultChecked=!!t.defaultChecked))}function Kt(n,t){switch(t.type){case"submit":case"reset":break;case"color":case"date":case"datetime":case"datetime-local":case"month":case"time":case"week":n.value="",n.value=n.defaultValue;break;default:n.value=n.value}t=n.name,""!==t&&(n.name=""),n.defaultChecked=!n.defaultChecked,n.defaultChecked=!n.defaultChecked,""!==t&&(n.name=t)}function Wt(n){var t="";return Ce.Children.forEach(n,function(n){null==n||"string"!==typeof n&&"number"!==typeof n||(t+=n)}),t}function qt(n,t){return n=xe({children:void 0},t),(t=Wt(t.children))&&(n.children=t),n}function $t(n,t,e,r){if(n=n.options,t){t={};for(var o=0;o=t.length||r("93"),t=t[0]),e=""+t),null==e&&(e="")),n._wrapperState={initialValue:""+e}}function Zt(n,t){var e=t.value;null!=e&&(e=""+e,e!==n.value&&(n.value=e),null==t.defaultValue&&(n.defaultValue=e)),null!=t.defaultValue&&(n.defaultValue=t.defaultValue)}function Jt(n){var t=n.textContent;t===n._wrapperState.initialValue&&(n.value=t)}function ne(n){switch(n){case"svg":return"http://www.w3.org/2000/svg";case"math":return"http://www.w3.org/1998/Math/MathML";default:return"http://www.w3.org/1999/xhtml"}}function te(n,t){return null==n||"http://www.w3.org/1999/xhtml"===n?ne(t):"http://www.w3.org/2000/svg"===n&&"foreignObject"===t?"http://www.w3.org/1999/xhtml":n}function ee(n,t){if(t){var e=n.firstChild;if(e&&e===n.lastChild&&3===e.nodeType)return void(e.nodeValue=t)}n.textContent=t}function re(n,t){n=n.style;for(var e in t)if(t.hasOwnProperty(e)){var r=0===e.indexOf("--"),o=e,a=t[e];o=null==a||"boolean"===typeof a||""===a?"":r||"number"!==typeof a||0===a||Jo.hasOwnProperty(o)&&Jo[o]?(""+a).trim():a+"px","float"===e&&(e="cssFloat"),r?n.setProperty(e,o):n[e]=o}}function oe(n,t,e){t&&(ta[n]&&(null!=t.children||null!=t.dangerouslySetInnerHTML)&&r("137",n,e()),null!=t.dangerouslySetInnerHTML&&(null!=t.children&&r("60"),"object"===typeof t.dangerouslySetInnerHTML&&"__html"in t.dangerouslySetInnerHTML||r("61")),null!=t.style&&"object"!==typeof t.style&&r("62",e()))}function ae(n,t){if(-1===n.indexOf("-"))return"string"===typeof t.is;switch(n){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}function ue(n,t){n=9===n.nodeType||11===n.nodeType?n:n.ownerDocument;var e=An(n);t=Ye[t];for(var r=0;r<\/script>",n=n.removeChild(n.firstChild)):n="string"===typeof t.is?e.createElement(n,{is:t.is}):e.createElement(n):n=e.createElementNS(r,n),n}function ce(n,t){return(9===t.nodeType?t:t.ownerDocument).createTextNode(n)}function de(n,t,e,r){var o=ae(t,e);switch(t){case"iframe":case"object":Tn("topLoad","load",n);var a=e;break;case"video":case"audio":for(a in oa)oa.hasOwnProperty(a)&&Tn(a,oa[a],n);a=e;break;case"source":Tn("topError","error",n),a=e;break;case"img":case"image":Tn("topError","error",n),Tn("topLoad","load",n),a=e;break;case"form":Tn("topReset","reset",n),Tn("topSubmit","submit",n),a=e;break;case"details":Tn("topToggle","toggle",n),a=e;break;case"input":Bt(n,e),a=Ht(n,e),Tn("topInvalid","invalid",n),ue(r,"onChange");break;case"option":a=qt(n,e);break;case"select":Gt(n,e),a=xe({},e,{value:void 0}),Tn("topInvalid","invalid",n),ue(r,"onChange");break;case"textarea":Xt(n,e),a=Yt(n,e),Tn("topInvalid","invalid",n),ue(r,"onChange");break;default:a=e}oe(t,a,ra);var u,i=a;for(u in i)if(i.hasOwnProperty(u)){var c=i[u];"style"===u?re(n,c,ra):"dangerouslySetInnerHTML"===u?null!=(c=c?c.__html:void 0)&&Zo(n,c):"children"===u?"string"===typeof c?("textarea"!==t||""!==c)&&ee(n,c):"number"===typeof c&&ee(n,""+c):"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&"autoFocus"!==u&&(Ge.hasOwnProperty(u)?null!=c&&ue(r,u):o?Lt(n,u,c):null!=c&&Ft(n,u,c))}switch(t){case"input":an(n),Kt(n,e);break;case"textarea":an(n),Jt(n,e);break;case"option":null!=e.value&&n.setAttribute("value",e.value);break;case"select":n.multiple=!!e.multiple,t=e.value,null!=t?$t(n,!!e.multiple,t,!1):null!=e.defaultValue&&$t(n,!!e.multiple,e.defaultValue,!0);break;default:"function"===typeof a.onClick&&(n.onclick=ge)}}function fe(n,t,e,r,o){var a=null;switch(t){case"input":e=Ht(n,e),r=Ht(n,r),a=[];break;case"option":e=qt(n,e),r=qt(n,r),a=[];break;case"select":e=xe({},e,{value:void 0}),r=xe({},r,{value:void 0}),a=[];break;case"textarea":e=Yt(n,e),r=Yt(n,r),a=[];break;default:"function"!==typeof e.onClick&&"function"===typeof r.onClick&&(n.onclick=ge)}oe(t,r,ra);var u,i;n=null;for(u in e)if(!r.hasOwnProperty(u)&&e.hasOwnProperty(u)&&null!=e[u])if("style"===u)for(i in t=e[u])t.hasOwnProperty(i)&&(n||(n={}),n[i]="");else"dangerouslySetInnerHTML"!==u&&"children"!==u&&"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&"autoFocus"!==u&&(Ge.hasOwnProperty(u)?a||(a=[]):(a=a||[]).push(u,null));for(u in r){var c=r[u];if(t=null!=e?e[u]:void 0,r.hasOwnProperty(u)&&c!==t&&(null!=c||null!=t))if("style"===u)if(t){for(i in t)!t.hasOwnProperty(i)||c&&c.hasOwnProperty(i)||(n||(n={}),n[i]="");for(i in c)c.hasOwnProperty(i)&&t[i]!==c[i]&&(n||(n={}),n[i]=c[i])}else n||(a||(a=[]),a.push(u,n)),n=c;else"dangerouslySetInnerHTML"===u?(c=c?c.__html:void 0,t=t?t.__html:void 0,null!=c&&t!==c&&(a=a||[]).push(u,""+c)):"children"===u?t===c||"string"!==typeof c&&"number"!==typeof c||(a=a||[]).push(u,""+c):"suppressContentEditableWarning"!==u&&"suppressHydrationWarning"!==u&&(Ge.hasOwnProperty(u)?(null!=c&&ue(o,u),a||t===c||(a=[])):(a=a||[]).push(u,c))}return n&&(a=a||[]).push("style",n),a}function me(n,t,e,r,o){"input"===e&&"radio"===o.type&&null!=o.name&&zt(n,o),ae(e,r),r=ae(e,o);for(var a=0;a=c.hasBooleanValue+c.hasNumericValue+c.hasOverloadedBooleanValue||r("50",i),u.hasOwnProperty(i)&&(c.attributeName=u[i]),a.hasOwnProperty(i)&&(c.attributeNamespace=a[i]),n.hasOwnProperty(i)&&(c.mutationMethod=n[i]),Te[i]=c}}},Te={},_e=Ee,Se=_e.MUST_USE_PROPERTY,Pe=_e.HAS_BOOLEAN_VALUE,Oe=_e.HAS_NUMERIC_VALUE,Ae=_e.HAS_POSITIVE_NUMERIC_VALUE,De=_e.HAS_OVERLOADED_BOOLEAN_VALUE,Fe=_e.HAS_STRING_BOOLEAN_VALUE,Le={Properties:{allowFullScreen:Pe,async:Pe,autoFocus:Pe,autoPlay:Pe,capture:De,checked:Se|Pe,cols:Ae,contentEditable:Fe,controls:Pe,default:Pe,defer:Pe,disabled:Pe,download:De,draggable:Fe,formNoValidate:Pe,hidden:Pe,loop:Pe,multiple:Se|Pe,muted:Se|Pe,noValidate:Pe,open:Pe,playsInline:Pe,readOnly:Pe,required:Pe,reversed:Pe,rows:Ae,rowSpan:Oe,scoped:Pe,seamless:Pe,selected:Se|Pe,size:Ae,start:Oe,span:Ae,spellCheck:Fe,style:0,tabIndex:0,itemScope:Pe,acceptCharset:0,className:0,htmlFor:0,httpEquiv:0,value:Fe},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMMutationMethods:{value:function(n,t){if(null==t)return n.removeAttribute("value");"number"!==n.type||!1===n.hasAttribute("value")?n.setAttribute("value",""+t):n.validity&&!n.validity.badInput&&n.ownerDocument.activeElement!==n&&n.setAttribute("value",""+t)}}},je=_e.HAS_STRING_BOOLEAN_VALUE,He={xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace"},Be={Properties:{autoReverse:je,externalResourcesRequired:je,preserveAlpha:je},DOMAttributeNames:{autoReverse:"autoReverse",externalResourcesRequired:"externalResourcesRequired",preserveAlpha:"preserveAlpha"},DOMAttributeNamespaces:{xlinkActuate:He.xlink,xlinkArcrole:He.xlink,xlinkHref:He.xlink,xlinkRole:He.xlink,xlinkShow:He.xlink,xlinkTitle:He.xlink,xlinkType:He.xlink,xmlBase:He.xml,xmlLang:He.xml,xmlSpace:He.xml}},ze=/[\-\:]([a-z])/g;"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode x-height xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type xml:base xmlns:xlink xml:lang xml:space".split(" ").forEach(function(n){var t=n.replace(ze,i);Be.Properties[t]=0,Be.DOMAttributeNames[t]=n}),_e.injectDOMPropertyConfig(Le),_e.injectDOMPropertyConfig(Be);var Ve={_caughtError:null,_hasCaughtError:!1,_rethrowError:null,_hasRethrowError:!1,injection:{injectErrorUtils:function(n){"function"!==typeof n.invokeGuardedCallback&&r("197"),c=n.invokeGuardedCallback}},invokeGuardedCallback:function(n,t,e,r,o,a,u,i,d){c.apply(Ve,arguments)},invokeGuardedCallbackAndCatchFirstError:function(n,t,e,r,o,a,u,i,c){if(Ve.invokeGuardedCallback.apply(this,arguments),Ve.hasCaughtError()){var d=Ve.clearCaughtError();Ve._hasRethrowError||(Ve._hasRethrowError=!0,Ve._rethrowError=d)}},rethrowCaughtError:function(){return d.apply(Ve,arguments)},hasCaughtError:function(){return Ve._hasCaughtError},clearCaughtError:function(){if(Ve._hasCaughtError){var n=Ve._caughtError;return Ve._caughtError=null,Ve._hasCaughtError=!1,n}r("198")}},Ke=null,We={},qe=[],$e={},Ge={},Ye={},Xe=Object.freeze({plugins:qe,eventNameDispatchConfigs:$e,registrationNameModules:Ge,registrationNameDependencies:Ye,possibleRegistrationNames:null,injectEventPluginOrder:l,injectEventPluginsByName:h}),Ze=null,Je=null,nr=null,tr=null,er={injectEventPluginOrder:l,injectEventPluginsByName:h},rr=Object.freeze({injection:er,getListener:y,extractEvents:x,enqueueEvents:g,processEventQueue:I}),or=Math.random().toString(36).slice(2),ar="__reactInternalInstance$"+or,ur="__reactEventHandlers$"+or,ir=Object.freeze({precacheFiberNode:function(n,t){t[ar]=n},getClosestInstanceFromNode:b,getInstanceFromNode:function(n){return n=n[ar],!n||5!==n.tag&&6!==n.tag?null:n},getNodeFromInstance:R,getFiberCurrentPropsFromNode:U,updateFiberProps:function(n,t){n[ur]=t}}),cr=Object.freeze({accumulateTwoPhaseDispatches:P,accumulateTwoPhaseDispatchesSkipTarget:function(n){M(n,T)},accumulateEnterLeaveDispatches:O,accumulateDirectDispatches:function(n){M(n,S)}}),dr=null,fr={_root:null,_startText:null,_fallbackText:null},mr="dispatchConfig _targetInst nativeEvent isDefaultPrevented isPropagationStopped _dispatchListeners _dispatchInstances".split(" "),lr={type:null,target:null,currentTarget:ge.thatReturnsNull,eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(n){return n.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null};xe(L.prototype,{preventDefault:function(){this.defaultPrevented=!0;var n=this.nativeEvent;n&&(n.preventDefault?n.preventDefault():"unknown"!==typeof n.returnValue&&(n.returnValue=!1),this.isDefaultPrevented=ge.thatReturnsTrue)},stopPropagation:function(){var n=this.nativeEvent;n&&(n.stopPropagation?n.stopPropagation():"unknown"!==typeof n.cancelBubble&&(n.cancelBubble=!0),this.isPropagationStopped=ge.thatReturnsTrue)},persist:function(){this.isPersistent=ge.thatReturnsTrue},isPersistent:ge.thatReturnsFalse,destructor:function(){var n,t=this.constructor.Interface;for(n in t)this[n]=null;for(t=0;t=parseInt(vr.version(),10))}var Nr,Cr=Mr,yr=ye.canUseDOM&&(!sr||pr&&8=pr),xr=String.fromCharCode(32),gr={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["topCompositionEnd","topKeyPress","topTextInput","topPaste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"topBlur topCompositionEnd topKeyDown topKeyPress topKeyUp topMouseDown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"topBlur topCompositionStart topKeyDown topKeyPress topKeyUp topMouseDown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"topBlur topCompositionUpdate topKeyDown topKeyPress topKeyUp topMouseDown".split(" ")}},Ir=!1,br=!1,Rr={eventTypes:gr,extractEvents:function(n,t,e,r){var o;if(sr)n:{switch(n){case"topCompositionStart":var a=gr.compositionStart;break n;case"topCompositionEnd":a=gr.compositionEnd;break n;case"topCompositionUpdate":a=gr.compositionUpdate;break n}a=void 0}else br?K(n,e)&&(a=gr.compositionEnd):"topKeyDown"===n&&229===e.keyCode&&(a=gr.compositionStart);return a?(yr&&(br||a!==gr.compositionStart?a===gr.compositionEnd&&br&&(o=D()):(fr._root=r,fr._startText=F(),br=!0)),a=z.getPooled(a,t,e,r),o?a.data=o:null!==(o=W(e))&&(a.data=o),P(a),o=a):o=null,(n=Cr?q(n,e):$(n,e))?(t=V.getPooled(gr.beforeInput,t,e,r),t.data=n,P(t)):t=null,[o,t]}},Ur=null,Qr=null,wr=null,kr={injectFiberControlledHostComponent:function(n){Ur=n}},Er=Object.freeze({injection:kr,enqueueStateRestore:Y,restoreStateIfNeeded:X}),Tr=!1,_r={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};ye.canUseDOM&&(Nr=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("",""));var Sr={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:"topBlur topChange topClick topFocus topInput topKeyDown topKeyUp topSelectionChange".split(" ")}},Pr=null,Or=null,Ar=!1;ye.canUseDOM&&(Ar=en("input")&&(!document.documentMode||9=document.documentMode,no={select:{phasedRegistrationNames:{bubbled:"onSelect",captured:"onSelectCapture"},dependencies:"topBlur topContextMenu topFocus topKeyDown topKeyUp topMouseDown topMouseUp topSelectionChange".split(" ")}},to=null,eo=null,ro=null,oo=!1,ao={eventTypes:no,extractEvents:function(n,t,e,r){var o,a=r.window===r?r.document:9===r.nodeType?r:r.ownerDocument;if(!(o=!a)){n:{a=An(a),o=Ye.onSelect;for(var u=0;u=Bo-n){if(!(-1!==jo&&jo<=n))return void(Ho||(Ho=!0,requestAnimationFrame(Wo)));Do.didTimeout=!0}else Do.didTimeout=!1;jo=-1,n=Fo,Fo=null,null!==n&&n(Do)}},!1);var Wo=function(n){Ho=!1;var t=n-Bo+Vo;tt&&(t=8),Vo=t"+t+"",t=Xo.firstChild;n.firstChild;)n.removeChild(n.firstChild);for(;t.firstChild;)n.appendChild(t.firstChild)}}),Jo={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},na=["Webkit","ms","Moz","O"];Object.keys(Jo).forEach(function(n){na.forEach(function(t){t=t+n.charAt(0).toUpperCase()+n.substring(1),Jo[t]=Jo[n]})});var ta=xe({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}),ea=Yo.html,ra=ge.thatReturns(""),oa={topAbort:"abort",topCanPlay:"canplay",topCanPlayThrough:"canplaythrough",topDurationChange:"durationchange",topEmptied:"emptied",topEncrypted:"encrypted",topEnded:"ended",topError:"error",topLoadedData:"loadeddata",topLoadedMetadata:"loadedmetadata",topLoadStart:"loadstart",topPause:"pause",topPlay:"play",topPlaying:"playing",topProgress:"progress",topRateChange:"ratechange",topSeeked:"seeked",topSeeking:"seeking",topStalled:"stalled",topSuspend:"suspend",topTimeUpdate:"timeupdate",topVolumeChange:"volumechange",topWaiting:"waiting"},aa=Object.freeze({createElement:ie,createTextNode:ce,setInitialProperties:de,diffProperties:fe,updateProperties:me,diffHydratedProperties:le,diffHydratedText:he,warnForUnmatchedText:function(){},warnForDeletedHydratableElement:function(){},warnForDeletedHydratableText:function(){},warnForInsertedHydratedElement:function(){},warnForInsertedHydratedText:function(){},restoreControlledState:function(n,t,e){switch(t){case"input":if(Vt(n,e),t=e.name,"radio"===e.type&&null!=t){for(e=n;e.parentNode;)e=e.parentNode;for(e=e.querySelectorAll("input[name="+JSON.stringify(""+t)+'][type="radio"]'),t=0;tr&&(o=r,r=n,n=o),o=Fn(e,n);var a=Fn(e,r);if(o&&a&&(1!==t.rangeCount||t.anchorNode!==o.node||t.anchorOffset!==o.offset||t.focusNode!==a.node||t.focusOffset!==a.offset)){var u=document.createRange();u.setStart(o.node,o.offset),t.removeAllRanges(),n>r?(t.addRange(u),t.extend(a.node,a.offset)):(u.setEnd(a.node,a.offset),t.addRange(u))}}for(t=[],n=e;n=n.parentNode;)1===n.nodeType&&t.push({element:n,left:n.scrollLeft,top:n.scrollTop});for(Qe(e),e=0;e=t?n*n:o(n*n,t)}function a(n,t,e){return n+t>e?n+t:a(n+t,t,e)}function u(n){return r(10)+o(10,99999999999)+a(10,5,1050)}t.a=u},function(n,t,e){"use strict";function r(){return o(),Math.random()}function o(){return a(),Math.random()}function a(){return u(),Math.random()}function u(){return i(),Math.random()}function i(){return c(),Math.random()}function c(){return d(),Math.random()}function d(){return f(),Math.random()}function f(){return m(),Math.random()}function m(){return l(),Math.random()}function l(){return h(),Math.random()}function h(){return s(),Math.random()}function s(){return p(),Math.random()}function p(){return M(),Math.random()}function M(){return v(),Math.random()}function v(){return N(),Math.random()}function N(){return C(),Math.random()}function C(){return y(),Math.random()}function y(){return x(),Math.random()}function x(){return g(),Math.random()}function g(){return I(),Math.random()}function I(){return b(),Math.random()}function b(){return R(),Math.random()}function R(){return U(),Math.random()}function U(){return Q(),Math.random()}function Q(){return w(),Math.random()}function w(){return k(),Math.random()}function k(){return E(),Math.random()}function E(){return T(),Math.random()}function T(){return _(),Math.random()}function _(){return S(),Math.random()}function S(){return P(),Math.random()}function P(){return O(),Math.random()}function O(){return A(),Math.random()}function A(){return D(),Math.random()}function D(){return F(),Math.random()}function F(){return L(),Math.random()}function L(){return j(),Math.random()}function j(){return H(),Math.random()}function H(){return B(),Math.random()}function B(){return z(),Math.random()}function z(){return V(),Math.random()}function V(){return K(),Math.random()}function K(){return W(),Math.random()}function W(){return q(),Math.random()}function q(){return $(),Math.random()}function $(){return G(),Math.random()}function G(){return Y(),Math.random()}function Y(){return X(),Math.random()}function X(){return Z(),Math.random()}function Z(){return J(),Math.random()}function J(){return nn(),Math.random()}function nn(){return tn(),Math.random()}function tn(){return en(),Math.random()}function en(){return rn(),Math.random()}function rn(){return on(),Math.random()}function on(){return an(),Math.random()}function an(){return un(),Math.random()}function un(){return cn(),Math.random()}function cn(){return dn(),Math.random()}function dn(){return fn(),Math.random()}function fn(){return mn(),Math.random()}function mn(){return ln(),Math.random()}function ln(){return hn(),Math.random()}function hn(){return sn(),Math.random()}function sn(){return pn(),Math.random()}function pn(){return Mn(),Math.random()}function Mn(){return vn(),Math.random()}function vn(){return Nn(),Math.random()}function Nn(){return Cn(),Math.random()}function Cn(){return yn(),Math.random()}function yn(){return xn(),Math.random()}function xn(){return gn(),Math.random()}function gn(){return In(),Math.random()}function In(){return bn(),Math.random()}function bn(){return Rn(),Math.random()}function Rn(){return Un(),Math.random()}function Un(){return Qn(),Math.random()}function Qn(){return wn(),Math.random()}function wn(){return kn(),Math.random()}function kn(){return En(),Math.random()}function En(){return Tn(),Math.random()}function Tn(){return _n(),Math.random()}function _n(){return Sn(),Math.random()}function Sn(){return Pn(),Math.random()}function Pn(){return On(),Math.random()}function On(){return An(),Math.random()}function An(){return Dn(),Math.random()}function Dn(){return Fn(),Math.random()}function Fn(){return Ln(),Math.random()}function Ln(){return jn(),Math.random()}function jn(){return Hn(),Math.random()}function Hn(){return Bn(),Math.random()}function Bn(){return zn(),Math.random()}function zn(){return Vn(),Math.random()}function Vn(){return Kn(),Math.random()}function Kn(){return Wn(),Math.random()}function Wn(){return qn(),Math.random()}function qn(){return $n(),Math.random()}function $n(){return Gn(),Math.random()}function Gn(){return Yn(),Math.random()}function Yn(){return Xn(),Math.random()}function Xn(){return Zn(),Math.random()}function Zn(){return Jn(),Math.random()}function Jn(){return nt(),Math.random()}function nt(){return tt(),Math.random()}function tt(){return et(),Math.random()}function et(){return rt(),Math.random()}function rt(){return ot(),Math.random()}function ot(){return at(),Math.random()}function at(){return ut(),Math.random()}function ut(){return it(),Math.random()}function it(){return ct(),Math.random()}function ct(){return dt(),Math.random()}function dt(){return ft(),Math.random()}function ft(){return mt(),Math.random()}function mt(){return lt(),Math.random()}function lt(){return ht(),Math.random()}function ht(){return st(),Math.random()}function st(){return pt(),Math.random()}function pt(){return Mt(),Math.random()}function Mt(){return vt(),Math.random()}function vt(){return Nt(),Math.random()}function Nt(){return Ct(),Math.random()}function Ct(){return yt(),Math.random()}function yt(){return xt(),Math.random()}function xt(){return gt(),Math.random()}function gt(){return It(),Math.random()}function It(){return bt(),Math.random()}function bt(){return Rt(),Math.random()}function Rt(){return Ut(),Math.random()}function Ut(){return Qt(),Math.random()}function Qt(){return wt(),Math.random()}function wt(){return kt(),Math.random()}function kt(){return Et(),Math.random()}function Et(){return Tt(),Math.random()}function Tt(){return _t(),Math.random()}function _t(){return St(),Math.random()}function St(){return Pt(),Math.random()}function Pt(){return Ot(),Math.random()}function Ot(){return At(),Math.random()}function At(){return Dt(),Math.random()}function Dt(){return Ft(),Math.random()}function Ft(){return Lt(),Math.random()}function Lt(){return jt(),Math.random()}function jt(){return Ht(),Math.random()}function Ht(){return Bt(),Math.random()}function Bt(){return zt(),Math.random()}function zt(){return Vt(),Math.random()}function Vt(){return Kt(),Math.random()}function Kt(){return Wt(),Math.random()}function Wt(){return qt(),Math.random()}function qt(){return $t(),Math.random()}function $t(){return Gt(),Math.random()}function Gt(){return Yt(),Math.random()}function Yt(){return Xt(),Math.random()}function Xt(){return Zt(),Math.random()}function Zt(){return Jt(),Math.random()}function Jt(){return ne(),Math.random()}function ne(){return te(),Math.random()}function te(){return ee(),Math.random()}function ee(){return re(),Math.random()}function re(){return oe(),Math.random()}function oe(){return ae(),Math.random()}function ae(){return ue(),Math.random()}function ue(){return ie(),Math.random()}function ie(){return ce(),Math.random()}function ce(){return de(),Math.random()}function de(){return fe(),Math.random()}function fe(){return me(),Math.random()}function me(){return le(),Math.random()}function le(){return he(),Math.random()}function he(){return se(),Math.random()}function se(){return pe(),Math.random()}function pe(){return Me(),Math.random()}function Me(){return ve(),Math.random()}function ve(){return Ne(),Math.random()}function Ne(){return Ce(),Math.random()}function Ce(){return ye(),Math.random()}function ye(){return xe(),Math.random()}function xe(){return ge(),Math.random()}function ge(){return Ie(),Math.random()}function Ie(){return be(),Math.random()}function be(){return Re(),Math.random()}function Re(){return Ue(),Math.random()}function Ue(){return Qe(),Math.random()}function Qe(){return we(),Math.random()}function we(){return ke(),Math.random()}function ke(){return Ee(),Math.random()}function Ee(){return Te(),Math.random()}function Te(){return _e(),Math.random()}function _e(){return Se(),Math.random()}function Se(){return Pe(),Math.random()}function Pe(){return Oe(),Math.random()}function Oe(){return Ae(),Math.random()}function Ae(){return De(),Math.random()}function De(){return Fe(),Math.random()}function Fe(){return Le(),Math.random()}function Le(){return je(),Math.random()}function je(){return He(),Math.random()}function He(){return Math.random()}t.a=r}]); +//# sourceMappingURL=main.js.map diff --git a/testing/talos/talos/tests/devtools/addon/content/pages/custom/debugger/static/js/main.js.map b/testing/talos/talos/tests/devtools/addon/content/pages/custom/debugger/static/js/main.js.map new file mode 100644 index 000000000000..3138c39dedd3 --- /dev/null +++ b/testing/talos/talos/tests/devtools/addon/content/pages/custom/debugger/static/js/main.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../static/js/main.js","../webpack/bootstrap f1fd4c13c329564a0384","../node_modules/object-assign/index.js","../node_modules/react/index.js","../node_modules/fbjs/lib/emptyFunction.js","../node_modules/react-scripts/node_modules/promise/lib/core.js","../node_modules/fbjs/lib/emptyObject.js","../node_modules/react-scripts/config/polyfills.js","../node_modules/react-scripts/node_modules/promise/lib/rejection-tracking.js","../node_modules/asap/browser-raw.js","../node_modules/webpack/buildin/global.js","../node_modules/react-scripts/node_modules/promise/lib/es6-extensions.js","../node_modules/whatwg-fetch/fetch.js","index.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/fbjs/lib/ExecutionEnvironment.js","../node_modules/fbjs/lib/EventListener.js","../node_modules/fbjs/lib/getActiveElement.js","../node_modules/fbjs/lib/shallowEqual.js","../node_modules/fbjs/lib/containsNode.js","../node_modules/fbjs/lib/isTextNode.js","../node_modules/fbjs/lib/isNode.js","../node_modules/fbjs/lib/focusNode.js","App.js","step-in-test.js","step-over-test.js","step-out-test.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","toObject","val","undefined","TypeError","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","assign","test1","String","getOwnPropertyNames","test2","fromCharCode","map","join","test3","split","forEach","letter","keys","err","target","source","from","symbols","to","arguments","length","key","makeEmptyFunction","arg","emptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","this","thatReturnsArgument","noop","getThen","obj","then","ex","LAST_ERROR","IS_ERROR","tryCallOne","fn","a","tryCallTwo","b","Promise","_75","_83","_18","_38","doResolve","safeThen","self","onFulfilled","onRejected","constructor","resolve","reject","res","handle","Handler","deferred","_47","push","handleResolved","asap","cb","promise","ret","newValue","finale","bind","_71","done","value","reason","_44","emptyObject","enable","window","disable","enabled","options","onUnhandled","id","allRejections","matchWhitelist","rejections","error","whitelist","DEFAULT_WHITELIST","displayId","logged","logError","onHandled","console","warn","_56","clearTimeout","timeout","setTimeout","stack","line","list","some","cls","ReferenceError","RangeError","global","rawAsap","task","queue","requestFlush","flushing","flush","index","currentIndex","capacity","scan","newLength","makeRequestCallFromTimer","callback","handleTimer","timeoutHandle","clearInterval","intervalHandle","setInterval","scope","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","toggle","observer","node","document","createTextNode","observe","characterData","data","g","Function","eval","e","valuePromise","TRUE","FALSE","NULL","UNDEFINED","ZERO","EMPTYSTRING","all","arr","args","Array","slice","remaining","race","values","normalizeName","test","toLowerCase","normalizeValue","iteratorFor","items","iterator","next","shift","support","iterable","Symbol","Headers","headers","append","isArray","header","consumed","body","bodyUsed","fileReaderReady","reader","onload","result","onerror","readBlobAsArrayBuffer","blob","FileReader","readAsArrayBuffer","readBlobAsText","readAsText","readArrayBufferAsText","buf","view","Uint8Array","chars","bufferClone","byteLength","set","buffer","Body","_initBody","_bodyInit","_bodyText","Blob","isPrototypeOf","_bodyBlob","formData","FormData","_bodyFormData","searchParams","URLSearchParams","toString","arrayBuffer","isDataView","_bodyArrayBuffer","ArrayBuffer","isArrayBufferView","Error","type","rejected","text","decode","json","JSON","parse","normalizeMethod","method","upcased","toUpperCase","methods","indexOf","Request","input","url","credentials","mode","referrer","form","trim","bytes","replace","decodeURIComponent","parseHeaders","rawHeaders","parts","Response","bodyInit","status","ok","statusText","fetch","viewClasses","DataView","isView","oldValue","has","thisArg","entries","clone","response","redirectStatuses","redirect","location","init","request","xhr","XMLHttpRequest","getAllResponseHeaders","responseURL","responseText","ontimeout","open","withCredentials","responseType","setRequestHeader","send","polyfill","__webpack_exports__","__WEBPACK_IMPORTED_MODULE_0_react__","__WEBPACK_IMPORTED_MODULE_0_react___default","__WEBPACK_IMPORTED_MODULE_1_react_dom__","__WEBPACK_IMPORTED_MODULE_1_react_dom___default","__WEBPACK_IMPORTED_MODULE_2__App__","render","createElement","getElementById","y","encodeURIComponent","framesToPop","A","props","context","refs","updater","z","B","C","E","J","k","ref","H","I","f","children","h","defaultProps","$$typeof","r","_owner","G","current","K","escape","=",":","N","M","pop","keyPrefix","func","count","O","P","t","u","v","Q","x","R","S","T","L","q","w","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","isReactComponent","setState","forceUpdate","D","isPureReactComponent","F","unstable_isAsyncReactComponent","__self","__source","U","Children","toArray","only","Component","PureComponent","unstable_AsyncComponent","Fragment","cloneElement","createFactory","isValidElement","version","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","V","freeze","default","W","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","pa","va","oa","wa","hasBooleanValue","hasStringBooleanValue","hasOverloadedBooleanValue","ua","Ia","Ja","_hasCaughtError","_caughtError","apply","Ka","_hasRethrowError","_rethrowError","Na","La","Ma","Oa","extractEvents","eventTypes","Pa","phasedRegistrationNames","Qa","registrationName","Ra","Sa","dependencies","Ta","Ua","Za","currentTarget","Ya","invokeGuardedCallbackAndCatchFirstError","$a","concat","ab","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","db","gb","ib","stateNode","Wa","disabled","jb","kb","bb","lb","rethrowCaughtError","pb","parentNode","tag","qb","rb","ob","tb","ub","vb","dispatchConfig","wb","_targetInst","xb","yb","zb","Ab","Bb","alternate","Eb","Db","canUseDOM","documentElement","Fb","_fallbackText","_startText","Gb","_root","nativeEvent","Interface","isDefaultPrevented","defaultPrevented","returnValue","Kb","eventPool","Lb","destructor","Jb","getPooled","Mb","Nb","dc","Pb","keyCode","ec","detail","gc","which","cc","ac","hc","fc","Vb","ctrlKey","altKey","metaKey","char","$b","mc","Xa","jc","restoreControlledState","oc","kc","lc","pc","rc","tc","sc","vc","nodeName","uc","wc","srcElement","correspondingUseElement","nodeType","yc","setAttribute","xc","implementation","hasFeature","zc","Ac","getOwnPropertyDescriptor","getValue","setValue","stopTracking","_valueTracker","Bc","Cc","checked","Ec","Dc","change","Hc","Ic","Jc","Lc","Fc","detachEvent","Mc","Gc","propertyName","Nc","attachEvent","Oc","Pc","$c","bd","dd","getModifierState","cd","ed","fd","jd","displayName","kd","effectTag","ld","_reactInternalFiber","md","nd","child","sibling","od","pd","rd","targetInst","ancestors","containerInfo","sd","topLevelType","ud","td","ba","listen","vd","wd","capture","qd","yd","Cd","Ad","zd","Bd","Hd","Gd","Fd","Ed","Id","firstChild","Jd","textContent","offset","nextSibling","Kd","contentEditable","Rd","Qd","Nd","da","start","selectionStart","end","selectionEnd","getSelection","anchorNode","anchorOffset","focusNode","focusOffset","Pd","ea","Md","select","Od","Td","Ud","Vd","Wd","charCode","Zd","$d","ae","be","ce","he","ge","ke","le","je","ie","me","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","childContextTypes","ne","X","oe","cursor","pe","getChildContext","qe","__reactInternalMemoizedMergedChildContext","re","Y","memoizedState","updateQueue","memoizedProps","pendingProps","internalContextTag","lastEffect","firstEffect","nextEffect","expirationTime","se","te","ue","ve","we","handler","xe","ye","pendingChildren","Be","Ce","isDisabled","supportsFiber","inject","ze","onCommitFiberRoot","Ae","onCommitFiberUnmount","De","Ee","Fe","baseState","first","last","callbackList","hasForceUpdate","isInitialized","Ge","He","Ie","partialState","Je","isReplace","isForced","Ke","Le","nextCallback","adoptClassInstance","constructClassInstance","mountClassInstance","state","componentWillMount","componentDidMount","updateClassInstance","componentWillReceiveProps","componentDidUpdate","shouldComponentUpdate","componentWillUpdate","Xe","We","Ze","_stringRef","$e","af","Map","Re","Ve","Se","Te","Ue","Ye","df","cf","bf","pendingContext","shouldSetTextContent","useSyncScheduling","shouldDeprioritizeSubtree","pushHostContext","pushHostContainer","enterHydrationState","resetHydrationState","tryToClaimNextHydratableInstance","Ob","beginWork","element","hydrate","beginFailedWork","ef","createInstance","createTextInstance","appendInitialChild","finalizeInitialChildren","prepareUpdate","persistence","getRootHostContainer","popHostContext","getHostContext","popHostContainer","prepareToHydrateHostInstance","prepareToHydrateHostTextInstance","popHydrationState","mutation","completeWork","ff","componentWillUnmount","getPublicInstance","commitMount","commitUpdate","resetTextContent","commitTextUpdate","appendChild","appendChildToContainer","insertBefore","insertInContainerBefore","removeChild","removeChildFromContainer","commitResetTextContent","commitPlacement","commitDeletion","commitWork","commitLifeCycles","commitAttachRef","commitDetachRef","hf","gf","getChildHostContext","getRootHostContext","resetHostContainer","jf","hydration","canHydrateInstance","canHydrateTextInstance","getNextHydratableSibling","getFirstHydratableChild","hydrateInstance","hydrateTextInstance","kf","Qb","ja","isReadyForCommit","yg","zg","Ag","Ne","Oe","Sc","Bg","Tc","Cg","Dg","Eg","componentDidCatch","componentStack","ca","Qc","ha","qa","Fg","rg","Gg","Uc","ra","Rc","eb","qg","Set","add","_debugOwner","_debugSource","fileName","lineNumber","componentName","errorBoundary","errorBoundaryFound","errorBoundaryName","willRetry","suppressReactErrorLogging","Vc","ka","Hg","Rb","Ig","nextScheduledRoot","remainingExpirationTime","sa","Fa","la","Sb","ma","na","Wc","Pe","Tb","Jg","Xc","Kg","fb","Yc","Ub","Zc","finishedWork","timeRemaining","Lg","Me","now","scheduleDeferredCallback","cancelDeferredCallback","prepareForCommit","resetAfterCommit","computeAsyncExpiration","computeExpirationForFiber","scheduleWork","batchedUpdates","unbatchedUpdates","flushSync","deferredUpdates","lf","createContainer","updateContainer","getPublicRootInstance","findHostInstance","findHostInstanceWithNoPortals","injectIntoDevTools","findFiberByHostInstance","findHostInstanceByFiber","pf","Hf","Gf","Ff","Ef","If","mutationMethod","hasNumericValue","isNaN","hasPositiveNumericValue","Jf","mustUseProperty","attributeName","attributeNamespace","setAttributeNS","Kf","removeAttribute","Lf","step","min","max","defaultChecked","defaultValue","_wrapperState","initialValue","initialChecked","Mf","controlled","Nf","Of","parseFloat","Pf","Qf","aa","Rf","Sf","selected","defaultSelected","Tf","wasMultiple","multiple","Uf","dangerouslySetInnerHTML","Vf","Wf","Xf","Zf","$f","cg","lastChild","nodeValue","fg","style","dg","setProperty","hg","gg","ig","is","lg","ownerDocument","topBlur","topFocus","topCancel","topClose","Dd","ng","jg","innerHTML","createElementNS","og","pg","mg","kg","__html","bg","onClick","onclick","sg","tg","ug","vg","Ng","Og","hasAttribute","Pg","_reactRootContainer","Z","Qg","Rg","fa","ia","suppressContentEditableWarning","suppressHydrationWarning","ta","MUST_USE_PROPERTY","HAS_BOOLEAN_VALUE","HAS_NUMERIC_VALUE","HAS_POSITIVE_NUMERIC_VALUE","HAS_OVERLOADED_BOOLEAN_VALUE","HAS_STRING_BOOLEAN_VALUE","injectDOMPropertyConfig","Properties","DOMAttributeNamespaces","DOMAttributeNames","DOMMutationMethods","xa","ya","za","Aa","Ba","Ca","Da","allowFullScreen","async","autoFocus","autoPlay","cols","controls","defer","download","draggable","formNoValidate","hidden","loop","muted","noValidate","playsInline","readOnly","required","reversed","rows","rowSpan","scoped","seamless","size","span","spellCheck","tabIndex","itemScope","acceptCharset","className","htmlFor","httpEquiv","validity","badInput","activeElement","Ea","xlink","xml","Ga","autoReverse","externalResourcesRequired","preserveAlpha","xlinkActuate","xlinkArcrole","xlinkHref","xlinkRole","xlinkShow","xlinkTitle","xlinkType","xmlBase","xmlLang","xmlSpace","Ha","injection","injectErrorUtils","invokeGuardedCallback","hasCaughtError","clearCaughtError","Va","plugins","eventNameDispatchConfigs","registrationNameModules","registrationNameDependencies","possibleRegistrationNames","injectEventPluginOrder","injectEventPluginsByName","hb","mb","getListener","enqueueEvents","processEventQueue","nb","Math","random","sb","precacheFiberNode","getClosestInstanceFromNode","getInstanceFromNode","getNodeFromInstance","getFiberCurrentPropsFromNode","updateFiberProps","Cb","accumulateTwoPhaseDispatches","accumulateTwoPhaseDispatchesSkipTarget","accumulateEnterLeaveDispatches","accumulateDirectDispatches","Hb","Ib","eventPhase","bubbles","cancelable","timeStamp","Date","isTrusted","preventDefault","stopPropagation","cancelBubble","persist","augmentClass","Wb","documentMode","Xb","Yb","opera","parseInt","Zb","bc","beforeInput","bubbled","captured","compositionEnd","compositionStart","compositionUpdate","ic","nc","injectFiberControlledHostComponent","qc","enqueueStateRestore","restoreStateIfNeeded","color","date","datetime","datetime-local","email","month","number","password","range","search","tel","time","week","Kc","ad","_isInputEventSupported","getAttribute","Alt","Control","Meta","Shift","screenX","screenY","clientX","clientY","pageX","pageY","shiftKey","button","buttons","relatedTarget","fromElement","toElement","gd","mouseEnter","mouseLeave","hd","defaultView","parentWindow","xd","_enabled","_handleTopLevel","setHandleTopLevel","setEnabled","isEnabled","trapBubbledEvent","trapCapturedEvent","dispatchEvent","animationend","animationiteration","animationstart","transitionend","animation","transition","topAbort","topAnimationEnd","topAnimationIteration","topAnimationStart","topCanPlay","topCanPlayThrough","topChange","topClick","topCompositionEnd","topCompositionStart","topCompositionUpdate","topContextMenu","topCopy","topCut","topDoubleClick","topDrag","topDragEnd","topDragEnter","topDragExit","topDragLeave","topDragOver","topDragStart","topDrop","topDurationChange","topEmptied","topEncrypted","topEnded","topError","topInput","topKeyDown","topKeyPress","topKeyUp","topLoadedData","topLoad","topLoadedMetadata","topLoadStart","topMouseDown","topMouseMove","topMouseOut","topMouseOver","topMouseUp","topPaste","topPause","topPlay","topPlaying","topProgress","topRateChange","topScroll","topSeeked","topSeeking","topSelectionChange","topStalled","topSuspend","topTextInput","topTimeUpdate","topToggle","topTouchCancel","topTouchEnd","topTouchMove","topTouchStart","topTransitionEnd","topVolumeChange","topWaiting","topWheel","Ld","Sd","onSelect","animationName","elapsedTime","pseudoElement","clipboardData","Xd","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Yd","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","repeat","locale","dataTransfer","touches","targetTouches","changedTouches","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","de","ee","fe","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","Qe","mf","nf","of","qf","performance","rf","sf","tf","requestIdleCallback","cancelIdleCallback","Bf","uf","vf","wf","xf","yf","zf","Af","didTimeout","Cf","addEventListener","requestAnimationFrame","Df","postMessage","Infinity","Yf","html","mathml","svg","ag","MSApp","execUnsafeLocalFunction","namespaceURI","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","eg","charAt","substring","menuitem","area","base","br","col","embed","hr","img","keygen","link","meta","param","track","wbr","wg","setInitialProperties","diffProperties","updateProperties","diffHydratedProperties","diffHydratedText","warnForUnmatchedText","warnForDeletedHydratableElement","warnForDeletedHydratableText","warnForInsertedHydratedElement","warnForInsertedHydratedText","querySelectorAll","stringify","xg","Mg","tagName","rangeCount","focusedElem","selectionRange","extend","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","focus","didNotMatchHydratedContainerTextInstance","didNotMatchHydratedTextInstance","didNotHydrateContainerInstance","didNotHydrateInstance","didNotFindHydratableContainerInstance","didNotFindHydratableContainerTextInstance","didNotFindHydratableInstance","didNotFindHydratableTextInstance","unmount","Sg","createPortal","findDOMNode","unstable_renderSubtreeIntoContainer","unmountComponentAtNode","unstable_createPortal","unstable_batchedUpdates","unstable_deferredUpdates","EventPluginHub","EventPluginRegistry","EventPropagators","ReactControlledComponent","ReactDOMComponentTree","ReactDOMEventListener","bundleType","rendererPackageName","Tg","Ug","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","canUseViewport","screen","isInWorker","EventListener","eventType","remove","removeEventListener","registerDefault","getActiveElement","doc","shallowEqual","objA","objB","keysA","keysB","containsNode","outerNode","innerNode","isTextNode","contains","compareDocumentPosition","isNode","Node","_classCallCheck","instance","Constructor","_possibleConstructorReturn","_inherits","subClass","superClass","create","writable","setPrototypeOf","__proto__","__WEBPACK_IMPORTED_MODULE_1__step_in_test_js__","__WEBPACK_IMPORTED_MODULE_2__step_over_test_js__","__WEBPACK_IMPORTED_MODULE_3__step_out_test_js__","_createClass","defineProperties","descriptor","protoProps","staticProps","App","_Component","getPrototypeOf","hitBreakpoint","log","f0_0_0_0","f0_0_0_1","f0_0_0_2","f0_0_0_3","f0_0_0_4","f0_0_0_5","f0_0_0_6","f0_0_0_7","f0_0_0_8","f0_0_0_9","f0_0_0_10","f0_0_0_11","f0_0_0","f0_0_1_0","f0_0_1_1","f0_0_1_2","f0_0_1_3","f0_0_1_4","f0_0_1_5","f0_0_1_6","f0_0_1_7","f0_0_1_8","f0_0_1_9","f0_0_1_10","f0_0_1_11","f0_0_1","f0_0_2_0","f0_0_2_1","f0_0_2_2","f0_0_2_3","f0_0_2_4","f0_0_2_5","f0_0_2_6","f0_0_2_7","f0_0_2_8","f0_0_2_9","f0_0_2_10","f0_0_2_11","f0_0_2","f0_0_3_0","f0_0_3_1","f0_0_3_2","f0_0_3_3","f0_0_3_4","f0_0_3_5","f0_0_3_6","f0_0_3_7","f0_0_3_8","f0_0_3_9","f0_0_3_10","f0_0_3_11","f0_0_3","f0_0_4_0","f0_0_4_1","f0_0_4_2","f0_0_4_3","f0_0_4_4","f0_0_4_5","f0_0_4_6","f0_0_4_7","f0_0_4_8","f0_0_4_9","f0_0_4_10","f0_0_4_11","f0_0_4","f0_0_5_0","f0_0_5_1","f0_0_5_2","f0_0_5_3","f0_0_5_4","f0_0_5_5","f0_0_5_6","f0_0_5_7","f0_0_5_8","f0_0_5_9","f0_0_5_10","f0_0_5_11","f0_0_5","f0_0_6_0","f0_0_6_1","f0_0_6_2","f0_0_6_3","f0_0_6_4","f0_0_6_5","f0_0_6_6","f0_0_6_7","f0_0_6_8","f0_0_6_9","f0_0_6_10","f0_0_6_11","f0_0_6","f0_0_7_0","f0_0_7_1","f0_0_7_2","f0_0_7_3","f0_0_7_4","f0_0_7_5","f0_0_7_6","f0_0_7_7","f0_0_7_8","f0_0_7_9","f0_0_7_10","f0_0_7_11","f0_0_7","f0_0_8_0","f0_0_8_1","f0_0_8_2","f0_0_8_3","f0_0_8_4","f0_0_8_5","f0_0_8_6","f0_0_8_7","f0_0_8_8","f0_0_8_9","f0_0_8_10","f0_0_8_11","f0_0_8","f0_0_9_0","f0_0_9_1","f0_0_9_2","f0_0_9_3","f0_0_9_4","f0_0_9_5","f0_0_9_6","f0_0_9_7","f0_0_9_8","f0_0_9_9","f0_0_9_10","f0_0_9_11","f0_0_9","f0_0_10_0","f0_0_10_1","f0_0_10_2","f0_0_10_3","f0_0_10_4","f0_0_10_5","f0_0_10_6","f0_0_10_7","f0_0_10_8","f0_0_10_9","f0_0_10_10","f0_0_10_11","f0_0_10","f0_0_11_0","f0_0_11_1","f0_0_11_2","f0_0_11_3","f0_0_11_4","f0_0_11_5","f0_0_11_6","f0_0_11_7","f0_0_11_8","f0_0_11_9","f0_0_11_10","f0_0_11_11","f0_0_11","f0_0","f0_1_0_0","f0_1_0_1","f0_1_0_2","f0_1_0_3","f0_1_0_4","f0_1_0_5","f0_1_0_6","f0_1_0_7","f0_1_0_8","f0_1_0_9","f0_1_0_10","f0_1_0_11","f0_1_0","f0_1_1_0","f0_1_1_1","f0_1_1_2","f0_1_1_3","f0_1_1_4","f0_1_1_5","f0_1_1_6","f0_1_1_7","f0_1_1_8","f0_1_1_9","f0_1_1_10","f0_1_1_11","f0_1_1","f0_1_2_0","f0_1_2_1","f0_1_2_2","f0_1_2_3","f0_1_2_4","f0_1_2_5","f0_1_2_6","f0_1_2_7","f0_1_2_8","f0_1_2_9","f0_1_2_10","f0_1_2_11","f0_1_2","f0_1_3_0","f0_1_3_1","f0_1_3_2","f0_1_3_3","f0_1_3_4","f0_1_3_5","f0_1_3_6","f0_1_3_7","f0_1_3_8","f0_1_3_9","f0_1_3_10","f0_1_3_11","f0_1_3","f0_1_4_0","f0_1_4_1","f0_1_4_2","f0_1_4_3","f0_1_4_4","f0_1_4_5","f0_1_4_6","f0_1_4_7","f0_1_4_8","f0_1_4_9","f0_1_4_10","f0_1_4_11","f0_1_4","f0_1_5_0","f0_1_5_1","f0_1_5_2","f0_1_5_3","f0_1_5_4","f0_1_5_5","f0_1_5_6","f0_1_5_7","f0_1_5_8","f0_1_5_9","f0_1_5_10","f0_1_5_11","f0_1_5","f0_1_6_0","f0_1_6_1","f0_1_6_2","f0_1_6_3","f0_1_6_4","f0_1_6_5","f0_1_6_6","f0_1_6_7","f0_1_6_8","f0_1_6_9","f0_1_6_10","f0_1_6_11","f0_1_6","f0_1_7_0","f0_1_7_1","f0_1_7_2","f0_1_7_3","f0_1_7_4","f0_1_7_5","f0_1_7_6","f0_1_7_7","f0_1_7_8","f0_1_7_9","f0_1_7_10","f0_1_7_11","f0_1_7","f0_1_8_0","f0_1_8_1","f0_1_8_2","f0_1_8_3","f0_1_8_4","f0_1_8_5","f0_1_8_6","f0_1_8_7","f0_1_8_8","f0_1_8_9","f0_1_8_10","f0_1_8_11","f0_1_8","f0_1_9_0","f0_1_9_1","f0_1_9_2","f0_1_9_3","f0_1_9_4","f0_1_9_5","f0_1_9_6","f0_1_9_7","f0_1_9_8","f0_1_9_9","f0_1_9_10","f0_1_9_11","f0_1_9","f0_1_10_0","f0_1_10_1","f0_1_10_2","f0_1_10_3","f0_1_10_4","f0_1_10_5","f0_1_10_6","f0_1_10_7","f0_1_10_8","f0_1_10_9","f0_1_10_10","f0_1_10_11","f0_1_10","f0_1_11_0","f0_1_11_1","f0_1_11_2","f0_1_11_3","f0_1_11_4","f0_1_11_5","f0_1_11_6","f0_1_11_7","f0_1_11_8","f0_1_11_9","f0_1_11_10","f0_1_11_11","f0_1_11","f0_1","f0_2_0_0","f0_2_0_1","f0_2_0_2","f0_2_0_3","f0_2_0_4","f0_2_0_5","f0_2_0_6","f0_2_0_7","f0_2_0_8","f0_2_0_9","f0_2_0_10","f0_2_0_11","f0_2_0","f0_2_1_0","f0_2_1_1","f0_2_1_2","f0_2_1_3","f0_2_1_4","f0_2_1_5","f0_2_1_6","f0_2_1_7","f0_2_1_8","f0_2_1_9","f0_2_1_10","f0_2_1_11","f0_2_1","f0_2_2_0","f0_2_2_1","f0_2_2_2","f0_2_2_3","f0_2_2_4","f0_2_2_5","f0_2_2_6","f0_2_2_7","f0_2_2_8","f0_2_2_9","f0_2_2_10","f0_2_2_11","f0_2_2","f0_2_3_0","f0_2_3_1","f0_2_3_2","f0_2_3_3","f0_2_3_4","f0_2_3_5","f0_2_3_6","f0_2_3_7","f0_2_3_8","f0_2_3_9","f0_2_3_10","f0_2_3_11","f0_2_3","f0_2_4_0","f0_2_4_1","f0_2_4_2","f0_2_4_3","f0_2_4_4","f0_2_4_5","f0_2_4_6","f0_2_4_7","f0_2_4_8","f0_2_4_9","f0_2_4_10","f0_2_4_11","f0_2_4","f0_2_5_0","f0_2_5_1","f0_2_5_2","f0_2_5_3","f0_2_5_4","f0_2_5_5","f0_2_5_6","f0_2_5_7","f0_2_5_8","f0_2_5_9","f0_2_5_10","f0_2_5_11","f0_2_5","f0_2_6_0","f0_2_6_1","f0_2_6_2","f0_2_6_3","f0_2_6_4","f0_2_6_5","f0_2_6_6","f0_2_6_7","f0_2_6_8","f0_2_6_9","f0_2_6_10","f0_2_6_11","f0_2_6","f0_2_7_0","f0_2_7_1","f0_2_7_2","f0_2_7_3","f0_2_7_4","f0_2_7_5","f0_2_7_6","f0_2_7_7","f0_2_7_8","f0_2_7_9","f0_2_7_10","f0_2_7_11","f0_2_7","f0_2_8_0","f0_2_8_1","f0_2_8_2","f0_2_8_3","f0_2_8_4","f0_2_8_5","f0_2_8_6","f0_2_8_7","f0_2_8_8","f0_2_8_9","f0_2_8_10","f0_2_8_11","f0_2_8","f0_2_9_0","f0_2_9_1","f0_2_9_2","f0_2_9_3","f0_2_9_4","f0_2_9_5","f0_2_9_6","f0_2_9_7","f0_2_9_8","f0_2_9_9","f0_2_9_10","f0_2_9_11","f0_2_9","f0_2_10_0","f0_2_10_1","f0_2_10_2","f0_2_10_3","f0_2_10_4","f0_2_10_5","f0_2_10_6","f0_2_10_7","f0_2_10_8","f0_2_10_9","f0_2_10_10","f0_2_10_11","f0_2_10","f0_2_11_0","f0_2_11_1","f0_2_11_2","f0_2_11_3","f0_2_11_4","f0_2_11_5","f0_2_11_6","f0_2_11_7","f0_2_11_8","f0_2_11_9","f0_2_11_10","f0_2_11_11","f0_2_11","f0_2","f0_3_0_0","f0_3_0_1","f0_3_0_2","f0_3_0_3","f0_3_0_4","f0_3_0_5","f0_3_0_6","f0_3_0_7","f0_3_0_8","f0_3_0_9","f0_3_0_10","f0_3_0_11","f0_3_0","f0_3_1_0","f0_3_1_1","f0_3_1_2","f0_3_1_3","f0_3_1_4","f0_3_1_5","f0_3_1_6","f0_3_1_7","f0_3_1_8","f0_3_1_9","f0_3_1_10","f0_3_1_11","f0_3_1","f0_3_2_0","f0_3_2_1","f0_3_2_2","f0_3_2_3","f0_3_2_4","f0_3_2_5","f0_3_2_6","f0_3_2_7","f0_3_2_8","f0_3_2_9","f0_3_2_10","f0_3_2_11","f0_3_2","f0_3_3_0","f0_3_3_1","f0_3_3_2","f0_3_3_3","f0_3_3_4","f0_3_3_5","f0_3_3_6","f0_3_3_7","f0_3_3_8","f0_3_3_9","f0_3_3_10","f0_3_3_11","f0_3_3","f0_3_4_0","f0_3_4_1","f0_3_4_2","f0_3_4_3","f0_3_4_4","f0_3_4_5","f0_3_4_6","f0_3_4_7","f0_3_4_8","f0_3_4_9","f0_3_4_10","f0_3_4_11","f0_3_4","f0_3_5_0","f0_3_5_1","f0_3_5_2","f0_3_5_3","f0_3_5_4","f0_3_5_5","f0_3_5_6","f0_3_5_7","f0_3_5_8","f0_3_5_9","f0_3_5_10","f0_3_5_11","f0_3_5","f0_3_6_0","f0_3_6_1","f0_3_6_2","f0_3_6_3","f0_3_6_4","f0_3_6_5","f0_3_6_6","f0_3_6_7","f0_3_6_8","f0_3_6_9","f0_3_6_10","f0_3_6_11","f0_3_6","f0_3_7_0","f0_3_7_1","f0_3_7_2","f0_3_7_3","f0_3_7_4","f0_3_7_5","f0_3_7_6","f0_3_7_7","f0_3_7_8","f0_3_7_9","f0_3_7_10","f0_3_7_11","f0_3_7","f0_3_8_0","f0_3_8_1","f0_3_8_2","f0_3_8_3","f0_3_8_4","f0_3_8_5","f0_3_8_6","f0_3_8_7","f0_3_8_8","f0_3_8_9","f0_3_8_10","f0_3_8_11","f0_3_8","f0_3_9_0","f0_3_9_1","f0_3_9_2","f0_3_9_3","f0_3_9_4","f0_3_9_5","f0_3_9_6","f0_3_9_7","f0_3_9_8","f0_3_9_9","f0_3_9_10","f0_3_9_11","f0_3_9","f0_3_10_0","f0_3_10_1","f0_3_10_2","f0_3_10_3","f0_3_10_4","f0_3_10_5","f0_3_10_6","f0_3_10_7","f0_3_10_8","f0_3_10_9","f0_3_10_10","f0_3_10_11","f0_3_10","f0_3_11_0","f0_3_11_1","f0_3_11_2","f0_3_11_3","f0_3_11_4","f0_3_11_5","f0_3_11_6","f0_3_11_7","f0_3_11_8","f0_3_11_9","f0_3_11_10","f0_3_11_11","f0_3_11","f0_3","f0_4_0_0","f0_4_0_1","f0_4_0_2","f0_4_0_3","f0_4_0_4","f0_4_0_5","f0_4_0_6","f0_4_0_7","f0_4_0_8","f0_4_0_9","f0_4_0_10","f0_4_0_11","f0_4_0","f0_4_1_0","f0_4_1_1","f0_4_1_2","f0_4_1_3","f0_4_1_4","f0_4_1_5","f0_4_1_6","f0_4_1_7","f0_4_1_8","f0_4_1_9","f0_4_1_10","f0_4_1_11","f0_4_1","f0_4_2_0","f0_4_2_1","f0_4_2_2","f0_4_2_3","f0_4_2_4","f0_4_2_5","f0_4_2_6","f0_4_2_7","f0_4_2_8","f0_4_2_9","f0_4_2_10","f0_4_2_11","f0_4_2","f0_4_3_0","f0_4_3_1","f0_4_3_2","f0_4_3_3","f0_4_3_4","f0_4_3_5","f0_4_3_6","f0_4_3_7","f0_4_3_8","f0_4_3_9","f0_4_3_10","f0_4_3_11","f0_4_3","f0_4_4_0","f0_4_4_1","f0_4_4_2","f0_4_4_3","f0_4_4_4","f0_4_4_5","f0_4_4_6","f0_4_4_7","f0_4_4_8","f0_4_4_9","f0_4_4_10","f0_4_4_11","f0_4_4","f0_4_5_0","f0_4_5_1","f0_4_5_2","f0_4_5_3","f0_4_5_4","f0_4_5_5","f0_4_5_6","f0_4_5_7","f0_4_5_8","f0_4_5_9","f0_4_5_10","f0_4_5_11","f0_4_5","f0_4_6_0","f0_4_6_1","f0_4_6_2","f0_4_6_3","f0_4_6_4","f0_4_6_5","f0_4_6_6","f0_4_6_7","f0_4_6_8","f0_4_6_9","f0_4_6_10","f0_4_6_11","f0_4_6","f0_4_7_0","f0_4_7_1","f0_4_7_2","f0_4_7_3","f0_4_7_4","f0_4_7_5","f0_4_7_6","f0_4_7_7","f0_4_7_8","f0_4_7_9","f0_4_7_10","f0_4_7_11","f0_4_7","f0_4_8_0","f0_4_8_1","f0_4_8_2","f0_4_8_3","f0_4_8_4","f0_4_8_5","f0_4_8_6","f0_4_8_7","f0_4_8_8","f0_4_8_9","f0_4_8_10","f0_4_8_11","f0_4_8","f0_4_9_0","f0_4_9_1","f0_4_9_2","f0_4_9_3","f0_4_9_4","f0_4_9_5","f0_4_9_6","f0_4_9_7","f0_4_9_8","f0_4_9_9","f0_4_9_10","f0_4_9_11","f0_4_9","f0_4_10_0","f0_4_10_1","f0_4_10_2","f0_4_10_3","f0_4_10_4","f0_4_10_5","f0_4_10_6","f0_4_10_7","f0_4_10_8","f0_4_10_9","f0_4_10_10","f0_4_10_11","f0_4_10","f0_4_11_0","f0_4_11_1","f0_4_11_2","f0_4_11_3","f0_4_11_4","f0_4_11_5","f0_4_11_6","f0_4_11_7","f0_4_11_8","f0_4_11_9","f0_4_11_10","f0_4_11_11","f0_4_11","f0_4","f0_5_0_0","f0_5_0_1","f0_5_0_2","f0_5_0_3","f0_5_0_4","f0_5_0_5","f0_5_0_6","f0_5_0_7","f0_5_0_8","f0_5_0_9","f0_5_0_10","f0_5_0_11","f0_5_0","f0_5_1_0","f0_5_1_1","f0_5_1_2","f0_5_1_3","f0_5_1_4","f0_5_1_5","f0_5_1_6","f0_5_1_7","f0_5_1_8","f0_5_1_9","f0_5_1_10","f0_5_1_11","f0_5_1","f0_5_2_0","f0_5_2_1","f0_5_2_2","f0_5_2_3","f0_5_2_4","f0_5_2_5","f0_5_2_6","f0_5_2_7","f0_5_2_8","f0_5_2_9","f0_5_2_10","f0_5_2_11","f0_5_2","f0_5_3_0","f0_5_3_1","f0_5_3_2","f0_5_3_3","f0_5_3_4","f0_5_3_5","f0_5_3_6","f0_5_3_7","f0_5_3_8","f0_5_3_9","f0_5_3_10","f0_5_3_11","f0_5_3","f0_5_4_0","f0_5_4_1","f0_5_4_2","f0_5_4_3","f0_5_4_4","f0_5_4_5","f0_5_4_6","f0_5_4_7","f0_5_4_8","f0_5_4_9","f0_5_4_10","f0_5_4_11","f0_5_4","f0_5_5_0","f0_5_5_1","f0_5_5_2","f0_5_5_3","f0_5_5_4","f0_5_5_5","f0_5_5_6","f0_5_5_7","f0_5_5_8","f0_5_5_9","f0_5_5_10","f0_5_5_11","f0_5_5","f0_5_6_0","f0_5_6_1","f0_5_6_2","f0_5_6_3","f0_5_6_4","f0_5_6_5","f0_5_6_6","f0_5_6_7","f0_5_6_8","f0_5_6_9","f0_5_6_10","f0_5_6_11","f0_5_6","f0_5_7_0","f0_5_7_1","f0_5_7_2","f0_5_7_3","f0_5_7_4","f0_5_7_5","f0_5_7_6","f0_5_7_7","f0_5_7_8","f0_5_7_9","f0_5_7_10","f0_5_7_11","f0_5_7","f0_5_8_0","f0_5_8_1","f0_5_8_2","f0_5_8_3","f0_5_8_4","f0_5_8_5","f0_5_8_6","f0_5_8_7","f0_5_8_8","f0_5_8_9","f0_5_8_10","f0_5_8_11","f0_5_8","f0_5_9_0","f0_5_9_1","f0_5_9_2","f0_5_9_3","f0_5_9_4","f0_5_9_5","f0_5_9_6","f0_5_9_7","f0_5_9_8","f0_5_9_9","f0_5_9_10","f0_5_9_11","f0_5_9","f0_5_10_0","f0_5_10_1","f0_5_10_2","f0_5_10_3","f0_5_10_4","f0_5_10_5","f0_5_10_6","f0_5_10_7","f0_5_10_8","f0_5_10_9","f0_5_10_10","f0_5_10_11","f0_5_10","f0_5_11_0","f0_5_11_1","f0_5_11_2","f0_5_11_3","f0_5_11_4","f0_5_11_5","f0_5_11_6","f0_5_11_7","f0_5_11_8","f0_5_11_9","f0_5_11_10","f0_5_11_11","f0_5_11","f0_5","f0_6_0_0","f0_6_0_1","f0_6_0_2","f0_6_0_3","f0_6_0_4","f0_6_0_5","f0_6_0_6","f0_6_0_7","f0_6_0_8","f0_6_0_9","f0_6_0_10","f0_6_0_11","f0_6_0","f0_6_1_0","f0_6_1_1","f0_6_1_2","f0_6_1_3","f0_6_1_4","f0_6_1_5","f0_6_1_6","f0_6_1_7","f0_6_1_8","f0_6_1_9","f0_6_1_10","f0_6_1_11","f0_6_1","f0_6_2_0","f0_6_2_1","f0_6_2_2","f0_6_2_3","f0_6_2_4","f0_6_2_5","f0_6_2_6","f0_6_2_7","f0_6_2_8","f0_6_2_9","f0_6_2_10","f0_6_2_11","f0_6_2","f0_6_3_0","f0_6_3_1","f0_6_3_2","f0_6_3_3","f0_6_3_4","f0_6_3_5","f0_6_3_6","f0_6_3_7","f0_6_3_8","f0_6_3_9","f0_6_3_10","f0_6_3_11","f0_6_3","f0_6_4_0","f0_6_4_1","f0_6_4_2","f0_6_4_3","f0_6_4_4","f0_6_4_5","f0_6_4_6","f0_6_4_7","f0_6_4_8","f0_6_4_9","f0_6_4_10","f0_6_4_11","f0_6_4","f0_6_5_0","f0_6_5_1","f0_6_5_2","f0_6_5_3","f0_6_5_4","f0_6_5_5","f0_6_5_6","f0_6_5_7","f0_6_5_8","f0_6_5_9","f0_6_5_10","f0_6_5_11","f0_6_5","f0_6_6_0","f0_6_6_1","f0_6_6_2","f0_6_6_3","f0_6_6_4","f0_6_6_5","f0_6_6_6","f0_6_6_7","f0_6_6_8","f0_6_6_9","f0_6_6_10","f0_6_6_11","f0_6_6","f0_6_7_0","f0_6_7_1","f0_6_7_2","f0_6_7_3","f0_6_7_4","f0_6_7_5","f0_6_7_6","f0_6_7_7","f0_6_7_8","f0_6_7_9","f0_6_7_10","f0_6_7_11","f0_6_7","f0_6_8_0","f0_6_8_1","f0_6_8_2","f0_6_8_3","f0_6_8_4","f0_6_8_5","f0_6_8_6","f0_6_8_7","f0_6_8_8","f0_6_8_9","f0_6_8_10","f0_6_8_11","f0_6_8","f0_6_9_0","f0_6_9_1","f0_6_9_2","f0_6_9_3","f0_6_9_4","f0_6_9_5","f0_6_9_6","f0_6_9_7","f0_6_9_8","f0_6_9_9","f0_6_9_10","f0_6_9_11","f0_6_9","f0_6_10_0","f0_6_10_1","f0_6_10_2","f0_6_10_3","f0_6_10_4","f0_6_10_5","f0_6_10_6","f0_6_10_7","f0_6_10_8","f0_6_10_9","f0_6_10_10","f0_6_10_11","f0_6_10","f0_6_11_0","f0_6_11_1","f0_6_11_2","f0_6_11_3","f0_6_11_4","f0_6_11_5","f0_6_11_6","f0_6_11_7","f0_6_11_8","f0_6_11_9","f0_6_11_10","f0_6_11_11","f0_6_11","f0_6","f0_7_0_0","f0_7_0_1","f0_7_0_2","f0_7_0_3","f0_7_0_4","f0_7_0_5","f0_7_0_6","f0_7_0_7","f0_7_0_8","f0_7_0_9","f0_7_0_10","f0_7_0_11","f0_7_0","f0_7_1_0","f0_7_1_1","f0_7_1_2","f0_7_1_3","f0_7_1_4","f0_7_1_5","f0_7_1_6","f0_7_1_7","f0_7_1_8","f0_7_1_9","f0_7_1_10","f0_7_1_11","f0_7_1","f0_7_2_0","f0_7_2_1","f0_7_2_2","f0_7_2_3","f0_7_2_4","f0_7_2_5","f0_7_2_6","f0_7_2_7","f0_7_2_8","f0_7_2_9","f0_7_2_10","f0_7_2_11","f0_7_2","f0_7_3_0","f0_7_3_1","f0_7_3_2","f0_7_3_3","f0_7_3_4","f0_7_3_5","f0_7_3_6","f0_7_3_7","f0_7_3_8","f0_7_3_9","f0_7_3_10","f0_7_3_11","f0_7_3","f0_7_4_0","f0_7_4_1","f0_7_4_2","f0_7_4_3","f0_7_4_4","f0_7_4_5","f0_7_4_6","f0_7_4_7","f0_7_4_8","f0_7_4_9","f0_7_4_10","f0_7_4_11","f0_7_4","f0_7_5_0","f0_7_5_1","f0_7_5_2","f0_7_5_3","f0_7_5_4","f0_7_5_5","f0_7_5_6","f0_7_5_7","f0_7_5_8","f0_7_5_9","f0_7_5_10","f0_7_5_11","f0_7_5","f0_7_6_0","f0_7_6_1","f0_7_6_2","f0_7_6_3","f0_7_6_4","f0_7_6_5","f0_7_6_6","f0_7_6_7","f0_7_6_8","f0_7_6_9","f0_7_6_10","f0_7_6_11","f0_7_6","f0_7_7_0","f0_7_7_1","f0_7_7_2","f0_7_7_3","f0_7_7_4","f0_7_7_5","f0_7_7_6","f0_7_7_7","f0_7_7_8","f0_7_7_9","f0_7_7_10","f0_7_7_11","f0_7_7","f0_7_8_0","f0_7_8_1","f0_7_8_2","f0_7_8_3","f0_7_8_4","f0_7_8_5","f0_7_8_6","f0_7_8_7","f0_7_8_8","f0_7_8_9","f0_7_8_10","f0_7_8_11","f0_7_8","f0_7_9_0","f0_7_9_1","f0_7_9_2","f0_7_9_3","f0_7_9_4","f0_7_9_5","f0_7_9_6","f0_7_9_7","f0_7_9_8","f0_7_9_9","f0_7_9_10","f0_7_9_11","f0_7_9","f0_7_10_0","f0_7_10_1","f0_7_10_2","f0_7_10_3","f0_7_10_4","f0_7_10_5","f0_7_10_6","f0_7_10_7","f0_7_10_8","f0_7_10_9","f0_7_10_10","f0_7_10_11","f0_7_10","f0_7_11_0","f0_7_11_1","f0_7_11_2","f0_7_11_3","f0_7_11_4","f0_7_11_5","f0_7_11_6","f0_7_11_7","f0_7_11_8","f0_7_11_9","f0_7_11_10","f0_7_11_11","f0_7_11","f0_7","f0_8_0_0","f0_8_0_1","f0_8_0_2","f0_8_0_3","f0_8_0_4","f0_8_0_5","f0_8_0_6","f0_8_0_7","f0_8_0_8","f0_8_0_9","f0_8_0_10","f0_8_0_11","f0_8_0","f0_8_1_0","f0_8_1_1","f0_8_1_2","f0_8_1_3","f0_8_1_4","f0_8_1_5","f0_8_1_6","f0_8_1_7","f0_8_1_8","f0_8_1_9","f0_8_1_10","f0_8_1_11","f0_8_1","f0_8_2_0","f0_8_2_1","f0_8_2_2","f0_8_2_3","f0_8_2_4","f0_8_2_5","f0_8_2_6","f0_8_2_7","f0_8_2_8","f0_8_2_9","f0_8_2_10","f0_8_2_11","f0_8_2","f0_8_3_0","f0_8_3_1","f0_8_3_2","f0_8_3_3","f0_8_3_4","f0_8_3_5","f0_8_3_6","f0_8_3_7","f0_8_3_8","f0_8_3_9","f0_8_3_10","f0_8_3_11","f0_8_3","f0_8_4_0","f0_8_4_1","f0_8_4_2","f0_8_4_3","f0_8_4_4","f0_8_4_5","f0_8_4_6","f0_8_4_7","f0_8_4_8","f0_8_4_9","f0_8_4_10","f0_8_4_11","f0_8_4","f0_8_5_0","f0_8_5_1","f0_8_5_2","f0_8_5_3","f0_8_5_4","f0_8_5_5","f0_8_5_6","f0_8_5_7","f0_8_5_8","f0_8_5_9","f0_8_5_10","f0_8_5_11","f0_8_5","f0_8_6_0","f0_8_6_1","f0_8_6_2","f0_8_6_3","f0_8_6_4","f0_8_6_5","f0_8_6_6","f0_8_6_7","f0_8_6_8","f0_8_6_9","f0_8_6_10","f0_8_6_11","f0_8_6","f0_8_7_0","f0_8_7_1","f0_8_7_2","f0_8_7_3","f0_8_7_4","f0_8_7_5","f0_8_7_6","f0_8_7_7","f0_8_7_8","f0_8_7_9","f0_8_7_10","f0_8_7_11","f0_8_7","f0_8_8_0","f0_8_8_1","f0_8_8_2","f0_8_8_3","f0_8_8_4","f0_8_8_5","f0_8_8_6","f0_8_8_7","f0_8_8_8","f0_8_8_9","f0_8_8_10","f0_8_8_11","f0_8_8","f0_8_9_0","f0_8_9_1","f0_8_9_2","f0_8_9_3","f0_8_9_4","f0_8_9_5","f0_8_9_6","f0_8_9_7","f0_8_9_8","f0_8_9_9","f0_8_9_10","f0_8_9_11","f0_8_9","f0_8_10_0","f0_8_10_1","f0_8_10_2","f0_8_10_3","f0_8_10_4","f0_8_10_5","f0_8_10_6","f0_8_10_7","f0_8_10_8","f0_8_10_9","f0_8_10_10","f0_8_10_11","f0_8_10","f0_8_11_0","f0_8_11_1","f0_8_11_2","f0_8_11_3","f0_8_11_4","f0_8_11_5","f0_8_11_6","f0_8_11_7","f0_8_11_8","f0_8_11_9","f0_8_11_10","f0_8_11_11","f0_8_11","f0_8","f0_9_0_0","f0_9_0_1","f0_9_0_2","f0_9_0_3","f0_9_0_4","f0_9_0_5","f0_9_0_6","f0_9_0_7","f0_9_0_8","f0_9_0_9","f0_9_0_10","f0_9_0_11","f0_9_0","f0_9_1_0","f0_9_1_1","f0_9_1_2","f0_9_1_3","f0_9_1_4","f0_9_1_5","f0_9_1_6","f0_9_1_7","f0_9_1_8","f0_9_1_9","f0_9_1_10","f0_9_1_11","f0_9_1","f0_9_2_0","f0_9_2_1","f0_9_2_2","f0_9_2_3","f0_9_2_4","f0_9_2_5","f0_9_2_6","f0_9_2_7","f0_9_2_8","f0_9_2_9","f0_9_2_10","f0_9_2_11","f0_9_2","f0_9_3_0","f0_9_3_1","f0_9_3_2","f0_9_3_3","f0_9_3_4","f0_9_3_5","f0_9_3_6","f0_9_3_7","f0_9_3_8","f0_9_3_9","f0_9_3_10","f0_9_3_11","f0_9_3","f0_9_4_0","f0_9_4_1","f0_9_4_2","f0_9_4_3","f0_9_4_4","f0_9_4_5","f0_9_4_6","f0_9_4_7","f0_9_4_8","f0_9_4_9","f0_9_4_10","f0_9_4_11","f0_9_4","f0_9_5_0","f0_9_5_1","f0_9_5_2","f0_9_5_3","f0_9_5_4","f0_9_5_5","f0_9_5_6","f0_9_5_7","f0_9_5_8","f0_9_5_9","f0_9_5_10","f0_9_5_11","f0_9_5","f0_9_6_0","f0_9_6_1","f0_9_6_2","f0_9_6_3","f0_9_6_4","f0_9_6_5","f0_9_6_6","f0_9_6_7","f0_9_6_8","f0_9_6_9","f0_9_6_10","f0_9_6_11","f0_9_6","f0_9_7_0","f0_9_7_1","f0_9_7_2","f0_9_7_3","f0_9_7_4","f0_9_7_5","f0_9_7_6","f0_9_7_7","f0_9_7_8","f0_9_7_9","f0_9_7_10","f0_9_7_11","f0_9_7","f0_9_8_0","f0_9_8_1","f0_9_8_2","f0_9_8_3","f0_9_8_4","f0_9_8_5","f0_9_8_6","f0_9_8_7","f0_9_8_8","f0_9_8_9","f0_9_8_10","f0_9_8_11","f0_9_8","f0_9_9_0","f0_9_9_1","f0_9_9_2","f0_9_9_3","f0_9_9_4","f0_9_9_5","f0_9_9_6","f0_9_9_7","f0_9_9_8","f0_9_9_9","f0_9_9_10","f0_9_9_11","f0_9_9","f0_9_10_0","f0_9_10_1","f0_9_10_2","f0_9_10_3","f0_9_10_4","f0_9_10_5","f0_9_10_6","f0_9_10_7","f0_9_10_8","f0_9_10_9","f0_9_10_10","f0_9_10_11","f0_9_10","f0_9_11_0","f0_9_11_1","f0_9_11_2","f0_9_11_3","f0_9_11_4","f0_9_11_5","f0_9_11_6","f0_9_11_7","f0_9_11_8","f0_9_11_9","f0_9_11_10","f0_9_11_11","f0_9_11","f0_9","f0_10_0_0","f0_10_0_1","f0_10_0_2","f0_10_0_3","f0_10_0_4","f0_10_0_5","f0_10_0_6","f0_10_0_7","f0_10_0_8","f0_10_0_9","f0_10_0_10","f0_10_0_11","f0_10_0","f0_10_1_0","f0_10_1_1","f0_10_1_2","f0_10_1_3","f0_10_1_4","f0_10_1_5","f0_10_1_6","f0_10_1_7","f0_10_1_8","f0_10_1_9","f0_10_1_10","f0_10_1_11","f0_10_1","f0_10_2_0","f0_10_2_1","f0_10_2_2","f0_10_2_3","f0_10_2_4","f0_10_2_5","f0_10_2_6","f0_10_2_7","f0_10_2_8","f0_10_2_9","f0_10_2_10","f0_10_2_11","f0_10_2","f0_10_3_0","f0_10_3_1","f0_10_3_2","f0_10_3_3","f0_10_3_4","f0_10_3_5","f0_10_3_6","f0_10_3_7","f0_10_3_8","f0_10_3_9","f0_10_3_10","f0_10_3_11","f0_10_3","f0_10_4_0","f0_10_4_1","f0_10_4_2","f0_10_4_3","f0_10_4_4","f0_10_4_5","f0_10_4_6","f0_10_4_7","f0_10_4_8","f0_10_4_9","f0_10_4_10","f0_10_4_11","f0_10_4","f0_10_5_0","f0_10_5_1","f0_10_5_2","f0_10_5_3","f0_10_5_4","f0_10_5_5","f0_10_5_6","f0_10_5_7","f0_10_5_8","f0_10_5_9","f0_10_5_10","f0_10_5_11","f0_10_5","f0_10_6_0","f0_10_6_1","f0_10_6_2","f0_10_6_3","f0_10_6_4","f0_10_6_5","f0_10_6_6","f0_10_6_7","f0_10_6_8","f0_10_6_9","f0_10_6_10","f0_10_6_11","f0_10_6","f0_10_7_0","f0_10_7_1","f0_10_7_2","f0_10_7_3","f0_10_7_4","f0_10_7_5","f0_10_7_6","f0_10_7_7","f0_10_7_8","f0_10_7_9","f0_10_7_10","f0_10_7_11","f0_10_7","f0_10_8_0","f0_10_8_1","f0_10_8_2","f0_10_8_3","f0_10_8_4","f0_10_8_5","f0_10_8_6","f0_10_8_7","f0_10_8_8","f0_10_8_9","f0_10_8_10","f0_10_8_11","f0_10_8","f0_10_9_0","f0_10_9_1","f0_10_9_2","f0_10_9_3","f0_10_9_4","f0_10_9_5","f0_10_9_6","f0_10_9_7","f0_10_9_8","f0_10_9_9","f0_10_9_10","f0_10_9_11","f0_10_9","f0_10_10_0","f0_10_10_1","f0_10_10_2","f0_10_10_3","f0_10_10_4","f0_10_10_5","f0_10_10_6","f0_10_10_7","f0_10_10_8","f0_10_10_9","f0_10_10_10","f0_10_10_11","f0_10_10","f0_10_11_0","f0_10_11_1","f0_10_11_2","f0_10_11_3","f0_10_11_4","f0_10_11_5","f0_10_11_6","f0_10_11_7","f0_10_11_8","f0_10_11_9","f0_10_11_10","f0_10_11_11","f0_10_11","f0_10","f0_11_0_0","f0_11_0_1","f0_11_0_2","f0_11_0_3","f0_11_0_4","f0_11_0_5","f0_11_0_6","f0_11_0_7","f0_11_0_8","f0_11_0_9","f0_11_0_10","f0_11_0_11","f0_11_0","f0_11_1_0","f0_11_1_1","f0_11_1_2","f0_11_1_3","f0_11_1_4","f0_11_1_5","f0_11_1_6","f0_11_1_7","f0_11_1_8","f0_11_1_9","f0_11_1_10","f0_11_1_11","f0_11_1","f0_11_2_0","f0_11_2_1","f0_11_2_2","f0_11_2_3","f0_11_2_4","f0_11_2_5","f0_11_2_6","f0_11_2_7","f0_11_2_8","f0_11_2_9","f0_11_2_10","f0_11_2_11","f0_11_2","f0_11_3_0","f0_11_3_1","f0_11_3_2","f0_11_3_3","f0_11_3_4","f0_11_3_5","f0_11_3_6","f0_11_3_7","f0_11_3_8","f0_11_3_9","f0_11_3_10","f0_11_3_11","f0_11_3","f0_11_4_0","f0_11_4_1","f0_11_4_2","f0_11_4_3","f0_11_4_4","f0_11_4_5","f0_11_4_6","f0_11_4_7","f0_11_4_8","f0_11_4_9","f0_11_4_10","f0_11_4_11","f0_11_4","f0_11_5_0","f0_11_5_1","f0_11_5_2","f0_11_5_3","f0_11_5_4","f0_11_5_5","f0_11_5_6","f0_11_5_7","f0_11_5_8","f0_11_5_9","f0_11_5_10","f0_11_5_11","f0_11_5","f0_11_6_0","f0_11_6_1","f0_11_6_2","f0_11_6_3","f0_11_6_4","f0_11_6_5","f0_11_6_6","f0_11_6_7","f0_11_6_8","f0_11_6_9","f0_11_6_10","f0_11_6_11","f0_11_6","f0_11_7_0","f0_11_7_1","f0_11_7_2","f0_11_7_3","f0_11_7_4","f0_11_7_5","f0_11_7_6","f0_11_7_7","f0_11_7_8","f0_11_7_9","f0_11_7_10","f0_11_7_11","f0_11_7","f0_11_8_0","f0_11_8_1","f0_11_8_2","f0_11_8_3","f0_11_8_4","f0_11_8_5","f0_11_8_6","f0_11_8_7","f0_11_8_8","f0_11_8_9","f0_11_8_10","f0_11_8_11","f0_11_8","f0_11_9_0","f0_11_9_1","f0_11_9_2","f0_11_9_3","f0_11_9_4","f0_11_9_5","f0_11_9_6","f0_11_9_7","f0_11_9_8","f0_11_9_9","f0_11_9_10","f0_11_9_11","f0_11_9","f0_11_10_0","f0_11_10_1","f0_11_10_2","f0_11_10_3","f0_11_10_4","f0_11_10_5","f0_11_10_6","f0_11_10_7","f0_11_10_8","f0_11_10_9","f0_11_10_10","f0_11_10_11","f0_11_10","f0_11_11_0","f0_11_11_1","f0_11_11_2","f0_11_11_3","f0_11_11_4","f0_11_11_5","f0_11_11_6","f0_11_11_7","f0_11_11_8","f0_11_11_9","f0_11_11_10","f0_11_11_11","f0_11_11","f0_11","f0","f2_0","f2_1","f2_2","f2_3","f2_4","f2_5","f2_6","f2_7","f2_8","f2_9","f2_10","f2_11","f1","f1_0","f1_1","f1_2","f1_3","f1_4","f1_5","f1_6","f1_7","f1_8","f1_9","f1_10","f1_11","f1_0_0","f1_0_1","f1_0_2","f1_0_3","f1_0_4","f1_0_5","f1_0_6","f1_0_7","f1_0_8","f1_0_9","f1_0_10","f1_0_11","f1_1_0","f1_1_1","f1_1_2","f1_1_3","f1_1_4","f1_1_5","f1_1_6","f1_1_7","f1_1_8","f1_1_9","f1_1_10","f1_1_11","f1_2_0","f1_2_1","f1_2_2","f1_2_3","f1_2_4","f1_2_5","f1_2_6","f1_2_7","f1_2_8","f1_2_9","f1_2_10","f1_2_11","f1_3_0","f1_3_1","f1_3_2","f1_3_3","f1_3_4","f1_3_5","f1_3_6","f1_3_7","f1_3_8","f1_3_9","f1_3_10","f1_3_11","f1_4_0","f1_4_1","f1_4_2","f1_4_3","f1_4_4","f1_4_5","f1_4_6","f1_4_7","f1_4_8","f1_4_9","f1_4_10","f1_4_11","f1_5_0","f1_5_1","f1_5_2","f1_5_3","f1_5_4","f1_5_5","f1_5_6","f1_5_7","f1_5_8","f1_5_9","f1_5_10","f1_5_11","f1_6_0","f1_6_1","f1_6_2","f1_6_3","f1_6_4","f1_6_5","f1_6_6","f1_6_7","f1_6_8","f1_6_9","f1_6_10","f1_6_11","f1_7_0","f1_7_1","f1_7_2","f1_7_3","f1_7_4","f1_7_5","f1_7_6","f1_7_7","f1_7_8","f1_7_9","f1_7_10","f1_7_11","f1_8_0","f1_8_1","f1_8_2","f1_8_3","f1_8_4","f1_8_5","f1_8_6","f1_8_7","f1_8_8","f1_8_9","f1_8_10","f1_8_11","f1_9_0","f1_9_1","f1_9_2","f1_9_3","f1_9_4","f1_9_5","f1_9_6","f1_9_7","f1_9_8","f1_9_9","f1_9_10","f1_9_11","f1_10_0","f1_10_1","f1_10_2","f1_10_3","f1_10_4","f1_10_5","f1_10_6","f1_10_7","f1_10_8","f1_10_9","f1_10_10","f1_10_11","f1_11_0","f1_11_1","f1_11_2","f1_11_3","f1_11_4","f1_11_5","f1_11_6","f1_11_7","f1_11_8","f1_11_9","f1_11_10","f1_11_11","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","stepInTest","squareAndOne","squareUntil","limit","addUntil","arg1","arg2","testStart","aArg","f12","f13","f14","f15","f16","f17","f18","f19","f20","f21","f22","f23","f24","f25","f26","f27","f28","f29","f30","f31","f32","f33","f34","f35","f36","f37","f38","f39","f40","f41","f42","f43","f44","f45","f46","f47","f48","f49","f50","f51","f52","f53","f54","f55","f56","f57","f58","f59","f60","f61","f62","f63","f64","f65","f66","f67","f68","f69","f70","f71","f72","f73","f74","f75","f76","f77","f78","f79","f80","f81","f82","f83","f84","f85","f86","f87","f88","f89","f90","f91","f92","f93","f94","f95","f96","f97","f98","f99","f100","f101","f102","f103","f104","f105","f106","f107","f108","f109","f110","f111","f112","f113","f114","f115","f116","f117","f118","f119","f120","f121","f122","f123","f124","f125","f126","f127","f128","f129","f130","f131","f132","f133","f134","f135","f136","f137","f138","f139","f140","f141","f142","f143","f144","f145","f146","f147","f148","f149","f150","f151","f152","f153","f154","f155","f156","f157","f158","f159","f160","f161","f162","f163","f164","f165","f166","f167","f168","f169","f170","f171","f172","f173","f174","f175","f176","f177","f178","f179","f180","f181","f182","f183","f184","f185","f186","f187","f188","f189","f190","f191","f192","f193","f194","f195","f196","f197","f198","f199"],"mappings":"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","file":"static/js/main.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"./\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 5);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nif (true) {\n module.exports = __webpack_require__(13);\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar asap = __webpack_require__(8);\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n try {\n return obj.then;\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nfunction tryCallOne(fn, a) {\n try {\n return fn(a);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\nfunction tryCallTwo(fn, a, b) {\n try {\n fn(a, b);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('Promise constructor\\'s argument is not a function');\n }\n this._75 = 0;\n this._83 = 0;\n this._18 = null;\n this._38 = null;\n if (fn === noop) return;\n doResolve(fn, this);\n}\nPromise._47 = null;\nPromise._71 = null;\nPromise._44 = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n if (this.constructor !== Promise) {\n return safeThen(this, onFulfilled, onRejected);\n }\n var res = new Promise(noop);\n handle(this, new Handler(onFulfilled, onRejected, res));\n return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n return new self.constructor(function (resolve, reject) {\n var res = new Promise(noop);\n res.then(resolve, reject);\n handle(self, new Handler(onFulfilled, onRejected, res));\n });\n}\nfunction handle(self, deferred) {\n while (self._83 === 3) {\n self = self._18;\n }\n if (Promise._47) {\n Promise._47(self);\n }\n if (self._83 === 0) {\n if (self._75 === 0) {\n self._75 = 1;\n self._38 = deferred;\n return;\n }\n if (self._75 === 1) {\n self._75 = 2;\n self._38 = [self._38, deferred];\n return;\n }\n self._38.push(deferred);\n return;\n }\n handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n asap(function() {\n var cb = self._83 === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n if (self._83 === 1) {\n resolve(deferred.promise, self._18);\n } else {\n reject(deferred.promise, self._18);\n }\n return;\n }\n var ret = tryCallOne(cb, self._18);\n if (ret === IS_ERROR) {\n reject(deferred.promise, LAST_ERROR);\n } else {\n resolve(deferred.promise, ret);\n }\n });\n}\nfunction resolve(self, newValue) {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) {\n return reject(\n self,\n new TypeError('A promise cannot be resolved with itself.')\n );\n }\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = getThen(newValue);\n if (then === IS_ERROR) {\n return reject(self, LAST_ERROR);\n }\n if (\n then === self.then &&\n newValue instanceof Promise\n ) {\n self._83 = 3;\n self._18 = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(then.bind(newValue), self);\n return;\n }\n }\n self._83 = 1;\n self._18 = newValue;\n finale(self);\n}\n\nfunction reject(self, newValue) {\n self._83 = 2;\n self._18 = newValue;\n if (Promise._71) {\n Promise._71(self, newValue);\n }\n finale(self);\n}\nfunction finale(self) {\n if (self._75 === 1) {\n handle(self, self._38);\n self._38 = null;\n }\n if (self._75 === 2) {\n for (var i = 0; i < self._38.length; i++) {\n handle(self, self._38[i]);\n }\n self._38 = null;\n }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n var done = false;\n var res = tryCallTwo(fn, function (value) {\n if (done) return;\n done = true;\n resolve(promise, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(promise, reason);\n });\n if (!done && res === IS_ERROR) {\n done = true;\n reject(promise, LAST_ERROR);\n }\n}\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar emptyObject = {};\n\nif (false) {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(6);\nmodule.exports = __webpack_require__(12);\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n// @remove-on-eject-begin\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// @remove-on-eject-end\n\n\nif (typeof Promise === 'undefined') {\n // Rejection tracking prevents a common issue where React gets into an\n // inconsistent state due to an error, but it gets swallowed by a Promise,\n // and the user has no idea what causes React's erratic future behavior.\n __webpack_require__(7).enable();\n window.Promise = __webpack_require__(10);\n}\n\n// fetch() polyfill for making API calls.\n__webpack_require__(11);\n\n// Object.assign() is commonly used with React.\n// It will use the native implementation if it's present and isn't buggy.\nObject.assign = __webpack_require__(0);\n\n// In tests, polyfill requestAnimationFrame since jsdom doesn't provide it yet.\n// We don't polyfill it in the browser--this is user's responsibility.\nif (false) {\n require('raf').polyfill(global);\n}\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Promise = __webpack_require__(3);\n\nvar DEFAULT_WHITELIST = [\n ReferenceError,\n TypeError,\n RangeError\n];\n\nvar enabled = false;\nexports.disable = disable;\nfunction disable() {\n enabled = false;\n Promise._47 = null;\n Promise._71 = null;\n}\n\nexports.enable = enable;\nfunction enable(options) {\n options = options || {};\n if (enabled) disable();\n enabled = true;\n var id = 0;\n var displayId = 0;\n var rejections = {};\n Promise._47 = function (promise) {\n if (\n promise._83 === 2 && // IS REJECTED\n rejections[promise._56]\n ) {\n if (rejections[promise._56].logged) {\n onHandled(promise._56);\n } else {\n clearTimeout(rejections[promise._56].timeout);\n }\n delete rejections[promise._56];\n }\n };\n Promise._71 = function (promise, err) {\n if (promise._75 === 0) { // not yet handled\n promise._56 = id++;\n rejections[promise._56] = {\n displayId: null,\n error: err,\n timeout: setTimeout(\n onUnhandled.bind(null, promise._56),\n // For reference errors and type errors, this almost always\n // means the programmer made a mistake, so log them after just\n // 100ms\n // otherwise, wait 2 seconds to see if they get handled\n matchWhitelist(err, DEFAULT_WHITELIST)\n ? 100\n : 2000\n ),\n logged: false\n };\n }\n };\n function onUnhandled(id) {\n if (\n options.allRejections ||\n matchWhitelist(\n rejections[id].error,\n options.whitelist || DEFAULT_WHITELIST\n )\n ) {\n rejections[id].displayId = displayId++;\n if (options.onUnhandled) {\n rejections[id].logged = true;\n options.onUnhandled(\n rejections[id].displayId,\n rejections[id].error\n );\n } else {\n rejections[id].logged = true;\n logError(\n rejections[id].displayId,\n rejections[id].error\n );\n }\n }\n }\n function onHandled(id) {\n if (rejections[id].logged) {\n if (options.onHandled) {\n options.onHandled(rejections[id].displayId, rejections[id].error);\n } else if (!rejections[id].onUnhandled) {\n console.warn(\n 'Promise Rejection Handled (id: ' + rejections[id].displayId + '):'\n );\n console.warn(\n ' This means you can ignore any previous messages of the form \"Possible Unhandled Promise Rejection\" with id ' +\n rejections[id].displayId + '.'\n );\n }\n }\n }\n}\n\nfunction logError(id, error) {\n console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):');\n var errStr = (error && (error.stack || error)) + '';\n errStr.split('\\n').forEach(function (line) {\n console.warn(' ' + line);\n });\n}\n\nfunction matchWhitelist(error, list) {\n return list.some(function (cls) {\n return error instanceof cls;\n });\n}\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Equivalent to push, but avoids a function call.\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser's own event loop.\nvar requestFlush;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\n// `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nvar scope = typeof global !== \"undefined\" ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\n// MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nif (typeof BrowserMutationObserver === \"function\") {\n requestFlush = makeRequestCallFromMutationObserver(flush);\n\n// MessageChannels are desirable because they give direct access to the HTML\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n}\n\n// `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\nrawAsap.requestFlush = requestFlush;\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode(\"\");\n observer.observe(node, {characterData: true});\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(9)))\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\n} catch(e) {\n\t// This works if the window reference is available\n\tif(typeof window === \"object\")\n\t\tg = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = __webpack_require__(3);\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n var p = new Promise(Promise._44);\n p._83 = 1;\n p._18 = value;\n return p;\n}\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value;\n\n if (value === null) return NULL;\n if (value === undefined) return UNDEFINED;\n if (value === true) return TRUE;\n if (value === false) return FALSE;\n if (value === 0) return ZERO;\n if (value === '') return EMPTYSTRING;\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(value));\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n }\n }\n return valuePromise(value);\n};\n\nPromise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n if (val instanceof Promise && val.then === Promise.prototype.then) {\n while (val._83 === 3) {\n val = val._18;\n }\n if (val._83 === 1) return res(i, val._18);\n if (val._83 === 2) reject(val._18);\n val.then(function (val) {\n res(i, val);\n }, reject);\n return;\n } else {\n var then = val.then;\n if (typeof then === 'function') {\n var p = new Promise(then.bind(val));\n p.then(function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) {\n values.forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n });\n });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\n(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_react___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_react__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_dom__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_react_dom___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_react_dom__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__App__ = __webpack_require__(24);\n__WEBPACK_IMPORTED_MODULE_1_react_dom___default.a.render(__WEBPACK_IMPORTED_MODULE_0_react___default.a.createElement(__WEBPACK_IMPORTED_MODULE_2__App__[\"a\" /* default */],null),document.getElementById('root'));\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/** @license React v16.2.0\n * react.production.min.js\n *\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar m=__webpack_require__(0),n=__webpack_require__(4),p=__webpack_require__(2),q=\"function\"===typeof Symbol&&Symbol[\"for\"],r=q?Symbol[\"for\"](\"react.element\"):60103,t=q?Symbol[\"for\"](\"react.call\"):60104,u=q?Symbol[\"for\"](\"react.return\"):60105,v=q?Symbol[\"for\"](\"react.portal\"):60106,w=q?Symbol[\"for\"](\"react.fragment\"):60107,x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){for(var b=arguments.length-1,e=\"Minified React error #\"+a+\"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant\\x3d\"+a,c=0;cM.length&&M.push(a)}\nfunction P(a,b,e,c){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case r:case t:case u:case v:g=!0}}if(g)return e(c,a,\"\"===b?\".\"+Q(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k=g.hasBooleanValue+g.hasNumericValue+g.hasOverloadedBooleanValue?void 0:E(\"50\",f);e.hasOwnProperty(f)&&(g.attributeName=e[f]);d.hasOwnProperty(f)&&(g.attributeNamespace=d[f]);a.hasOwnProperty(f)&&(g.mutationMethod=a[f]);ua[f]=g}}},ua={};\nfunction va(a,b){if(oa.hasOwnProperty(a)||2this.eventPool.length&&this.eventPool.push(a)}function Jb(a){a.eventPool=[];a.getPooled=Kb;a.release=Lb}function Mb(a,b,c,d){return T.call(this,a,b,c,d)}T.augmentClass(Mb,{data:null});function Nb(a,b,c,d){return T.call(this,a,b,c,d)}T.augmentClass(Nb,{data:null});var Pb=[9,13,27,32],Vb=l.canUseDOM&&\"CompositionEvent\"in window,Wb=null;l.canUseDOM&&\"documentMode\"in document&&(Wb=document.documentMode);var Xb;\nif(Xb=l.canUseDOM&&\"TextEvent\"in window&&!Wb){var Yb=window.opera;Xb=!(\"object\"===typeof Yb&&\"function\"===typeof Yb.version&&12>=parseInt(Yb.version(),10))}\nvar Zb=Xb,$b=l.canUseDOM&&(!Vb||Wb&&8=Wb),ac=String.fromCharCode(32),bc={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"topCompositionEnd\",\"topKeyPress\",\"topTextInput\",\"topPaste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"topBlur topCompositionEnd topKeyDown topKeyPress topKeyUp topMouseDown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"topBlur topCompositionStart topKeyDown topKeyPress topKeyUp topMouseDown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"topBlur topCompositionUpdate topKeyDown topKeyPress topKeyUp topMouseDown\".split(\" \")}},cc=!1;\nfunction dc(a,b){switch(a){case \"topKeyUp\":return-1!==Pb.indexOf(b.keyCode);case \"topKeyDown\":return 229!==b.keyCode;case \"topKeyPress\":case \"topMouseDown\":case \"topBlur\":return!0;default:return!1}}function ec(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var fc=!1;function gc(a,b){switch(a){case \"topCompositionEnd\":return ec(b);case \"topKeyPress\":if(32!==b.which)return null;cc=!0;return ac;case \"topTextInput\":return a=b.data,a===ac&&cc?null:a;default:return null}}\nfunction hc(a,b){if(fc)return\"topCompositionEnd\"===a||!Vb&&dc(a,b)?(a=Fb(),S._root=null,S._startText=null,S._fallbackText=null,fc=!1,a):null;switch(a){case \"topPaste\":return null;case \"topKeyPress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1qd.length&&qd.push(a)}}}\nvar xd=Object.freeze({get _enabled(){return td},get _handleTopLevel(){return sd},setHandleTopLevel:function(a){sd=a},setEnabled:ud,isEnabled:function(){return td},trapBubbledEvent:U,trapCapturedEvent:wd,dispatchEvent:vd});function yd(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;c[\"ms\"+a]=\"MS\"+b;c[\"O\"+a]=\"o\"+b.toLowerCase();return c}\nvar zd={animationend:yd(\"Animation\",\"AnimationEnd\"),animationiteration:yd(\"Animation\",\"AnimationIteration\"),animationstart:yd(\"Animation\",\"AnimationStart\"),transitionend:yd(\"Transition\",\"TransitionEnd\")},Ad={},Bd={};l.canUseDOM&&(Bd=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete zd.animationend.animation,delete zd.animationiteration.animation,delete zd.animationstart.animation),\"TransitionEvent\"in window||delete zd.transitionend.transition);\nfunction Cd(a){if(Ad[a])return Ad[a];if(!zd[a])return a;var b=zd[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Bd)return Ad[a]=b[c];return\"\"}\nvar Dd={topAbort:\"abort\",topAnimationEnd:Cd(\"animationend\")||\"animationend\",topAnimationIteration:Cd(\"animationiteration\")||\"animationiteration\",topAnimationStart:Cd(\"animationstart\")||\"animationstart\",topBlur:\"blur\",topCancel:\"cancel\",topCanPlay:\"canplay\",topCanPlayThrough:\"canplaythrough\",topChange:\"change\",topClick:\"click\",topClose:\"close\",topCompositionEnd:\"compositionend\",topCompositionStart:\"compositionstart\",topCompositionUpdate:\"compositionupdate\",topContextMenu:\"contextmenu\",topCopy:\"copy\",\ntopCut:\"cut\",topDoubleClick:\"dblclick\",topDrag:\"drag\",topDragEnd:\"dragend\",topDragEnter:\"dragenter\",topDragExit:\"dragexit\",topDragLeave:\"dragleave\",topDragOver:\"dragover\",topDragStart:\"dragstart\",topDrop:\"drop\",topDurationChange:\"durationchange\",topEmptied:\"emptied\",topEncrypted:\"encrypted\",topEnded:\"ended\",topError:\"error\",topFocus:\"focus\",topInput:\"input\",topKeyDown:\"keydown\",topKeyPress:\"keypress\",topKeyUp:\"keyup\",topLoadedData:\"loadeddata\",topLoad:\"load\",topLoadedMetadata:\"loadedmetadata\",topLoadStart:\"loadstart\",\ntopMouseDown:\"mousedown\",topMouseMove:\"mousemove\",topMouseOut:\"mouseout\",topMouseOver:\"mouseover\",topMouseUp:\"mouseup\",topPaste:\"paste\",topPause:\"pause\",topPlay:\"play\",topPlaying:\"playing\",topProgress:\"progress\",topRateChange:\"ratechange\",topScroll:\"scroll\",topSeeked:\"seeked\",topSeeking:\"seeking\",topSelectionChange:\"selectionchange\",topStalled:\"stalled\",topSuspend:\"suspend\",topTextInput:\"textInput\",topTimeUpdate:\"timeupdate\",topToggle:\"toggle\",topTouchCancel:\"touchcancel\",topTouchEnd:\"touchend\",topTouchMove:\"touchmove\",\ntopTouchStart:\"touchstart\",topTransitionEnd:Cd(\"transitionend\")||\"transitionend\",topVolumeChange:\"volumechange\",topWaiting:\"waiting\",topWheel:\"wheel\"},Ed={},Fd=0,Gd=\"_reactListenersID\"+(\"\"+Math.random()).slice(2);function Hd(a){Object.prototype.hasOwnProperty.call(a,Gd)||(a[Gd]=Fd++,Ed[a[Gd]]={});return Ed[a[Gd]]}function Id(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Jd(a,b){var c=Id(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Id(c)}}function Kd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&\"text\"===a.type||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Ld=l.canUseDOM&&\"documentMode\"in document&&11>=document.documentMode,Md={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"topBlur topContextMenu topFocus topKeyDown topKeyUp topMouseDown topMouseUp topSelectionChange\".split(\" \")}},Nd=null,Od=null,Pd=null,Qd=!1;\nfunction Rd(a,b){if(Qd||null==Nd||Nd!==da())return null;var c=Nd;\"selectionStart\"in c&&Kd(c)?c={start:c.selectionStart,end:c.selectionEnd}:window.getSelection?(c=window.getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}):c=void 0;return Pd&&ea(Pd,c)?null:(Pd=c,a=T.getPooled(Md.select,Od,a,b),a.type=\"select\",a.target=Nd,Ab(a),a)}\nvar Sd={eventTypes:Md,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=Hd(e);f=Sa.onSelect;for(var g=0;ghe||(a.current=ge[he],ge[he]=null,he--)}function W(a,b){he++;ge[he]=a.current;a.current=b}new Set;var ie={current:D},X={current:!1},je=D;function ke(a){return le(a)?je:ie.current}\nfunction me(a,b){var c=a.type.contextTypes;if(!c)return D;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function le(a){return 2===a.tag&&null!=a.type.childContextTypes}function ne(a){le(a)&&(V(X,a),V(ie,a))}\nfunction oe(a,b,c){null!=ie.cursor?E(\"168\"):void 0;W(ie,b,a);W(X,c,a)}function pe(a,b){var c=a.stateNode,d=a.type.childContextTypes;if(\"function\"!==typeof c.getChildContext)return b;c=c.getChildContext();for(var e in c)e in d?void 0:E(\"108\",jd(a)||\"Unknown\",e);return B({},b,c)}function qe(a){if(!le(a))return!1;var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||D;je=ie.current;W(ie,b,a);W(X,X.current,a);return!0}\nfunction re(a,b){var c=a.stateNode;c?void 0:E(\"169\");if(b){var d=pe(a,je);c.__reactInternalMemoizedMergedChildContext=d;V(X,a);V(ie,a);W(ie,d,a)}else V(X,a);W(X,b,a)}\nfunction Y(a,b,c){this.tag=a;this.key=b;this.stateNode=this.type=null;this.sibling=this.child=this[\"return\"]=null;this.index=0;this.memoizedState=this.updateQueue=this.memoizedProps=this.pendingProps=this.ref=null;this.internalContextTag=c;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.expirationTime=0;this.alternate=null}\nfunction se(a,b,c){var d=a.alternate;null===d?(d=new Y(a.tag,a.key,a.internalContextTag),d.type=a.type,d.stateNode=a.stateNode,d.alternate=a,a.alternate=d):(d.effectTag=0,d.nextEffect=null,d.firstEffect=null,d.lastEffect=null);d.expirationTime=c;d.pendingProps=b;d.child=a.child;d.memoizedProps=a.memoizedProps;d.memoizedState=a.memoizedState;d.updateQueue=a.updateQueue;d.sibling=a.sibling;d.index=a.index;d.ref=a.ref;return d}\nfunction te(a,b,c){var d=void 0,e=a.type,f=a.key;\"function\"===typeof e?(d=e.prototype&&e.prototype.isReactComponent?new Y(2,f,b):new Y(0,f,b),d.type=e,d.pendingProps=a.props):\"string\"===typeof e?(d=new Y(5,f,b),d.type=e,d.pendingProps=a.props):\"object\"===typeof e&&null!==e&&\"number\"===typeof e.tag?(d=e,d.pendingProps=a.props):E(\"130\",null==e?e:typeof e,\"\");d.expirationTime=c;return d}function ue(a,b,c,d){b=new Y(10,d,b);b.pendingProps=a;b.expirationTime=c;return b}\nfunction ve(a,b,c){b=new Y(6,null,b);b.pendingProps=a;b.expirationTime=c;return b}function we(a,b,c){b=new Y(7,a.key,b);b.type=a.handler;b.pendingProps=a;b.expirationTime=c;return b}function xe(a,b,c){a=new Y(9,null,b);a.expirationTime=c;return a}function ye(a,b,c){b=new Y(4,a.key,b);b.pendingProps=a.children||[];b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}var ze=null,Ae=null;\nfunction Be(a){return function(b){try{return a(b)}catch(c){}}}function Ce(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);ze=Be(function(a){return b.onCommitFiberRoot(c,a)});Ae=Be(function(a){return b.onCommitFiberUnmount(c,a)})}catch(d){}return!0}function De(a){\"function\"===typeof ze&&ze(a)}function Ee(a){\"function\"===typeof Ae&&Ae(a)}\nfunction Fe(a){return{baseState:a,expirationTime:0,first:null,last:null,callbackList:null,hasForceUpdate:!1,isInitialized:!1}}function Ge(a,b){null===a.last?a.first=a.last=b:(a.last.next=b,a.last=b);if(0===a.expirationTime||a.expirationTime>b.expirationTime)a.expirationTime=b.expirationTime}\nfunction He(a,b){var c=a.alternate,d=a.updateQueue;null===d&&(d=a.updateQueue=Fe(null));null!==c?(a=c.updateQueue,null===a&&(a=c.updateQueue=Fe(null))):a=null;a=a!==d?a:null;null===a?Ge(d,b):null===d.last||null===a.last?(Ge(d,b),Ge(a,b)):(Ge(d,b),a.last=b)}function Ie(a,b,c,d){a=a.partialState;return\"function\"===typeof a?a.call(b,c,d):a}\nfunction Je(a,b,c,d,e,f){null!==a&&a.updateQueue===c&&(c=b.updateQueue={baseState:c.baseState,expirationTime:c.expirationTime,first:c.first,last:c.last,isInitialized:c.isInitialized,callbackList:null,hasForceUpdate:!1});c.expirationTime=0;c.isInitialized?a=c.baseState:(a=c.baseState=b.memoizedState,c.isInitialized=!0);for(var g=!0,h=c.first,k=!1;null!==h;){var q=h.expirationTime;if(q>f){var v=c.expirationTime;if(0===v||v>q)c.expirationTime=q;k||(k=!0,c.baseState=a)}else{k||(c.first=h.next,null===\nc.first&&(c.last=null));if(h.isReplace)a=Ie(h,d,a,e),g=!0;else if(q=Ie(h,d,a,e))a=g?B({},a,q):B(a,q),g=!1;h.isForced&&(c.hasForceUpdate=!0);null!==h.callback&&(q=c.callbackList,null===q&&(q=c.callbackList=[]),q.push(h))}h=h.next}null!==c.callbackList?b.effectTag|=32:null!==c.first||c.hasForceUpdate||(b.updateQueue=null);k||(c.baseState=a);return a}\nfunction Ke(a,b){var c=a.callbackList;if(null!==c)for(a.callbackList=null,a=0;aw?(k=n,n=null):k=n.sibling;var x=G(e,n,m[w],A);if(null===x){null===n&&(n=k);break}a&&n&&null===x.alternate&&b(e,n);g=f(x,g,w);null===r?h=x:r.sibling=x;r=x;n=k}if(w===m.length)return c(e,n),h;if(null===n){for(;ww?(k=n,n=null):k=n.sibling;var J=G(e,n,x.value,A);if(null===J){n||(n=k);break}a&&n&&null===J.alternate&&b(e,n);g=f(J,\ng,w);null===r?h=J:r.sibling=J;r=J;n=k}if(x.done)return c(e,n),h;if(null===n){for(;!x.done;w++,x=m.next())x=z(e,x.value,A),null!==x&&(g=f(x,g,w),null===r?h=x:r.sibling=x,r=x);return h}for(n=d(e,n);!x.done;w++,x=m.next())if(x=I(n,e,w,x.value,A),null!==x){if(a&&null!==x.alternate)n[\"delete\"](null===x.key?w:x.key);g=f(x,g,w);null===r?h=x:r.sibling=x;r=x}a&&n.forEach(function(a){return b(e,a)});return h}return function(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===Ve&&null===f.key&&(f=f.props.children);\nvar m=\"object\"===typeof f&&null!==f;if(m)switch(f.$$typeof){case Re:a:{var r=f.key;for(m=d;null!==m;){if(m.key===r)if(10===m.tag?f.type===Ve:m.type===f.type){c(a,m.sibling);d=e(m,f.type===Ve?f.props.children:f.props,h);d.ref=Ze(m,f);d[\"return\"]=a;a=d;break a}else{c(a,m);break}else b(a,m);m=m.sibling}f.type===Ve?(d=ue(f.props.children,a.internalContextTag,h,f.key),d[\"return\"]=a,a=d):(h=te(f,a.internalContextTag,h),h.ref=Ze(d,f),h[\"return\"]=a,a=h)}return g(a);case Se:a:{for(m=f.key;null!==d;){if(d.key===\nm)if(7===d.tag){c(a,d.sibling);d=e(d,f,h);d[\"return\"]=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=we(f,a.internalContextTag,h);d[\"return\"]=a;a=d}return g(a);case Te:a:{if(null!==d)if(9===d.tag){c(a,d.sibling);d=e(d,null,h);d.type=f.value;d[\"return\"]=a;a=d;break a}else c(a,d);d=xe(f,a.internalContextTag,h);d.type=f.value;d[\"return\"]=a;a=d}return g(a);case Ue:a:{for(m=f.key;null!==d;){if(d.key===m)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===\nf.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d[\"return\"]=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=ye(f,a.internalContextTag,h);d[\"return\"]=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h)):(c(a,d),d=ve(f,a.internalContextTag,h)),d[\"return\"]=a,a=d,g(a);if(Ye(f))return L(a,d,f,h);if(Xe(f))return N(a,d,f,h);m&&$e(a,f);if(\"undefined\"===typeof f)switch(a.tag){case 2:case 1:h=a.type,E(\"152\",h.displayName||\nh.name||\"Component\")}return c(a,d)}}var bf=af(!0),cf=af(!1);\nfunction df(a,b,c,d,e){function f(a,b,c){var d=b.expirationTime;b.child=null===a?cf(b,null,c,d):bf(b,a.child,c,d)}function g(a,b){var c=b.ref;null===c||a&&a.ref===c||(b.effectTag|=128)}function h(a,b,c,d){g(a,b);if(!c)return d&&re(b,!1),q(a,b);c=b.stateNode;id.current=b;var e=c.render();b.effectTag|=1;f(a,b,e);b.memoizedState=c.state;b.memoizedProps=c.props;d&&re(b,!0);return b.child}function k(a){var b=a.stateNode;b.pendingContext?oe(a,b.pendingContext,b.pendingContext!==b.context):b.context&&oe(a,\nb.context,!1);I(a,b.containerInfo)}function q(a,b){null!==a&&b.child!==a.child?E(\"153\"):void 0;if(null!==b.child){a=b.child;var c=se(a,a.pendingProps,a.expirationTime);b.child=c;for(c[\"return\"]=b;null!==a.sibling;)a=a.sibling,c=c.sibling=se(a,a.pendingProps,a.expirationTime),c[\"return\"]=b;c.sibling=null}return b.child}function v(a,b){switch(b.tag){case 3:k(b);break;case 2:qe(b);break;case 4:I(b,b.stateNode.containerInfo)}return null}var y=a.shouldSetTextContent,u=a.useSyncScheduling,z=a.shouldDeprioritizeSubtree,\nG=b.pushHostContext,I=b.pushHostContainer,L=c.enterHydrationState,N=c.resetHydrationState,J=c.tryToClaimNextHydratableInstance;a=Le(d,e,function(a,b){a.memoizedProps=b},function(a,b){a.memoizedState=b});var w=a.adoptClassInstance,m=a.constructClassInstance,A=a.mountClassInstance,Ob=a.updateClassInstance;return{beginWork:function(a,b,c){if(0===b.expirationTime||b.expirationTime>c)return v(a,b);switch(b.tag){case 0:null!==a?E(\"155\"):void 0;var d=b.type,e=b.pendingProps,r=ke(b);r=me(b,r);d=d(e,r);b.effectTag|=\n1;\"object\"===typeof d&&null!==d&&\"function\"===typeof d.render?(b.tag=2,e=qe(b),w(b,d),A(b,c),b=h(a,b,!0,e)):(b.tag=1,f(a,b,d),b.memoizedProps=e,b=b.child);return b;case 1:a:{e=b.type;c=b.pendingProps;d=b.memoizedProps;if(X.current)null===c&&(c=d);else if(null===c||d===c){b=q(a,b);break a}d=ke(b);d=me(b,d);e=e(c,d);b.effectTag|=1;f(a,b,e);b.memoizedProps=c;b=b.child}return b;case 2:return e=qe(b),d=void 0,null===a?b.stateNode?E(\"153\"):(m(b,b.pendingProps),A(b,c),d=!0):d=Ob(a,b,c),h(a,b,d,e);case 3:return k(b),\ne=b.updateQueue,null!==e?(d=b.memoizedState,e=Je(a,b,e,null,null,c),d===e?(N(),b=q(a,b)):(d=e.element,r=b.stateNode,(null===a||null===a.child)&&r.hydrate&&L(b)?(b.effectTag|=2,b.child=cf(b,null,d,c)):(N(),f(a,b,d)),b.memoizedState=e,b=b.child)):(N(),b=q(a,b)),b;case 5:G(b);null===a&&J(b);e=b.type;var n=b.memoizedProps;d=b.pendingProps;null===d&&(d=n,null===d?E(\"154\"):void 0);r=null!==a?a.memoizedProps:null;X.current||null!==d&&n!==d?(n=d.children,y(e,d)?n=null:r&&y(e,r)&&(b.effectTag|=16),g(a,b),\n2147483647!==c&&!u&&z(e,d)?(b.expirationTime=2147483647,b=null):(f(a,b,n),b.memoizedProps=d,b=b.child)):b=q(a,b);return b;case 6:return null===a&&J(b),a=b.pendingProps,null===a&&(a=b.memoizedProps),b.memoizedProps=a,null;case 8:b.tag=7;case 7:e=b.pendingProps;if(X.current)null===e&&(e=a&&a.memoizedProps,null===e?E(\"154\"):void 0);else if(null===e||b.memoizedProps===e)e=b.memoizedProps;d=e.children;b.stateNode=null===a?cf(b,b.stateNode,d,c):bf(b,b.stateNode,d,c);b.memoizedProps=e;return b.stateNode;\ncase 9:return null;case 4:a:{I(b,b.stateNode.containerInfo);e=b.pendingProps;if(X.current)null===e&&(e=a&&a.memoizedProps,null==e?E(\"154\"):void 0);else if(null===e||b.memoizedProps===e){b=q(a,b);break a}null===a?b.child=bf(b,null,e,c):f(a,b,e);b.memoizedProps=e;b=b.child}return b;case 10:a:{c=b.pendingProps;if(X.current)null===c&&(c=b.memoizedProps);else if(null===c||b.memoizedProps===c){b=q(a,b);break a}f(a,b,c);b.memoizedProps=c;b=b.child}return b;default:E(\"156\")}},beginFailedWork:function(a,b,\nc){switch(b.tag){case 2:qe(b);break;case 3:k(b);break;default:E(\"157\")}b.effectTag|=64;null===a?b.child=null:b.child!==a.child&&(b.child=a.child);if(0===b.expirationTime||b.expirationTime>c)return v(a,b);b.firstEffect=null;b.lastEffect=null;b.child=null===a?cf(b,null,null,c):bf(b,a.child,null,c);2===b.tag&&(a=b.stateNode,b.memoizedProps=a.props,b.memoizedState=a.state);return b.child}}}\nfunction ef(a,b,c){function d(a){a.effectTag|=4}var e=a.createInstance,f=a.createTextInstance,g=a.appendInitialChild,h=a.finalizeInitialChildren,k=a.prepareUpdate,q=a.persistence,v=b.getRootHostContainer,y=b.popHostContext,u=b.getHostContext,z=b.popHostContainer,G=c.prepareToHydrateHostInstance,I=c.prepareToHydrateHostTextInstance,L=c.popHydrationState,N=void 0,J=void 0,w=void 0;a.mutation?(N=function(){},J=function(a,b,c){(b.updateQueue=c)&&d(b)},w=function(a,b,c,e){c!==e&&d(b)}):q?E(\"235\"):E(\"236\");\nreturn{completeWork:function(a,b,c){var m=b.pendingProps;if(null===m)m=b.memoizedProps;else if(2147483647!==b.expirationTime||2147483647===c)b.pendingProps=null;switch(b.tag){case 1:return null;case 2:return ne(b),null;case 3:z(b);V(X,b);V(ie,b);m=b.stateNode;m.pendingContext&&(m.context=m.pendingContext,m.pendingContext=null);if(null===a||null===a.child)L(b),b.effectTag&=-3;N(b);return null;case 5:y(b);c=v();var A=b.type;if(null!==a&&null!=b.stateNode){var p=a.memoizedProps,q=b.stateNode,x=u();q=\nk(q,A,p,m,c,x);J(a,b,q,A,p,m,c);a.ref!==b.ref&&(b.effectTag|=128)}else{if(!m)return null===b.stateNode?E(\"166\"):void 0,null;a=u();if(L(b))G(b,c,a)&&d(b);else{a=e(A,m,c,a,b);a:for(p=b.child;null!==p;){if(5===p.tag||6===p.tag)g(a,p.stateNode);else if(4!==p.tag&&null!==p.child){p.child[\"return\"]=p;p=p.child;continue}if(p===b)break;for(;null===p.sibling;){if(null===p[\"return\"]||p[\"return\"]===b)break a;p=p[\"return\"]}p.sibling[\"return\"]=p[\"return\"];p=p.sibling}h(a,A,m,c)&&d(b);b.stateNode=a}null!==b.ref&&\n(b.effectTag|=128)}return null;case 6:if(a&&null!=b.stateNode)w(a,b,a.memoizedProps,m);else{if(\"string\"!==typeof m)return null===b.stateNode?E(\"166\"):void 0,null;a=v();c=u();L(b)?I(b)&&d(b):b.stateNode=f(m,a,c,b)}return null;case 7:(m=b.memoizedProps)?void 0:E(\"165\");b.tag=8;A=[];a:for((p=b.stateNode)&&(p[\"return\"]=b);null!==p;){if(5===p.tag||6===p.tag||4===p.tag)E(\"247\");else if(9===p.tag)A.push(p.type);else if(null!==p.child){p.child[\"return\"]=p;p=p.child;continue}for(;null===p.sibling;){if(null===\np[\"return\"]||p[\"return\"]===b)break a;p=p[\"return\"]}p.sibling[\"return\"]=p[\"return\"];p=p.sibling}p=m.handler;m=p(m.props,A);b.child=bf(b,null!==a?a.child:null,m,c);return b.child;case 8:return b.tag=7,null;case 9:return null;case 10:return null;case 4:return z(b),N(b),null;case 0:E(\"167\");default:E(\"156\")}}}}\nfunction ff(a,b){function c(a){var c=a.ref;if(null!==c)try{c(null)}catch(A){b(a,A)}}function d(a){\"function\"===typeof Ee&&Ee(a);switch(a.tag){case 2:c(a);var d=a.stateNode;if(\"function\"===typeof d.componentWillUnmount)try{d.props=a.memoizedProps,d.state=a.memoizedState,d.componentWillUnmount()}catch(A){b(a,A)}break;case 5:c(a);break;case 7:e(a.stateNode);break;case 4:k&&g(a)}}function e(a){for(var b=a;;)if(d(b),null===b.child||k&&4===b.tag){if(b===a)break;for(;null===b.sibling;){if(null===b[\"return\"]||\nb[\"return\"]===a)return;b=b[\"return\"]}b.sibling[\"return\"]=b[\"return\"];b=b.sibling}else b.child[\"return\"]=b,b=b.child}function f(a){return 5===a.tag||3===a.tag||4===a.tag}function g(a){for(var b=a,c=!1,f=void 0,g=void 0;;){if(!c){c=b[\"return\"];a:for(;;){null===c?E(\"160\"):void 0;switch(c.tag){case 5:f=c.stateNode;g=!1;break a;case 3:f=c.stateNode.containerInfo;g=!0;break a;case 4:f=c.stateNode.containerInfo;g=!0;break a}c=c[\"return\"]}c=!0}if(5===b.tag||6===b.tag)e(b),g?J(f,b.stateNode):N(f,b.stateNode);\nelse if(4===b.tag?f=b.stateNode.containerInfo:d(b),null!==b.child){b.child[\"return\"]=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b[\"return\"]||b[\"return\"]===a)return;b=b[\"return\"];4===b.tag&&(c=!1)}b.sibling[\"return\"]=b[\"return\"];b=b.sibling}}var h=a.getPublicInstance,k=a.mutation;a=a.persistence;k||(a?E(\"235\"):E(\"236\"));var q=k.commitMount,v=k.commitUpdate,y=k.resetTextContent,u=k.commitTextUpdate,z=k.appendChild,G=k.appendChildToContainer,I=k.insertBefore,L=k.insertInContainerBefore,\nN=k.removeChild,J=k.removeChildFromContainer;return{commitResetTextContent:function(a){y(a.stateNode)},commitPlacement:function(a){a:{for(var b=a[\"return\"];null!==b;){if(f(b)){var c=b;break a}b=b[\"return\"]}E(\"160\");c=void 0}var d=b=void 0;switch(c.tag){case 5:b=c.stateNode;d=!1;break;case 3:b=c.stateNode.containerInfo;d=!0;break;case 4:b=c.stateNode.containerInfo;d=!0;break;default:E(\"161\")}c.effectTag&16&&(y(b),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c[\"return\"]||f(c[\"return\"])){c=\nnull;break a}c=c[\"return\"]}c.sibling[\"return\"]=c[\"return\"];for(c=c.sibling;5!==c.tag&&6!==c.tag;){if(c.effectTag&2)continue b;if(null===c.child||4===c.tag)continue b;else c.child[\"return\"]=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}for(var e=a;;){if(5===e.tag||6===e.tag)c?d?L(b,e.stateNode,c):I(b,e.stateNode,c):d?G(b,e.stateNode):z(b,e.stateNode);else if(4!==e.tag&&null!==e.child){e.child[\"return\"]=e;e=e.child;continue}if(e===a)break;for(;null===e.sibling;){if(null===e[\"return\"]||e[\"return\"]===\na)return;e=e[\"return\"]}e.sibling[\"return\"]=e[\"return\"];e=e.sibling}},commitDeletion:function(a){g(a);a[\"return\"]=null;a.child=null;a.alternate&&(a.alternate.child=null,a.alternate[\"return\"]=null)},commitWork:function(a,b){switch(b.tag){case 2:break;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps;a=null!==a?a.memoizedProps:d;var e=b.type,f=b.updateQueue;b.updateQueue=null;null!==f&&v(c,f,e,a,d,b)}break;case 6:null===b.stateNode?E(\"162\"):void 0;c=b.memoizedProps;u(b.stateNode,null!==a?a.memoizedProps:\nc,c);break;case 3:break;default:E(\"163\")}},commitLifeCycles:function(a,b){switch(b.tag){case 2:var c=b.stateNode;if(b.effectTag&4)if(null===a)c.props=b.memoizedProps,c.state=b.memoizedState,c.componentDidMount();else{var d=a.memoizedProps;a=a.memoizedState;c.props=b.memoizedProps;c.state=b.memoizedState;c.componentDidUpdate(d,a)}b=b.updateQueue;null!==b&&Ke(b,c);break;case 3:c=b.updateQueue;null!==c&&Ke(c,null!==b.child?b.child.stateNode:null);break;case 5:c=b.stateNode;null===a&&b.effectTag&4&&q(c,\nb.type,b.memoizedProps,b);break;case 6:break;case 4:break;default:E(\"163\")}},commitAttachRef:function(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:b(h(c));break;default:b(c)}}},commitDetachRef:function(a){a=a.ref;null!==a&&a(null)}}}var gf={};\nfunction hf(a){function b(a){a===gf?E(\"174\"):void 0;return a}var c=a.getChildHostContext,d=a.getRootHostContext,e={current:gf},f={current:gf},g={current:gf};return{getHostContext:function(){return b(e.current)},getRootHostContainer:function(){return b(g.current)},popHostContainer:function(a){V(e,a);V(f,a);V(g,a)},popHostContext:function(a){f.current===a&&(V(e,a),V(f,a))},pushHostContainer:function(a,b){W(g,b,a);b=d(b);W(f,a,a);W(e,b,a)},pushHostContext:function(a){var d=b(g.current),h=b(e.current);\nd=c(h,a.type,d);h!==d&&(W(f,a,a),W(e,d,a))},resetHostContainer:function(){e.current=gf;g.current=gf}}}\nfunction jf(a){function b(a,b){var c=new Y(5,null,0);c.type=\"DELETED\";c.stateNode=b;c[\"return\"]=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function c(a,b){switch(a.tag){case 5:return b=f(b,a.type,a.pendingProps),null!==b?(a.stateNode=b,!0):!1;case 6:return b=g(b,a.pendingProps),null!==b?(a.stateNode=b,!0):!1;default:return!1}}function d(a){for(a=a[\"return\"];null!==a&&5!==a.tag&&3!==a.tag;)a=a[\"return\"];y=a}var e=a.shouldSetTextContent;\na=a.hydration;if(!a)return{enterHydrationState:function(){return!1},resetHydrationState:function(){},tryToClaimNextHydratableInstance:function(){},prepareToHydrateHostInstance:function(){E(\"175\")},prepareToHydrateHostTextInstance:function(){E(\"176\")},popHydrationState:function(){return!1}};var f=a.canHydrateInstance,g=a.canHydrateTextInstance,h=a.getNextHydratableSibling,k=a.getFirstHydratableChild,q=a.hydrateInstance,v=a.hydrateTextInstance,y=null,u=null,z=!1;return{enterHydrationState:function(a){u=\nk(a.stateNode.containerInfo);y=a;return z=!0},resetHydrationState:function(){u=y=null;z=!1},tryToClaimNextHydratableInstance:function(a){if(z){var d=u;if(d){if(!c(a,d)){d=h(d);if(!d||!c(a,d)){a.effectTag|=2;z=!1;y=a;return}b(y,u)}y=a;u=k(d)}else a.effectTag|=2,z=!1,y=a}},prepareToHydrateHostInstance:function(a,b,c){b=q(a.stateNode,a.type,a.memoizedProps,b,c,a);a.updateQueue=b;return null!==b?!0:!1},prepareToHydrateHostTextInstance:function(a){return v(a.stateNode,a.memoizedProps,a)},popHydrationState:function(a){if(a!==\ny)return!1;if(!z)return d(a),z=!0,!1;var c=a.type;if(5!==a.tag||\"head\"!==c&&\"body\"!==c&&!e(c,a.memoizedProps))for(c=u;c;)b(a,c),c=h(c);d(a);u=y?h(a.stateNode):null;return!0}}}\nfunction kf(a){function b(a){Qb=ja=!0;var b=a.stateNode;b.current===a?E(\"177\"):void 0;b.isReadyForCommit=!1;id.current=null;if(1g.expirationTime)&&(f=g.expirationTime),g=g.sibling;e.expirationTime=f}if(null!==b)return b;null!==c&&(null===c.firstEffect&&(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1a))if(H<=Uc)for(;null!==F;)F=k(F)?e(F):d(F);else for(;null!==F&&!A();)F=k(F)?e(F):d(F)}else if(!(0===H||H>a))if(H<=Uc)for(;null!==F;)F=d(F);else for(;null!==F&&!A();)F=d(F)}function g(a,b){ja?E(\"243\"):void 0;ja=!0;a.isReadyForCommit=\n!1;if(a!==ra||b!==H||null===F){for(;-1b)a.expirationTime=b;null!==a.alternate&&(0===a.alternate.expirationTime||a.alternate.expirationTime>b)&&(a.alternate.expirationTime=b);if(null===a[\"return\"])if(3===a.tag){var c=a.stateNode;!ja&&c===ra&&bIg&&E(\"185\");if(null===d.nextScheduledRoot)d.remainingExpirationTime=e,null===O?(sa=O=d,d.nextScheduledRoot=d):(O=O.nextScheduledRoot=d,O.nextScheduledRoot=sa);else{var f=d.remainingExpirationTime;if(0===f||eTb)return;Jg(Xc)}var b=Wc()-Pe;Tb=a;Xc=Kg(J,{timeout:10*(a-2)-b})}function N(){var a=0,b=null;if(null!==O)for(var c=O,d=sa;null!==d;){var e=d.remainingExpirationTime;if(0===e){null===c||null===O?E(\"244\"):void 0;if(d===d.nextScheduledRoot){sa=O=d.nextScheduledRoot=null;break}else if(d===sa)sa=e=d.nextScheduledRoot,\nO.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===O){O=c;O.nextScheduledRoot=sa;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=null;d=c.nextScheduledRoot}else{if(0===a||eLg?!1:Yc=!0}function Ob(a){null===ma?E(\"246\"):\nvoid 0;ma.remainingExpirationTime=0;Ub||(Ub=!0,Zc=a)}var r=hf(a),n=jf(a),p=r.popHostContainer,qg=r.popHostContext,x=r.resetHostContainer,Me=df(a,r,n,u,y),rg=Me.beginWork,Gg=Me.beginFailedWork,Fg=ef(a,r,n).completeWork;r=ff(a,h);var zg=r.commitResetTextContent,Ne=r.commitPlacement,Bg=r.commitDeletion,Oe=r.commitWork,Dg=r.commitLifeCycles,Eg=r.commitAttachRef,Ag=r.commitDetachRef,Wc=a.now,Kg=a.scheduleDeferredCallback,Jg=a.cancelDeferredCallback,Hg=a.useSyncScheduling,yg=a.prepareForCommit,Cg=a.resetAfterCommit,\nPe=Wc(),Uc=2,ka=0,ja=!1,F=null,ra=null,H=0,t=null,R=null,qa=null,ha=null,ca=null,eb=!1,Qb=!1,Sc=!1,sa=null,O=null,Tb=0,Xc=-1,Fa=!1,ma=null,na=0,Yc=!1,Ub=!1,Zc=null,fb=null,la=!1,Sb=!1,Ig=1E3,Rb=0,Lg=1;return{computeAsyncExpiration:v,computeExpirationForFiber:y,scheduleWork:u,batchedUpdates:function(a,b){var c=la;la=!0;try{return a(b)}finally{(la=c)||Fa||w(1,null)}},unbatchedUpdates:function(a){if(la&&!Sb){Sb=!0;try{return a()}finally{Sb=!1}}return a()},flushSync:function(a){var b=la;la=!0;try{a:{var c=\nka;ka=1;try{var d=a();break a}finally{ka=c}d=void 0}return d}finally{la=b,Fa?E(\"187\"):void 0,w(1,null)}},deferredUpdates:function(a){var b=ka;ka=v();try{return a()}finally{ka=b}}}}\nfunction lf(a){function b(a){a=od(a);return null===a?null:a.stateNode}var c=a.getPublicInstance;a=kf(a);var d=a.computeAsyncExpiration,e=a.computeExpirationForFiber,f=a.scheduleWork;return{createContainer:function(a,b){var c=new Y(3,null,0);a={current:c,containerInfo:a,pendingChildren:null,remainingExpirationTime:0,isReadyForCommit:!1,finishedWork:null,context:null,pendingContext:null,hydrate:b,nextScheduledRoot:null};return c.stateNode=a},updateContainer:function(a,b,c,q){var g=b.current;if(c){c=\nc._reactInternalFiber;var h;b:{2===kd(c)&&2===c.tag?void 0:E(\"170\");for(h=c;3!==h.tag;){if(le(h)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}(h=h[\"return\"])?void 0:E(\"171\")}h=h.stateNode.context}c=le(c)?pe(c,h):h}else c=D;null===b.context?b.context=c:b.pendingContext=c;b=q;b=void 0===b?null:b;q=null!=a&&null!=a.type&&null!=a.type.prototype&&!0===a.type.prototype.unstable_isAsyncReactComponent?d():e(g);He(g,{expirationTime:q,partialState:{element:a},callback:b,isReplace:!1,isForced:!1,\nnextCallback:null,next:null});f(g,q)},batchedUpdates:a.batchedUpdates,unbatchedUpdates:a.unbatchedUpdates,deferredUpdates:a.deferredUpdates,flushSync:a.flushSync,getPublicRootInstance:function(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return c(a.child.stateNode);default:return a.child.stateNode}},findHostInstance:b,findHostInstanceWithNoPortals:function(a){a=pd(a);return null===a?null:a.stateNode},injectIntoDevTools:function(a){var c=a.findFiberByHostInstance;return Ce(B({},\na,{findHostInstanceByFiber:function(a){return b(a)},findFiberByHostInstance:function(a){return c?c(a):null}}))}}}var mf=Object.freeze({default:lf}),nf=mf&&lf||mf,of=nf[\"default\"]?nf[\"default\"]:nf;function pf(a,b,c){var d=3=yf-a)if(-1!==wf&&wf<=\na)Bf.didTimeout=!0;else{xf||(xf=!0,requestAnimationFrame(Df));return}else Bf.didTimeout=!1;wf=-1;a=uf;uf=null;null!==a&&a(Bf)}},!1);var Df=function(a){xf=!1;var b=a-yf+Af;bb&&(b=8),Af=bc||d.hasOverloadedBooleanValue&&!1===c?Jf(a,b):d.mustUseProperty?a[d.propertyName]=c:(b=d.attributeName,(e=d.attributeNamespace)?a.setAttributeNS(e,b,\"\"+c):d.hasBooleanValue||d.hasOverloadedBooleanValue&&!0===c?a.setAttribute(b,\"\"):a.setAttribute(b,\"\"+c))}else Kf(a,b,va(b,c)?c:null)}\nfunction Kf(a,b,c){Hf(b)&&(null==c?a.removeAttribute(b):a.setAttribute(b,\"\"+c))}function Jf(a,b){var c=wa(b);c?(b=c.mutationMethod)?b(a,void 0):c.mustUseProperty?a[c.propertyName]=c.hasBooleanValue?!1:\"\":a.removeAttribute(c.attributeName):a.removeAttribute(b)}\nfunction Lf(a,b){var c=b.value,d=b.checked;return B({type:void 0,step:void 0,min:void 0,max:void 0},b,{defaultChecked:void 0,defaultValue:void 0,value:null!=c?c:a._wrapperState.initialValue,checked:null!=d?d:a._wrapperState.initialChecked})}function Mf(a,b){var c=b.defaultValue;a._wrapperState={initialChecked:null!=b.checked?b.checked:b.defaultChecked,initialValue:null!=b.value?b.value:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}\nfunction Nf(a,b){b=b.checked;null!=b&&If(a,\"checked\",b)}function Of(a,b){Nf(a,b);var c=b.value;if(null!=c)if(0===c&&\"\"===a.value)a.value=\"0\";else if(\"number\"===b.type){if(b=parseFloat(a.value)||0,c!=b||c==b&&a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else null==b.value&&null!=b.defaultValue&&a.defaultValue!==\"\"+b.defaultValue&&(a.defaultValue=\"\"+b.defaultValue),null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Pf(a,b){switch(b.type){case \"submit\":case \"reset\":break;case \"color\":case \"date\":case \"datetime\":case \"datetime-local\":case \"month\":case \"time\":case \"week\":a.value=\"\";a.value=a.defaultValue;break;default:a.value=a.value}b=a.name;\"\"!==b&&(a.name=\"\");a.defaultChecked=!a.defaultChecked;a.defaultChecked=!a.defaultChecked;\"\"!==b&&(a.name=b)}function Qf(a){var b=\"\";aa.Children.forEach(a,function(a){null==a||\"string\"!==typeof a&&\"number\"!==typeof a||(b+=a)});return b}\nfunction Rf(a,b){a=B({children:void 0},b);if(b=Qf(b.children))a.children=b;return a}function Sf(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=b.length?void 0:E(\"93\"),b=b[0]),c=\"\"+b),null==c&&(c=\"\"));a._wrapperState={initialValue:\"\"+c}}\nfunction Wf(a,b){var c=b.value;null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&(a.defaultValue=c));null!=b.defaultValue&&(a.defaultValue=b.defaultValue)}function Xf(a){var b=a.textContent;b===a._wrapperState.initialValue&&(a.value=b)}var Yf={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Zf(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function $f(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Zf(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar ag=void 0,bg=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Yf.svg||\"innerHTML\"in a)a.innerHTML=b;else{ag=ag||document.createElement(\"div\");ag.innerHTML=\"\\x3csvg\\x3e\"+b+\"\\x3c/svg\\x3e\";for(b=ag.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction cg(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar dg={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,\nstopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},eg=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(dg).forEach(function(a){eg.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);dg[b]=dg[a]})});\nfunction fg(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\");var e=c;var f=b[c];e=null==f||\"boolean\"===typeof f||\"\"===f?\"\":d||\"number\"!==typeof f||0===f||dg.hasOwnProperty(e)&&dg[e]?(\"\"+f).trim():f+\"px\";\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var gg=B({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction hg(a,b,c){b&&(gg[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?E(\"137\",a,c()):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?E(\"60\"):void 0,\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML?void 0:E(\"61\")),null!=b.style&&\"object\"!==typeof b.style?E(\"62\",c()):void 0)}\nfunction ig(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var jg=Yf.html,kg=C.thatReturns(\"\");\nfunction lg(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Hd(a);b=Sa[b];for(var d=0;d\nd&&(e=d,d=a,a=e);e=Jd(c,a);var f=Jd(c,d);if(e&&f&&(1!==b.rangeCount||b.anchorNode!==e.node||b.anchorOffset!==e.offset||b.focusNode!==f.node||b.focusOffset!==f.offset)){var g=document.createRange();g.setStart(e.node,e.offset);b.removeAllRanges();a>d?(b.addRange(g),b.extend(f.node,f.offset)):(g.setEnd(f.node,f.offset),b.addRange(g))}}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});ia(c);for(c=0;c=limit){return arg*arg;}else{return squareUntil(arg*arg,limit);}}function addUntil(arg1,arg2,limit){if(arg1+arg2>limit){return arg1+arg2;}else{return addUntil(arg1+arg2,arg2,limit);}}function testStart(aArg){var r=10;var a=squareAndOne(r);var b=squareUntil(r,99999999999);//recurses 3 times, returns on 4th call\nvar c=addUntil(r,5,1050);// recurses 208 times and returns on the 209th call\nreturn a+b+c;}/* harmony default export */ __webpack_exports__[\"a\"] = (testStart);\n\n/***/ }),\n/* 27 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction f0(){f1();return Math.random();}function f1(){f2();return Math.random();}function f2(){f3();return Math.random();}function f3(){f4();return Math.random();}function f4(){f5();return Math.random();}function f5(){f6();return Math.random();}function f6(){f7();return Math.random();}function f7(){f8();return Math.random();}function f8(){f9();return Math.random();}function f9(){f10();return Math.random();}function f10(){f11();return Math.random();}function f11(){f12();return Math.random();}function f12(){f13();return Math.random();}function f13(){f14();return Math.random();}function f14(){f15();return Math.random();}function f15(){f16();return Math.random();}function f16(){f17();return Math.random();}function f17(){f18();return Math.random();}function f18(){f19();return Math.random();}function f19(){f20();return Math.random();}function f20(){f21();return Math.random();}function f21(){f22();return Math.random();}function f22(){f23();return Math.random();}function f23(){f24();return Math.random();}function f24(){f25();return Math.random();}function f25(){f26();return Math.random();}function f26(){f27();return Math.random();}function f27(){f28();return Math.random();}function f28(){f29();return Math.random();}function f29(){f30();return Math.random();}function f30(){f31();return Math.random();}function f31(){f32();return Math.random();}function f32(){f33();return Math.random();}function f33(){f34();return Math.random();}function f34(){f35();return Math.random();}function f35(){f36();return Math.random();}function f36(){f37();return Math.random();}function f37(){f38();return Math.random();}function f38(){f39();return Math.random();}function f39(){f40();return Math.random();}function f40(){f41();return Math.random();}function f41(){f42();return Math.random();}function f42(){f43();return Math.random();}function f43(){f44();return Math.random();}function f44(){f45();return Math.random();}function f45(){f46();return Math.random();}function f46(){f47();return Math.random();}function f47(){f48();return Math.random();}function f48(){f49();return Math.random();}function f49(){f50();return Math.random();}function f50(){f51();return Math.random();}function f51(){f52();return Math.random();}function f52(){f53();return Math.random();}function f53(){f54();return Math.random();}function f54(){f55();return Math.random();}function f55(){f56();return Math.random();}function f56(){f57();return Math.random();}function f57(){f58();return Math.random();}function f58(){f59();return Math.random();}function f59(){f60();return Math.random();}function f60(){f61();return Math.random();}function f61(){f62();return Math.random();}function f62(){f63();return Math.random();}function f63(){f64();return Math.random();}function f64(){f65();return Math.random();}function f65(){f66();return Math.random();}function f66(){f67();return Math.random();}function f67(){f68();return Math.random();}function f68(){f69();return Math.random();}function f69(){f70();return Math.random();}function f70(){f71();return Math.random();}function f71(){f72();return Math.random();}function f72(){f73();return Math.random();}function f73(){f74();return Math.random();}function f74(){f75();return Math.random();}function f75(){f76();return Math.random();}function f76(){f77();return Math.random();}function f77(){f78();return Math.random();}function f78(){f79();return Math.random();}function f79(){f80();return Math.random();}function f80(){f81();return Math.random();}function f81(){f82();return Math.random();}function f82(){f83();return Math.random();}function f83(){f84();return Math.random();}function f84(){f85();return Math.random();}function f85(){f86();return Math.random();}function f86(){f87();return Math.random();}function f87(){f88();return Math.random();}function f88(){f89();return Math.random();}function f89(){f90();return Math.random();}function f90(){f91();return Math.random();}function f91(){f92();return Math.random();}function f92(){f93();return Math.random();}function f93(){f94();return Math.random();}function f94(){f95();return Math.random();}function f95(){f96();return Math.random();}function f96(){f97();return Math.random();}function f97(){f98();return Math.random();}function f98(){f99();return Math.random();}function f99(){f100();return Math.random();}function f100(){f101();return Math.random();}function f101(){f102();return Math.random();}function f102(){f103();return Math.random();}function f103(){f104();return Math.random();}function f104(){f105();return Math.random();}function f105(){f106();return Math.random();}function f106(){f107();return Math.random();}function f107(){f108();return Math.random();}function f108(){f109();return Math.random();}function f109(){f110();return Math.random();}function f110(){f111();return Math.random();}function f111(){f112();return Math.random();}function f112(){f113();return Math.random();}function f113(){f114();return Math.random();}function f114(){f115();return Math.random();}function f115(){f116();return Math.random();}function f116(){f117();return Math.random();}function f117(){f118();return Math.random();}function f118(){f119();return Math.random();}function f119(){f120();return Math.random();}function f120(){f121();return Math.random();}function f121(){f122();return Math.random();}function f122(){f123();return Math.random();}function f123(){f124();return Math.random();}function f124(){f125();return Math.random();}function f125(){f126();return Math.random();}function f126(){f127();return Math.random();}function f127(){f128();return Math.random();}function f128(){f129();return Math.random();}function f129(){f130();return Math.random();}function f130(){f131();return Math.random();}function f131(){f132();return Math.random();}function f132(){f133();return Math.random();}function f133(){f134();return Math.random();}function f134(){f135();return Math.random();}function f135(){f136();return Math.random();}function f136(){f137();return Math.random();}function f137(){f138();return Math.random();}function f138(){f139();return Math.random();}function f139(){f140();return Math.random();}function f140(){f141();return Math.random();}function f141(){f142();return Math.random();}function f142(){f143();return Math.random();}function f143(){f144();return Math.random();}function f144(){f145();return Math.random();}function f145(){f146();return Math.random();}function f146(){f147();return Math.random();}function f147(){f148();return Math.random();}function f148(){f149();return Math.random();}function f149(){f150();return Math.random();}function f150(){f151();return Math.random();}function f151(){f152();return Math.random();}function f152(){f153();return Math.random();}function f153(){f154();return Math.random();}function f154(){f155();return Math.random();}function f155(){f156();return Math.random();}function f156(){f157();return Math.random();}function f157(){f158();return Math.random();}function f158(){f159();return Math.random();}function f159(){f160();return Math.random();}function f160(){f161();return Math.random();}function f161(){f162();return Math.random();}function f162(){f163();return Math.random();}function f163(){f164();return Math.random();}function f164(){f165();return Math.random();}function f165(){f166();return Math.random();}function f166(){f167();return Math.random();}function f167(){f168();return Math.random();}function f168(){f169();return Math.random();}function f169(){f170();return Math.random();}function f170(){f171();return Math.random();}function f171(){f172();return Math.random();}function f172(){f173();return Math.random();}function f173(){f174();return Math.random();}function f174(){f175();return Math.random();}function f175(){f176();return Math.random();}function f176(){f177();return Math.random();}function f177(){f178();return Math.random();}function f178(){f179();return Math.random();}function f179(){f180();return Math.random();}function f180(){f181();return Math.random();}function f181(){f182();return Math.random();}function f182(){f183();return Math.random();}function f183(){f184();return Math.random();}function f184(){f185();return Math.random();}function f185(){f186();return Math.random();}function f186(){f187();return Math.random();}function f187(){f188();return Math.random();}function f188(){f189();return Math.random();}function f189(){f190();return Math.random();}function f190(){f191();return Math.random();}function f191(){f192();return Math.random();}function f192(){f193();return Math.random();}function f193(){f194();return Math.random();}function f194(){f195();return Math.random();}function f195(){f196();return Math.random();}function f196(){f197();return Math.random();}function f197(){f198();return Math.random();}function f198(){f199();return Math.random();}function f199(){return Math.random();}/* harmony default export */ __webpack_exports__[\"a\"] = (f0);\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// static/js/main.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 5);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap f1fd4c13c329564a0384","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/object-assign/index.js\n// module id = 0\n// module chunks = 0","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react/index.js\n// module id = 1\n// module chunks = 0","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/emptyFunction.js\n// module id = 2\n// module chunks = 0","'use strict';\n\nvar asap = require('asap/raw');\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n try {\n return obj.then;\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nfunction tryCallOne(fn, a) {\n try {\n return fn(a);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\nfunction tryCallTwo(fn, a, b) {\n try {\n fn(a, b);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('Promise constructor\\'s argument is not a function');\n }\n this._75 = 0;\n this._83 = 0;\n this._18 = null;\n this._38 = null;\n if (fn === noop) return;\n doResolve(fn, this);\n}\nPromise._47 = null;\nPromise._71 = null;\nPromise._44 = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n if (this.constructor !== Promise) {\n return safeThen(this, onFulfilled, onRejected);\n }\n var res = new Promise(noop);\n handle(this, new Handler(onFulfilled, onRejected, res));\n return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n return new self.constructor(function (resolve, reject) {\n var res = new Promise(noop);\n res.then(resolve, reject);\n handle(self, new Handler(onFulfilled, onRejected, res));\n });\n}\nfunction handle(self, deferred) {\n while (self._83 === 3) {\n self = self._18;\n }\n if (Promise._47) {\n Promise._47(self);\n }\n if (self._83 === 0) {\n if (self._75 === 0) {\n self._75 = 1;\n self._38 = deferred;\n return;\n }\n if (self._75 === 1) {\n self._75 = 2;\n self._38 = [self._38, deferred];\n return;\n }\n self._38.push(deferred);\n return;\n }\n handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n asap(function() {\n var cb = self._83 === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n if (self._83 === 1) {\n resolve(deferred.promise, self._18);\n } else {\n reject(deferred.promise, self._18);\n }\n return;\n }\n var ret = tryCallOne(cb, self._18);\n if (ret === IS_ERROR) {\n reject(deferred.promise, LAST_ERROR);\n } else {\n resolve(deferred.promise, ret);\n }\n });\n}\nfunction resolve(self, newValue) {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) {\n return reject(\n self,\n new TypeError('A promise cannot be resolved with itself.')\n );\n }\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = getThen(newValue);\n if (then === IS_ERROR) {\n return reject(self, LAST_ERROR);\n }\n if (\n then === self.then &&\n newValue instanceof Promise\n ) {\n self._83 = 3;\n self._18 = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(then.bind(newValue), self);\n return;\n }\n }\n self._83 = 1;\n self._18 = newValue;\n finale(self);\n}\n\nfunction reject(self, newValue) {\n self._83 = 2;\n self._18 = newValue;\n if (Promise._71) {\n Promise._71(self, newValue);\n }\n finale(self);\n}\nfunction finale(self) {\n if (self._75 === 1) {\n handle(self, self._38);\n self._38 = null;\n }\n if (self._75 === 2) {\n for (var i = 0; i < self._38.length; i++) {\n handle(self, self._38[i]);\n }\n self._38 = null;\n }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n var done = false;\n var res = tryCallTwo(fn, function (value) {\n if (done) return;\n done = true;\n resolve(promise, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(promise, reason);\n });\n if (!done && res === IS_ERROR) {\n done = true;\n reject(promise, LAST_ERROR);\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-scripts/node_modules/promise/lib/core.js\n// module id = 3\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/fbjs/lib/emptyObject.js\n// module id = 4\n// module chunks = 0","// @remove-on-eject-begin\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// @remove-on-eject-end\n'use strict';\n\nif (typeof Promise === 'undefined') {\n // Rejection tracking prevents a common issue where React gets into an\n // inconsistent state due to an error, but it gets swallowed by a Promise,\n // and the user has no idea what causes React's erratic future behavior.\n require('promise/lib/rejection-tracking').enable();\n window.Promise = require('promise/lib/es6-extensions.js');\n}\n\n// fetch() polyfill for making API calls.\nrequire('whatwg-fetch');\n\n// Object.assign() is commonly used with React.\n// It will use the native implementation if it's present and isn't buggy.\nObject.assign = require('object-assign');\n\n// In tests, polyfill requestAnimationFrame since jsdom doesn't provide it yet.\n// We don't polyfill it in the browser--this is user's responsibility.\nif (process.env.NODE_ENV === 'test') {\n require('raf').polyfill(global);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-scripts/config/polyfills.js\n// module id = 6\n// module chunks = 0","'use strict';\n\nvar Promise = require('./core');\n\nvar DEFAULT_WHITELIST = [\n ReferenceError,\n TypeError,\n RangeError\n];\n\nvar enabled = false;\nexports.disable = disable;\nfunction disable() {\n enabled = false;\n Promise._47 = null;\n Promise._71 = null;\n}\n\nexports.enable = enable;\nfunction enable(options) {\n options = options || {};\n if (enabled) disable();\n enabled = true;\n var id = 0;\n var displayId = 0;\n var rejections = {};\n Promise._47 = function (promise) {\n if (\n promise._83 === 2 && // IS REJECTED\n rejections[promise._56]\n ) {\n if (rejections[promise._56].logged) {\n onHandled(promise._56);\n } else {\n clearTimeout(rejections[promise._56].timeout);\n }\n delete rejections[promise._56];\n }\n };\n Promise._71 = function (promise, err) {\n if (promise._75 === 0) { // not yet handled\n promise._56 = id++;\n rejections[promise._56] = {\n displayId: null,\n error: err,\n timeout: setTimeout(\n onUnhandled.bind(null, promise._56),\n // For reference errors and type errors, this almost always\n // means the programmer made a mistake, so log them after just\n // 100ms\n // otherwise, wait 2 seconds to see if they get handled\n matchWhitelist(err, DEFAULT_WHITELIST)\n ? 100\n : 2000\n ),\n logged: false\n };\n }\n };\n function onUnhandled(id) {\n if (\n options.allRejections ||\n matchWhitelist(\n rejections[id].error,\n options.whitelist || DEFAULT_WHITELIST\n )\n ) {\n rejections[id].displayId = displayId++;\n if (options.onUnhandled) {\n rejections[id].logged = true;\n options.onUnhandled(\n rejections[id].displayId,\n rejections[id].error\n );\n } else {\n rejections[id].logged = true;\n logError(\n rejections[id].displayId,\n rejections[id].error\n );\n }\n }\n }\n function onHandled(id) {\n if (rejections[id].logged) {\n if (options.onHandled) {\n options.onHandled(rejections[id].displayId, rejections[id].error);\n } else if (!rejections[id].onUnhandled) {\n console.warn(\n 'Promise Rejection Handled (id: ' + rejections[id].displayId + '):'\n );\n console.warn(\n ' This means you can ignore any previous messages of the form \"Possible Unhandled Promise Rejection\" with id ' +\n rejections[id].displayId + '.'\n );\n }\n }\n }\n}\n\nfunction logError(id, error) {\n console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):');\n var errStr = (error && (error.stack || error)) + '';\n errStr.split('\\n').forEach(function (line) {\n console.warn(' ' + line);\n });\n}\n\nfunction matchWhitelist(error, list) {\n return list.some(function (cls) {\n return error instanceof cls;\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-scripts/node_modules/promise/lib/rejection-tracking.js\n// module id = 7\n// module chunks = 0","\"use strict\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Equivalent to push, but avoids a function call.\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser's own event loop.\nvar requestFlush;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\n// `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nvar scope = typeof global !== \"undefined\" ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\n// MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nif (typeof BrowserMutationObserver === \"function\") {\n requestFlush = makeRequestCallFromMutationObserver(flush);\n\n// MessageChannels are desirable because they give direct access to the HTML\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n}\n\n// `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\nrawAsap.requestFlush = requestFlush;\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode(\"\");\n observer.observe(node, {characterData: true});\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/asap/browser-raw.js\n// module id = 8\n// module chunks = 0","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\n} catch(e) {\n\t// This works if the window reference is available\n\tif(typeof window === \"object\")\n\t\tg = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 9\n// module chunks = 0","'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n var p = new Promise(Promise._44);\n p._83 = 1;\n p._18 = value;\n return p;\n}\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value;\n\n if (value === null) return NULL;\n if (value === undefined) return UNDEFINED;\n if (value === true) return TRUE;\n if (value === false) return FALSE;\n if (value === 0) return ZERO;\n if (value === '') return EMPTYSTRING;\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(value));\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n }\n }\n return valuePromise(value);\n};\n\nPromise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n if (val instanceof Promise && val.then === Promise.prototype.then) {\n while (val._83 === 3) {\n val = val._18;\n }\n if (val._83 === 1) return res(i, val._18);\n if (val._83 === 2) reject(val._18);\n val.then(function (val) {\n res(i, val);\n }, reject);\n return;\n } else {\n var then = val.then;\n if (typeof then === 'function') {\n var p = new Promise(then.bind(val));\n p.then(function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) {\n values.forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n });\n });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/react-scripts/node_modules/promise/lib/es6-extensions.js\n// module id = 10\n// module chunks = 0","(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/whatwg-fetch/fetch.js\n// module id = 11\n// module chunks = 0","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\n\nReactDOM.render(, document.getElementById('root'));\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","/** @license React v16.2.0\n * react.production.min.js\n *\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var m=require(\"object-assign\"),n=require(\"fbjs/lib/emptyObject\"),p=require(\"fbjs/lib/emptyFunction\"),q=\"function\"===typeof Symbol&&Symbol[\"for\"],r=q?Symbol[\"for\"](\"react.element\"):60103,t=q?Symbol[\"for\"](\"react.call\"):60104,u=q?Symbol[\"for\"](\"react.return\"):60105,v=q?Symbol[\"for\"](\"react.portal\"):60106,w=q?Symbol[\"for\"](\"react.fragment\"):60107,x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){for(var b=arguments.length-1,e=\"Minified React error #\"+a+\"; visit http://facebook.github.io/react/docs/error-decoder.html?invariant\\x3d\"+a,c=0;cM.length&&M.push(a)}\nfunction P(a,b,e,c){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case r:case t:case u:case v:g=!0}}if(g)return e(c,a,\"\"===b?\".\"+Q(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k=g.hasBooleanValue+g.hasNumericValue+g.hasOverloadedBooleanValue?void 0:E(\"50\",f);e.hasOwnProperty(f)&&(g.attributeName=e[f]);d.hasOwnProperty(f)&&(g.attributeNamespace=d[f]);a.hasOwnProperty(f)&&(g.mutationMethod=a[f]);ua[f]=g}}},ua={};\nfunction va(a,b){if(oa.hasOwnProperty(a)||2this.eventPool.length&&this.eventPool.push(a)}function Jb(a){a.eventPool=[];a.getPooled=Kb;a.release=Lb}function Mb(a,b,c,d){return T.call(this,a,b,c,d)}T.augmentClass(Mb,{data:null});function Nb(a,b,c,d){return T.call(this,a,b,c,d)}T.augmentClass(Nb,{data:null});var Pb=[9,13,27,32],Vb=l.canUseDOM&&\"CompositionEvent\"in window,Wb=null;l.canUseDOM&&\"documentMode\"in document&&(Wb=document.documentMode);var Xb;\nif(Xb=l.canUseDOM&&\"TextEvent\"in window&&!Wb){var Yb=window.opera;Xb=!(\"object\"===typeof Yb&&\"function\"===typeof Yb.version&&12>=parseInt(Yb.version(),10))}\nvar Zb=Xb,$b=l.canUseDOM&&(!Vb||Wb&&8=Wb),ac=String.fromCharCode(32),bc={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"topCompositionEnd\",\"topKeyPress\",\"topTextInput\",\"topPaste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"topBlur topCompositionEnd topKeyDown topKeyPress topKeyUp topMouseDown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"topBlur topCompositionStart topKeyDown topKeyPress topKeyUp topMouseDown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"topBlur topCompositionUpdate topKeyDown topKeyPress topKeyUp topMouseDown\".split(\" \")}},cc=!1;\nfunction dc(a,b){switch(a){case \"topKeyUp\":return-1!==Pb.indexOf(b.keyCode);case \"topKeyDown\":return 229!==b.keyCode;case \"topKeyPress\":case \"topMouseDown\":case \"topBlur\":return!0;default:return!1}}function ec(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var fc=!1;function gc(a,b){switch(a){case \"topCompositionEnd\":return ec(b);case \"topKeyPress\":if(32!==b.which)return null;cc=!0;return ac;case \"topTextInput\":return a=b.data,a===ac&&cc?null:a;default:return null}}\nfunction hc(a,b){if(fc)return\"topCompositionEnd\"===a||!Vb&&dc(a,b)?(a=Fb(),S._root=null,S._startText=null,S._fallbackText=null,fc=!1,a):null;switch(a){case \"topPaste\":return null;case \"topKeyPress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1qd.length&&qd.push(a)}}}\nvar xd=Object.freeze({get _enabled(){return td},get _handleTopLevel(){return sd},setHandleTopLevel:function(a){sd=a},setEnabled:ud,isEnabled:function(){return td},trapBubbledEvent:U,trapCapturedEvent:wd,dispatchEvent:vd});function yd(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;c[\"ms\"+a]=\"MS\"+b;c[\"O\"+a]=\"o\"+b.toLowerCase();return c}\nvar zd={animationend:yd(\"Animation\",\"AnimationEnd\"),animationiteration:yd(\"Animation\",\"AnimationIteration\"),animationstart:yd(\"Animation\",\"AnimationStart\"),transitionend:yd(\"Transition\",\"TransitionEnd\")},Ad={},Bd={};l.canUseDOM&&(Bd=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete zd.animationend.animation,delete zd.animationiteration.animation,delete zd.animationstart.animation),\"TransitionEvent\"in window||delete zd.transitionend.transition);\nfunction Cd(a){if(Ad[a])return Ad[a];if(!zd[a])return a;var b=zd[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Bd)return Ad[a]=b[c];return\"\"}\nvar Dd={topAbort:\"abort\",topAnimationEnd:Cd(\"animationend\")||\"animationend\",topAnimationIteration:Cd(\"animationiteration\")||\"animationiteration\",topAnimationStart:Cd(\"animationstart\")||\"animationstart\",topBlur:\"blur\",topCancel:\"cancel\",topCanPlay:\"canplay\",topCanPlayThrough:\"canplaythrough\",topChange:\"change\",topClick:\"click\",topClose:\"close\",topCompositionEnd:\"compositionend\",topCompositionStart:\"compositionstart\",topCompositionUpdate:\"compositionupdate\",topContextMenu:\"contextmenu\",topCopy:\"copy\",\ntopCut:\"cut\",topDoubleClick:\"dblclick\",topDrag:\"drag\",topDragEnd:\"dragend\",topDragEnter:\"dragenter\",topDragExit:\"dragexit\",topDragLeave:\"dragleave\",topDragOver:\"dragover\",topDragStart:\"dragstart\",topDrop:\"drop\",topDurationChange:\"durationchange\",topEmptied:\"emptied\",topEncrypted:\"encrypted\",topEnded:\"ended\",topError:\"error\",topFocus:\"focus\",topInput:\"input\",topKeyDown:\"keydown\",topKeyPress:\"keypress\",topKeyUp:\"keyup\",topLoadedData:\"loadeddata\",topLoad:\"load\",topLoadedMetadata:\"loadedmetadata\",topLoadStart:\"loadstart\",\ntopMouseDown:\"mousedown\",topMouseMove:\"mousemove\",topMouseOut:\"mouseout\",topMouseOver:\"mouseover\",topMouseUp:\"mouseup\",topPaste:\"paste\",topPause:\"pause\",topPlay:\"play\",topPlaying:\"playing\",topProgress:\"progress\",topRateChange:\"ratechange\",topScroll:\"scroll\",topSeeked:\"seeked\",topSeeking:\"seeking\",topSelectionChange:\"selectionchange\",topStalled:\"stalled\",topSuspend:\"suspend\",topTextInput:\"textInput\",topTimeUpdate:\"timeupdate\",topToggle:\"toggle\",topTouchCancel:\"touchcancel\",topTouchEnd:\"touchend\",topTouchMove:\"touchmove\",\ntopTouchStart:\"touchstart\",topTransitionEnd:Cd(\"transitionend\")||\"transitionend\",topVolumeChange:\"volumechange\",topWaiting:\"waiting\",topWheel:\"wheel\"},Ed={},Fd=0,Gd=\"_reactListenersID\"+(\"\"+Math.random()).slice(2);function Hd(a){Object.prototype.hasOwnProperty.call(a,Gd)||(a[Gd]=Fd++,Ed[a[Gd]]={});return Ed[a[Gd]]}function Id(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Jd(a,b){var c=Id(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Id(c)}}function Kd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&\"text\"===a.type||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Ld=l.canUseDOM&&\"documentMode\"in document&&11>=document.documentMode,Md={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"topBlur topContextMenu topFocus topKeyDown topKeyUp topMouseDown topMouseUp topSelectionChange\".split(\" \")}},Nd=null,Od=null,Pd=null,Qd=!1;\nfunction Rd(a,b){if(Qd||null==Nd||Nd!==da())return null;var c=Nd;\"selectionStart\"in c&&Kd(c)?c={start:c.selectionStart,end:c.selectionEnd}:window.getSelection?(c=window.getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}):c=void 0;return Pd&&ea(Pd,c)?null:(Pd=c,a=T.getPooled(Md.select,Od,a,b),a.type=\"select\",a.target=Nd,Ab(a),a)}\nvar Sd={eventTypes:Md,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=Hd(e);f=Sa.onSelect;for(var g=0;ghe||(a.current=ge[he],ge[he]=null,he--)}function W(a,b){he++;ge[he]=a.current;a.current=b}new Set;var ie={current:D},X={current:!1},je=D;function ke(a){return le(a)?je:ie.current}\nfunction me(a,b){var c=a.type.contextTypes;if(!c)return D;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function le(a){return 2===a.tag&&null!=a.type.childContextTypes}function ne(a){le(a)&&(V(X,a),V(ie,a))}\nfunction oe(a,b,c){null!=ie.cursor?E(\"168\"):void 0;W(ie,b,a);W(X,c,a)}function pe(a,b){var c=a.stateNode,d=a.type.childContextTypes;if(\"function\"!==typeof c.getChildContext)return b;c=c.getChildContext();for(var e in c)e in d?void 0:E(\"108\",jd(a)||\"Unknown\",e);return B({},b,c)}function qe(a){if(!le(a))return!1;var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||D;je=ie.current;W(ie,b,a);W(X,X.current,a);return!0}\nfunction re(a,b){var c=a.stateNode;c?void 0:E(\"169\");if(b){var d=pe(a,je);c.__reactInternalMemoizedMergedChildContext=d;V(X,a);V(ie,a);W(ie,d,a)}else V(X,a);W(X,b,a)}\nfunction Y(a,b,c){this.tag=a;this.key=b;this.stateNode=this.type=null;this.sibling=this.child=this[\"return\"]=null;this.index=0;this.memoizedState=this.updateQueue=this.memoizedProps=this.pendingProps=this.ref=null;this.internalContextTag=c;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.expirationTime=0;this.alternate=null}\nfunction se(a,b,c){var d=a.alternate;null===d?(d=new Y(a.tag,a.key,a.internalContextTag),d.type=a.type,d.stateNode=a.stateNode,d.alternate=a,a.alternate=d):(d.effectTag=0,d.nextEffect=null,d.firstEffect=null,d.lastEffect=null);d.expirationTime=c;d.pendingProps=b;d.child=a.child;d.memoizedProps=a.memoizedProps;d.memoizedState=a.memoizedState;d.updateQueue=a.updateQueue;d.sibling=a.sibling;d.index=a.index;d.ref=a.ref;return d}\nfunction te(a,b,c){var d=void 0,e=a.type,f=a.key;\"function\"===typeof e?(d=e.prototype&&e.prototype.isReactComponent?new Y(2,f,b):new Y(0,f,b),d.type=e,d.pendingProps=a.props):\"string\"===typeof e?(d=new Y(5,f,b),d.type=e,d.pendingProps=a.props):\"object\"===typeof e&&null!==e&&\"number\"===typeof e.tag?(d=e,d.pendingProps=a.props):E(\"130\",null==e?e:typeof e,\"\");d.expirationTime=c;return d}function ue(a,b,c,d){b=new Y(10,d,b);b.pendingProps=a;b.expirationTime=c;return b}\nfunction ve(a,b,c){b=new Y(6,null,b);b.pendingProps=a;b.expirationTime=c;return b}function we(a,b,c){b=new Y(7,a.key,b);b.type=a.handler;b.pendingProps=a;b.expirationTime=c;return b}function xe(a,b,c){a=new Y(9,null,b);a.expirationTime=c;return a}function ye(a,b,c){b=new Y(4,a.key,b);b.pendingProps=a.children||[];b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}var ze=null,Ae=null;\nfunction Be(a){return function(b){try{return a(b)}catch(c){}}}function Ce(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);ze=Be(function(a){return b.onCommitFiberRoot(c,a)});Ae=Be(function(a){return b.onCommitFiberUnmount(c,a)})}catch(d){}return!0}function De(a){\"function\"===typeof ze&&ze(a)}function Ee(a){\"function\"===typeof Ae&&Ae(a)}\nfunction Fe(a){return{baseState:a,expirationTime:0,first:null,last:null,callbackList:null,hasForceUpdate:!1,isInitialized:!1}}function Ge(a,b){null===a.last?a.first=a.last=b:(a.last.next=b,a.last=b);if(0===a.expirationTime||a.expirationTime>b.expirationTime)a.expirationTime=b.expirationTime}\nfunction He(a,b){var c=a.alternate,d=a.updateQueue;null===d&&(d=a.updateQueue=Fe(null));null!==c?(a=c.updateQueue,null===a&&(a=c.updateQueue=Fe(null))):a=null;a=a!==d?a:null;null===a?Ge(d,b):null===d.last||null===a.last?(Ge(d,b),Ge(a,b)):(Ge(d,b),a.last=b)}function Ie(a,b,c,d){a=a.partialState;return\"function\"===typeof a?a.call(b,c,d):a}\nfunction Je(a,b,c,d,e,f){null!==a&&a.updateQueue===c&&(c=b.updateQueue={baseState:c.baseState,expirationTime:c.expirationTime,first:c.first,last:c.last,isInitialized:c.isInitialized,callbackList:null,hasForceUpdate:!1});c.expirationTime=0;c.isInitialized?a=c.baseState:(a=c.baseState=b.memoizedState,c.isInitialized=!0);for(var g=!0,h=c.first,k=!1;null!==h;){var q=h.expirationTime;if(q>f){var v=c.expirationTime;if(0===v||v>q)c.expirationTime=q;k||(k=!0,c.baseState=a)}else{k||(c.first=h.next,null===\nc.first&&(c.last=null));if(h.isReplace)a=Ie(h,d,a,e),g=!0;else if(q=Ie(h,d,a,e))a=g?B({},a,q):B(a,q),g=!1;h.isForced&&(c.hasForceUpdate=!0);null!==h.callback&&(q=c.callbackList,null===q&&(q=c.callbackList=[]),q.push(h))}h=h.next}null!==c.callbackList?b.effectTag|=32:null!==c.first||c.hasForceUpdate||(b.updateQueue=null);k||(c.baseState=a);return a}\nfunction Ke(a,b){var c=a.callbackList;if(null!==c)for(a.callbackList=null,a=0;aw?(k=n,n=null):k=n.sibling;var x=G(e,n,m[w],A);if(null===x){null===n&&(n=k);break}a&&n&&null===x.alternate&&b(e,n);g=f(x,g,w);null===r?h=x:r.sibling=x;r=x;n=k}if(w===m.length)return c(e,n),h;if(null===n){for(;ww?(k=n,n=null):k=n.sibling;var J=G(e,n,x.value,A);if(null===J){n||(n=k);break}a&&n&&null===J.alternate&&b(e,n);g=f(J,\ng,w);null===r?h=J:r.sibling=J;r=J;n=k}if(x.done)return c(e,n),h;if(null===n){for(;!x.done;w++,x=m.next())x=z(e,x.value,A),null!==x&&(g=f(x,g,w),null===r?h=x:r.sibling=x,r=x);return h}for(n=d(e,n);!x.done;w++,x=m.next())if(x=I(n,e,w,x.value,A),null!==x){if(a&&null!==x.alternate)n[\"delete\"](null===x.key?w:x.key);g=f(x,g,w);null===r?h=x:r.sibling=x;r=x}a&&n.forEach(function(a){return b(e,a)});return h}return function(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===Ve&&null===f.key&&(f=f.props.children);\nvar m=\"object\"===typeof f&&null!==f;if(m)switch(f.$$typeof){case Re:a:{var r=f.key;for(m=d;null!==m;){if(m.key===r)if(10===m.tag?f.type===Ve:m.type===f.type){c(a,m.sibling);d=e(m,f.type===Ve?f.props.children:f.props,h);d.ref=Ze(m,f);d[\"return\"]=a;a=d;break a}else{c(a,m);break}else b(a,m);m=m.sibling}f.type===Ve?(d=ue(f.props.children,a.internalContextTag,h,f.key),d[\"return\"]=a,a=d):(h=te(f,a.internalContextTag,h),h.ref=Ze(d,f),h[\"return\"]=a,a=h)}return g(a);case Se:a:{for(m=f.key;null!==d;){if(d.key===\nm)if(7===d.tag){c(a,d.sibling);d=e(d,f,h);d[\"return\"]=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=we(f,a.internalContextTag,h);d[\"return\"]=a;a=d}return g(a);case Te:a:{if(null!==d)if(9===d.tag){c(a,d.sibling);d=e(d,null,h);d.type=f.value;d[\"return\"]=a;a=d;break a}else c(a,d);d=xe(f,a.internalContextTag,h);d.type=f.value;d[\"return\"]=a;a=d}return g(a);case Ue:a:{for(m=f.key;null!==d;){if(d.key===m)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===\nf.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d[\"return\"]=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=ye(f,a.internalContextTag,h);d[\"return\"]=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h)):(c(a,d),d=ve(f,a.internalContextTag,h)),d[\"return\"]=a,a=d,g(a);if(Ye(f))return L(a,d,f,h);if(Xe(f))return N(a,d,f,h);m&&$e(a,f);if(\"undefined\"===typeof f)switch(a.tag){case 2:case 1:h=a.type,E(\"152\",h.displayName||\nh.name||\"Component\")}return c(a,d)}}var bf=af(!0),cf=af(!1);\nfunction df(a,b,c,d,e){function f(a,b,c){var d=b.expirationTime;b.child=null===a?cf(b,null,c,d):bf(b,a.child,c,d)}function g(a,b){var c=b.ref;null===c||a&&a.ref===c||(b.effectTag|=128)}function h(a,b,c,d){g(a,b);if(!c)return d&&re(b,!1),q(a,b);c=b.stateNode;id.current=b;var e=c.render();b.effectTag|=1;f(a,b,e);b.memoizedState=c.state;b.memoizedProps=c.props;d&&re(b,!0);return b.child}function k(a){var b=a.stateNode;b.pendingContext?oe(a,b.pendingContext,b.pendingContext!==b.context):b.context&&oe(a,\nb.context,!1);I(a,b.containerInfo)}function q(a,b){null!==a&&b.child!==a.child?E(\"153\"):void 0;if(null!==b.child){a=b.child;var c=se(a,a.pendingProps,a.expirationTime);b.child=c;for(c[\"return\"]=b;null!==a.sibling;)a=a.sibling,c=c.sibling=se(a,a.pendingProps,a.expirationTime),c[\"return\"]=b;c.sibling=null}return b.child}function v(a,b){switch(b.tag){case 3:k(b);break;case 2:qe(b);break;case 4:I(b,b.stateNode.containerInfo)}return null}var y=a.shouldSetTextContent,u=a.useSyncScheduling,z=a.shouldDeprioritizeSubtree,\nG=b.pushHostContext,I=b.pushHostContainer,L=c.enterHydrationState,N=c.resetHydrationState,J=c.tryToClaimNextHydratableInstance;a=Le(d,e,function(a,b){a.memoizedProps=b},function(a,b){a.memoizedState=b});var w=a.adoptClassInstance,m=a.constructClassInstance,A=a.mountClassInstance,Ob=a.updateClassInstance;return{beginWork:function(a,b,c){if(0===b.expirationTime||b.expirationTime>c)return v(a,b);switch(b.tag){case 0:null!==a?E(\"155\"):void 0;var d=b.type,e=b.pendingProps,r=ke(b);r=me(b,r);d=d(e,r);b.effectTag|=\n1;\"object\"===typeof d&&null!==d&&\"function\"===typeof d.render?(b.tag=2,e=qe(b),w(b,d),A(b,c),b=h(a,b,!0,e)):(b.tag=1,f(a,b,d),b.memoizedProps=e,b=b.child);return b;case 1:a:{e=b.type;c=b.pendingProps;d=b.memoizedProps;if(X.current)null===c&&(c=d);else if(null===c||d===c){b=q(a,b);break a}d=ke(b);d=me(b,d);e=e(c,d);b.effectTag|=1;f(a,b,e);b.memoizedProps=c;b=b.child}return b;case 2:return e=qe(b),d=void 0,null===a?b.stateNode?E(\"153\"):(m(b,b.pendingProps),A(b,c),d=!0):d=Ob(a,b,c),h(a,b,d,e);case 3:return k(b),\ne=b.updateQueue,null!==e?(d=b.memoizedState,e=Je(a,b,e,null,null,c),d===e?(N(),b=q(a,b)):(d=e.element,r=b.stateNode,(null===a||null===a.child)&&r.hydrate&&L(b)?(b.effectTag|=2,b.child=cf(b,null,d,c)):(N(),f(a,b,d)),b.memoizedState=e,b=b.child)):(N(),b=q(a,b)),b;case 5:G(b);null===a&&J(b);e=b.type;var n=b.memoizedProps;d=b.pendingProps;null===d&&(d=n,null===d?E(\"154\"):void 0);r=null!==a?a.memoizedProps:null;X.current||null!==d&&n!==d?(n=d.children,y(e,d)?n=null:r&&y(e,r)&&(b.effectTag|=16),g(a,b),\n2147483647!==c&&!u&&z(e,d)?(b.expirationTime=2147483647,b=null):(f(a,b,n),b.memoizedProps=d,b=b.child)):b=q(a,b);return b;case 6:return null===a&&J(b),a=b.pendingProps,null===a&&(a=b.memoizedProps),b.memoizedProps=a,null;case 8:b.tag=7;case 7:e=b.pendingProps;if(X.current)null===e&&(e=a&&a.memoizedProps,null===e?E(\"154\"):void 0);else if(null===e||b.memoizedProps===e)e=b.memoizedProps;d=e.children;b.stateNode=null===a?cf(b,b.stateNode,d,c):bf(b,b.stateNode,d,c);b.memoizedProps=e;return b.stateNode;\ncase 9:return null;case 4:a:{I(b,b.stateNode.containerInfo);e=b.pendingProps;if(X.current)null===e&&(e=a&&a.memoizedProps,null==e?E(\"154\"):void 0);else if(null===e||b.memoizedProps===e){b=q(a,b);break a}null===a?b.child=bf(b,null,e,c):f(a,b,e);b.memoizedProps=e;b=b.child}return b;case 10:a:{c=b.pendingProps;if(X.current)null===c&&(c=b.memoizedProps);else if(null===c||b.memoizedProps===c){b=q(a,b);break a}f(a,b,c);b.memoizedProps=c;b=b.child}return b;default:E(\"156\")}},beginFailedWork:function(a,b,\nc){switch(b.tag){case 2:qe(b);break;case 3:k(b);break;default:E(\"157\")}b.effectTag|=64;null===a?b.child=null:b.child!==a.child&&(b.child=a.child);if(0===b.expirationTime||b.expirationTime>c)return v(a,b);b.firstEffect=null;b.lastEffect=null;b.child=null===a?cf(b,null,null,c):bf(b,a.child,null,c);2===b.tag&&(a=b.stateNode,b.memoizedProps=a.props,b.memoizedState=a.state);return b.child}}}\nfunction ef(a,b,c){function d(a){a.effectTag|=4}var e=a.createInstance,f=a.createTextInstance,g=a.appendInitialChild,h=a.finalizeInitialChildren,k=a.prepareUpdate,q=a.persistence,v=b.getRootHostContainer,y=b.popHostContext,u=b.getHostContext,z=b.popHostContainer,G=c.prepareToHydrateHostInstance,I=c.prepareToHydrateHostTextInstance,L=c.popHydrationState,N=void 0,J=void 0,w=void 0;a.mutation?(N=function(){},J=function(a,b,c){(b.updateQueue=c)&&d(b)},w=function(a,b,c,e){c!==e&&d(b)}):q?E(\"235\"):E(\"236\");\nreturn{completeWork:function(a,b,c){var m=b.pendingProps;if(null===m)m=b.memoizedProps;else if(2147483647!==b.expirationTime||2147483647===c)b.pendingProps=null;switch(b.tag){case 1:return null;case 2:return ne(b),null;case 3:z(b);V(X,b);V(ie,b);m=b.stateNode;m.pendingContext&&(m.context=m.pendingContext,m.pendingContext=null);if(null===a||null===a.child)L(b),b.effectTag&=-3;N(b);return null;case 5:y(b);c=v();var A=b.type;if(null!==a&&null!=b.stateNode){var p=a.memoizedProps,q=b.stateNode,x=u();q=\nk(q,A,p,m,c,x);J(a,b,q,A,p,m,c);a.ref!==b.ref&&(b.effectTag|=128)}else{if(!m)return null===b.stateNode?E(\"166\"):void 0,null;a=u();if(L(b))G(b,c,a)&&d(b);else{a=e(A,m,c,a,b);a:for(p=b.child;null!==p;){if(5===p.tag||6===p.tag)g(a,p.stateNode);else if(4!==p.tag&&null!==p.child){p.child[\"return\"]=p;p=p.child;continue}if(p===b)break;for(;null===p.sibling;){if(null===p[\"return\"]||p[\"return\"]===b)break a;p=p[\"return\"]}p.sibling[\"return\"]=p[\"return\"];p=p.sibling}h(a,A,m,c)&&d(b);b.stateNode=a}null!==b.ref&&\n(b.effectTag|=128)}return null;case 6:if(a&&null!=b.stateNode)w(a,b,a.memoizedProps,m);else{if(\"string\"!==typeof m)return null===b.stateNode?E(\"166\"):void 0,null;a=v();c=u();L(b)?I(b)&&d(b):b.stateNode=f(m,a,c,b)}return null;case 7:(m=b.memoizedProps)?void 0:E(\"165\");b.tag=8;A=[];a:for((p=b.stateNode)&&(p[\"return\"]=b);null!==p;){if(5===p.tag||6===p.tag||4===p.tag)E(\"247\");else if(9===p.tag)A.push(p.type);else if(null!==p.child){p.child[\"return\"]=p;p=p.child;continue}for(;null===p.sibling;){if(null===\np[\"return\"]||p[\"return\"]===b)break a;p=p[\"return\"]}p.sibling[\"return\"]=p[\"return\"];p=p.sibling}p=m.handler;m=p(m.props,A);b.child=bf(b,null!==a?a.child:null,m,c);return b.child;case 8:return b.tag=7,null;case 9:return null;case 10:return null;case 4:return z(b),N(b),null;case 0:E(\"167\");default:E(\"156\")}}}}\nfunction ff(a,b){function c(a){var c=a.ref;if(null!==c)try{c(null)}catch(A){b(a,A)}}function d(a){\"function\"===typeof Ee&&Ee(a);switch(a.tag){case 2:c(a);var d=a.stateNode;if(\"function\"===typeof d.componentWillUnmount)try{d.props=a.memoizedProps,d.state=a.memoizedState,d.componentWillUnmount()}catch(A){b(a,A)}break;case 5:c(a);break;case 7:e(a.stateNode);break;case 4:k&&g(a)}}function e(a){for(var b=a;;)if(d(b),null===b.child||k&&4===b.tag){if(b===a)break;for(;null===b.sibling;){if(null===b[\"return\"]||\nb[\"return\"]===a)return;b=b[\"return\"]}b.sibling[\"return\"]=b[\"return\"];b=b.sibling}else b.child[\"return\"]=b,b=b.child}function f(a){return 5===a.tag||3===a.tag||4===a.tag}function g(a){for(var b=a,c=!1,f=void 0,g=void 0;;){if(!c){c=b[\"return\"];a:for(;;){null===c?E(\"160\"):void 0;switch(c.tag){case 5:f=c.stateNode;g=!1;break a;case 3:f=c.stateNode.containerInfo;g=!0;break a;case 4:f=c.stateNode.containerInfo;g=!0;break a}c=c[\"return\"]}c=!0}if(5===b.tag||6===b.tag)e(b),g?J(f,b.stateNode):N(f,b.stateNode);\nelse if(4===b.tag?f=b.stateNode.containerInfo:d(b),null!==b.child){b.child[\"return\"]=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b[\"return\"]||b[\"return\"]===a)return;b=b[\"return\"];4===b.tag&&(c=!1)}b.sibling[\"return\"]=b[\"return\"];b=b.sibling}}var h=a.getPublicInstance,k=a.mutation;a=a.persistence;k||(a?E(\"235\"):E(\"236\"));var q=k.commitMount,v=k.commitUpdate,y=k.resetTextContent,u=k.commitTextUpdate,z=k.appendChild,G=k.appendChildToContainer,I=k.insertBefore,L=k.insertInContainerBefore,\nN=k.removeChild,J=k.removeChildFromContainer;return{commitResetTextContent:function(a){y(a.stateNode)},commitPlacement:function(a){a:{for(var b=a[\"return\"];null!==b;){if(f(b)){var c=b;break a}b=b[\"return\"]}E(\"160\");c=void 0}var d=b=void 0;switch(c.tag){case 5:b=c.stateNode;d=!1;break;case 3:b=c.stateNode.containerInfo;d=!0;break;case 4:b=c.stateNode.containerInfo;d=!0;break;default:E(\"161\")}c.effectTag&16&&(y(b),c.effectTag&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c[\"return\"]||f(c[\"return\"])){c=\nnull;break a}c=c[\"return\"]}c.sibling[\"return\"]=c[\"return\"];for(c=c.sibling;5!==c.tag&&6!==c.tag;){if(c.effectTag&2)continue b;if(null===c.child||4===c.tag)continue b;else c.child[\"return\"]=c,c=c.child}if(!(c.effectTag&2)){c=c.stateNode;break a}}for(var e=a;;){if(5===e.tag||6===e.tag)c?d?L(b,e.stateNode,c):I(b,e.stateNode,c):d?G(b,e.stateNode):z(b,e.stateNode);else if(4!==e.tag&&null!==e.child){e.child[\"return\"]=e;e=e.child;continue}if(e===a)break;for(;null===e.sibling;){if(null===e[\"return\"]||e[\"return\"]===\na)return;e=e[\"return\"]}e.sibling[\"return\"]=e[\"return\"];e=e.sibling}},commitDeletion:function(a){g(a);a[\"return\"]=null;a.child=null;a.alternate&&(a.alternate.child=null,a.alternate[\"return\"]=null)},commitWork:function(a,b){switch(b.tag){case 2:break;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps;a=null!==a?a.memoizedProps:d;var e=b.type,f=b.updateQueue;b.updateQueue=null;null!==f&&v(c,f,e,a,d,b)}break;case 6:null===b.stateNode?E(\"162\"):void 0;c=b.memoizedProps;u(b.stateNode,null!==a?a.memoizedProps:\nc,c);break;case 3:break;default:E(\"163\")}},commitLifeCycles:function(a,b){switch(b.tag){case 2:var c=b.stateNode;if(b.effectTag&4)if(null===a)c.props=b.memoizedProps,c.state=b.memoizedState,c.componentDidMount();else{var d=a.memoizedProps;a=a.memoizedState;c.props=b.memoizedProps;c.state=b.memoizedState;c.componentDidUpdate(d,a)}b=b.updateQueue;null!==b&&Ke(b,c);break;case 3:c=b.updateQueue;null!==c&&Ke(c,null!==b.child?b.child.stateNode:null);break;case 5:c=b.stateNode;null===a&&b.effectTag&4&&q(c,\nb.type,b.memoizedProps,b);break;case 6:break;case 4:break;default:E(\"163\")}},commitAttachRef:function(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:b(h(c));break;default:b(c)}}},commitDetachRef:function(a){a=a.ref;null!==a&&a(null)}}}var gf={};\nfunction hf(a){function b(a){a===gf?E(\"174\"):void 0;return a}var c=a.getChildHostContext,d=a.getRootHostContext,e={current:gf},f={current:gf},g={current:gf};return{getHostContext:function(){return b(e.current)},getRootHostContainer:function(){return b(g.current)},popHostContainer:function(a){V(e,a);V(f,a);V(g,a)},popHostContext:function(a){f.current===a&&(V(e,a),V(f,a))},pushHostContainer:function(a,b){W(g,b,a);b=d(b);W(f,a,a);W(e,b,a)},pushHostContext:function(a){var d=b(g.current),h=b(e.current);\nd=c(h,a.type,d);h!==d&&(W(f,a,a),W(e,d,a))},resetHostContainer:function(){e.current=gf;g.current=gf}}}\nfunction jf(a){function b(a,b){var c=new Y(5,null,0);c.type=\"DELETED\";c.stateNode=b;c[\"return\"]=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function c(a,b){switch(a.tag){case 5:return b=f(b,a.type,a.pendingProps),null!==b?(a.stateNode=b,!0):!1;case 6:return b=g(b,a.pendingProps),null!==b?(a.stateNode=b,!0):!1;default:return!1}}function d(a){for(a=a[\"return\"];null!==a&&5!==a.tag&&3!==a.tag;)a=a[\"return\"];y=a}var e=a.shouldSetTextContent;\na=a.hydration;if(!a)return{enterHydrationState:function(){return!1},resetHydrationState:function(){},tryToClaimNextHydratableInstance:function(){},prepareToHydrateHostInstance:function(){E(\"175\")},prepareToHydrateHostTextInstance:function(){E(\"176\")},popHydrationState:function(){return!1}};var f=a.canHydrateInstance,g=a.canHydrateTextInstance,h=a.getNextHydratableSibling,k=a.getFirstHydratableChild,q=a.hydrateInstance,v=a.hydrateTextInstance,y=null,u=null,z=!1;return{enterHydrationState:function(a){u=\nk(a.stateNode.containerInfo);y=a;return z=!0},resetHydrationState:function(){u=y=null;z=!1},tryToClaimNextHydratableInstance:function(a){if(z){var d=u;if(d){if(!c(a,d)){d=h(d);if(!d||!c(a,d)){a.effectTag|=2;z=!1;y=a;return}b(y,u)}y=a;u=k(d)}else a.effectTag|=2,z=!1,y=a}},prepareToHydrateHostInstance:function(a,b,c){b=q(a.stateNode,a.type,a.memoizedProps,b,c,a);a.updateQueue=b;return null!==b?!0:!1},prepareToHydrateHostTextInstance:function(a){return v(a.stateNode,a.memoizedProps,a)},popHydrationState:function(a){if(a!==\ny)return!1;if(!z)return d(a),z=!0,!1;var c=a.type;if(5!==a.tag||\"head\"!==c&&\"body\"!==c&&!e(c,a.memoizedProps))for(c=u;c;)b(a,c),c=h(c);d(a);u=y?h(a.stateNode):null;return!0}}}\nfunction kf(a){function b(a){Qb=ja=!0;var b=a.stateNode;b.current===a?E(\"177\"):void 0;b.isReadyForCommit=!1;id.current=null;if(1g.expirationTime)&&(f=g.expirationTime),g=g.sibling;e.expirationTime=f}if(null!==b)return b;null!==c&&(null===c.firstEffect&&(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1a))if(H<=Uc)for(;null!==F;)F=k(F)?e(F):d(F);else for(;null!==F&&!A();)F=k(F)?e(F):d(F)}else if(!(0===H||H>a))if(H<=Uc)for(;null!==F;)F=d(F);else for(;null!==F&&!A();)F=d(F)}function g(a,b){ja?E(\"243\"):void 0;ja=!0;a.isReadyForCommit=\n!1;if(a!==ra||b!==H||null===F){for(;-1b)a.expirationTime=b;null!==a.alternate&&(0===a.alternate.expirationTime||a.alternate.expirationTime>b)&&(a.alternate.expirationTime=b);if(null===a[\"return\"])if(3===a.tag){var c=a.stateNode;!ja&&c===ra&&bIg&&E(\"185\");if(null===d.nextScheduledRoot)d.remainingExpirationTime=e,null===O?(sa=O=d,d.nextScheduledRoot=d):(O=O.nextScheduledRoot=d,O.nextScheduledRoot=sa);else{var f=d.remainingExpirationTime;if(0===f||eTb)return;Jg(Xc)}var b=Wc()-Pe;Tb=a;Xc=Kg(J,{timeout:10*(a-2)-b})}function N(){var a=0,b=null;if(null!==O)for(var c=O,d=sa;null!==d;){var e=d.remainingExpirationTime;if(0===e){null===c||null===O?E(\"244\"):void 0;if(d===d.nextScheduledRoot){sa=O=d.nextScheduledRoot=null;break}else if(d===sa)sa=e=d.nextScheduledRoot,\nO.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===O){O=c;O.nextScheduledRoot=sa;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=null;d=c.nextScheduledRoot}else{if(0===a||eLg?!1:Yc=!0}function Ob(a){null===ma?E(\"246\"):\nvoid 0;ma.remainingExpirationTime=0;Ub||(Ub=!0,Zc=a)}var r=hf(a),n=jf(a),p=r.popHostContainer,qg=r.popHostContext,x=r.resetHostContainer,Me=df(a,r,n,u,y),rg=Me.beginWork,Gg=Me.beginFailedWork,Fg=ef(a,r,n).completeWork;r=ff(a,h);var zg=r.commitResetTextContent,Ne=r.commitPlacement,Bg=r.commitDeletion,Oe=r.commitWork,Dg=r.commitLifeCycles,Eg=r.commitAttachRef,Ag=r.commitDetachRef,Wc=a.now,Kg=a.scheduleDeferredCallback,Jg=a.cancelDeferredCallback,Hg=a.useSyncScheduling,yg=a.prepareForCommit,Cg=a.resetAfterCommit,\nPe=Wc(),Uc=2,ka=0,ja=!1,F=null,ra=null,H=0,t=null,R=null,qa=null,ha=null,ca=null,eb=!1,Qb=!1,Sc=!1,sa=null,O=null,Tb=0,Xc=-1,Fa=!1,ma=null,na=0,Yc=!1,Ub=!1,Zc=null,fb=null,la=!1,Sb=!1,Ig=1E3,Rb=0,Lg=1;return{computeAsyncExpiration:v,computeExpirationForFiber:y,scheduleWork:u,batchedUpdates:function(a,b){var c=la;la=!0;try{return a(b)}finally{(la=c)||Fa||w(1,null)}},unbatchedUpdates:function(a){if(la&&!Sb){Sb=!0;try{return a()}finally{Sb=!1}}return a()},flushSync:function(a){var b=la;la=!0;try{a:{var c=\nka;ka=1;try{var d=a();break a}finally{ka=c}d=void 0}return d}finally{la=b,Fa?E(\"187\"):void 0,w(1,null)}},deferredUpdates:function(a){var b=ka;ka=v();try{return a()}finally{ka=b}}}}\nfunction lf(a){function b(a){a=od(a);return null===a?null:a.stateNode}var c=a.getPublicInstance;a=kf(a);var d=a.computeAsyncExpiration,e=a.computeExpirationForFiber,f=a.scheduleWork;return{createContainer:function(a,b){var c=new Y(3,null,0);a={current:c,containerInfo:a,pendingChildren:null,remainingExpirationTime:0,isReadyForCommit:!1,finishedWork:null,context:null,pendingContext:null,hydrate:b,nextScheduledRoot:null};return c.stateNode=a},updateContainer:function(a,b,c,q){var g=b.current;if(c){c=\nc._reactInternalFiber;var h;b:{2===kd(c)&&2===c.tag?void 0:E(\"170\");for(h=c;3!==h.tag;){if(le(h)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}(h=h[\"return\"])?void 0:E(\"171\")}h=h.stateNode.context}c=le(c)?pe(c,h):h}else c=D;null===b.context?b.context=c:b.pendingContext=c;b=q;b=void 0===b?null:b;q=null!=a&&null!=a.type&&null!=a.type.prototype&&!0===a.type.prototype.unstable_isAsyncReactComponent?d():e(g);He(g,{expirationTime:q,partialState:{element:a},callback:b,isReplace:!1,isForced:!1,\nnextCallback:null,next:null});f(g,q)},batchedUpdates:a.batchedUpdates,unbatchedUpdates:a.unbatchedUpdates,deferredUpdates:a.deferredUpdates,flushSync:a.flushSync,getPublicRootInstance:function(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return c(a.child.stateNode);default:return a.child.stateNode}},findHostInstance:b,findHostInstanceWithNoPortals:function(a){a=pd(a);return null===a?null:a.stateNode},injectIntoDevTools:function(a){var c=a.findFiberByHostInstance;return Ce(B({},\na,{findHostInstanceByFiber:function(a){return b(a)},findFiberByHostInstance:function(a){return c?c(a):null}}))}}}var mf=Object.freeze({default:lf}),nf=mf&&lf||mf,of=nf[\"default\"]?nf[\"default\"]:nf;function pf(a,b,c){var d=3=yf-a)if(-1!==wf&&wf<=\na)Bf.didTimeout=!0;else{xf||(xf=!0,requestAnimationFrame(Df));return}else Bf.didTimeout=!1;wf=-1;a=uf;uf=null;null!==a&&a(Bf)}},!1);var Df=function(a){xf=!1;var b=a-yf+Af;bb&&(b=8),Af=bc||d.hasOverloadedBooleanValue&&!1===c?Jf(a,b):d.mustUseProperty?a[d.propertyName]=c:(b=d.attributeName,(e=d.attributeNamespace)?a.setAttributeNS(e,b,\"\"+c):d.hasBooleanValue||d.hasOverloadedBooleanValue&&!0===c?a.setAttribute(b,\"\"):a.setAttribute(b,\"\"+c))}else Kf(a,b,va(b,c)?c:null)}\nfunction Kf(a,b,c){Hf(b)&&(null==c?a.removeAttribute(b):a.setAttribute(b,\"\"+c))}function Jf(a,b){var c=wa(b);c?(b=c.mutationMethod)?b(a,void 0):c.mustUseProperty?a[c.propertyName]=c.hasBooleanValue?!1:\"\":a.removeAttribute(c.attributeName):a.removeAttribute(b)}\nfunction Lf(a,b){var c=b.value,d=b.checked;return B({type:void 0,step:void 0,min:void 0,max:void 0},b,{defaultChecked:void 0,defaultValue:void 0,value:null!=c?c:a._wrapperState.initialValue,checked:null!=d?d:a._wrapperState.initialChecked})}function Mf(a,b){var c=b.defaultValue;a._wrapperState={initialChecked:null!=b.checked?b.checked:b.defaultChecked,initialValue:null!=b.value?b.value:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}\nfunction Nf(a,b){b=b.checked;null!=b&&If(a,\"checked\",b)}function Of(a,b){Nf(a,b);var c=b.value;if(null!=c)if(0===c&&\"\"===a.value)a.value=\"0\";else if(\"number\"===b.type){if(b=parseFloat(a.value)||0,c!=b||c==b&&a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else null==b.value&&null!=b.defaultValue&&a.defaultValue!==\"\"+b.defaultValue&&(a.defaultValue=\"\"+b.defaultValue),null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction Pf(a,b){switch(b.type){case \"submit\":case \"reset\":break;case \"color\":case \"date\":case \"datetime\":case \"datetime-local\":case \"month\":case \"time\":case \"week\":a.value=\"\";a.value=a.defaultValue;break;default:a.value=a.value}b=a.name;\"\"!==b&&(a.name=\"\");a.defaultChecked=!a.defaultChecked;a.defaultChecked=!a.defaultChecked;\"\"!==b&&(a.name=b)}function Qf(a){var b=\"\";aa.Children.forEach(a,function(a){null==a||\"string\"!==typeof a&&\"number\"!==typeof a||(b+=a)});return b}\nfunction Rf(a,b){a=B({children:void 0},b);if(b=Qf(b.children))a.children=b;return a}function Sf(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=b.length?void 0:E(\"93\"),b=b[0]),c=\"\"+b),null==c&&(c=\"\"));a._wrapperState={initialValue:\"\"+c}}\nfunction Wf(a,b){var c=b.value;null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&(a.defaultValue=c));null!=b.defaultValue&&(a.defaultValue=b.defaultValue)}function Xf(a){var b=a.textContent;b===a._wrapperState.initialValue&&(a.value=b)}var Yf={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Zf(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function $f(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Zf(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar ag=void 0,bg=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Yf.svg||\"innerHTML\"in a)a.innerHTML=b;else{ag=ag||document.createElement(\"div\");ag.innerHTML=\"\\x3csvg\\x3e\"+b+\"\\x3c/svg\\x3e\";for(b=ag.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction cg(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar dg={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,\nstopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},eg=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(dg).forEach(function(a){eg.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);dg[b]=dg[a]})});\nfunction fg(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\");var e=c;var f=b[c];e=null==f||\"boolean\"===typeof f||\"\"===f?\"\":d||\"number\"!==typeof f||0===f||dg.hasOwnProperty(e)&&dg[e]?(\"\"+f).trim():f+\"px\";\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var gg=B({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction hg(a,b,c){b&&(gg[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?E(\"137\",a,c()):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?E(\"60\"):void 0,\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML?void 0:E(\"61\")),null!=b.style&&\"object\"!==typeof b.style?E(\"62\",c()):void 0)}\nfunction ig(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var jg=Yf.html,kg=C.thatReturns(\"\");\nfunction lg(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Hd(a);b=Sa[b];for(var d=0;d\nd&&(e=d,d=a,a=e);e=Jd(c,a);var f=Jd(c,d);if(e&&f&&(1!==b.rangeCount||b.anchorNode!==e.node||b.anchorOffset!==e.offset||b.focusNode!==f.node||b.focusOffset!==f.offset)){var g=document.createRange();g.setStart(e.node,e.offset);b.removeAllRanges();a>d?(b.addRange(g),b.extend(f.node,f.offset)):(g.setEnd(f.node,f.offset),b.addRange(g))}}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});ia(c);for(c=0;c\n
\n

Welcome to React

\n
\n

\n To get started, edit src/App.js and save to reload.\n

\n
\n );\n }\n}\n\nwindow.hitBreakpoint = function breakpoint() {\n stepInTest();\n stepOverTest();\n stepOutTest();\n console.log('hitting a breakpoint');\n return;\n}\n\nexport default App;\n\n\n\n// WEBPACK FOOTER //\n// ./src/App.js","// depth: 3, width: 12\n// 2586 functions, 182225 characters generated\n\nfunction f0_0_0_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_0_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_0_2(){\n return Math.random()\n}\n\nfunction f0_0_0_3(){\n return Math.random()\n}\n\nfunction f0_0_0_4(){\n return isNaN(undefined)\n}\n\nfunction f0_0_0_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_0_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_0_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_0_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_0_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_0_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_0_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_0(){\n f0_0_0_0();\n f0_0_0_1();\n f0_0_0_2();\n f0_0_0_3();\n f0_0_0_4();\n f0_0_0_5();\n f0_0_0_6();\n f0_0_0_7();\n f0_0_0_8();\n f0_0_0_9();\n f0_0_0_10();\n f0_0_0_11();\n\n}\n\nfunction f0_0_1_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_1_1(){\n return Math.random()\n}\n\nfunction f0_0_1_2(){\n return Math.random()\n}\n\nfunction f0_0_1_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_1_4(){\n return Math.random()\n}\n\nfunction f0_0_1_5(){\n return isNaN(undefined)\n}\n\nfunction f0_0_1_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_1_7(){\n return isNaN(undefined)\n}\n\nfunction f0_0_1_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_1_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_1_10(){\n return Math.random()\n}\n\nfunction f0_0_1_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_1(){\n f0_0_1_0();\n f0_0_1_1();\n f0_0_1_2();\n f0_0_1_3();\n f0_0_1_4();\n f0_0_1_5();\n f0_0_1_6();\n f0_0_1_7();\n f0_0_1_8();\n f0_0_1_9();\n f0_0_1_10();\n f0_0_1_11();\n\n}\n\nfunction f0_0_2_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_2_1(){\n return isNaN(undefined)\n}\n\nfunction f0_0_2_2(){\n return isNaN(undefined)\n}\n\nfunction f0_0_2_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_2_4(){\n return Math.random()\n}\n\nfunction f0_0_2_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_2_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_2_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_2_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_2_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_2_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_2_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_2(){\n f0_0_2_0();\n f0_0_2_1();\n f0_0_2_2();\n f0_0_2_3();\n f0_0_2_4();\n f0_0_2_5();\n f0_0_2_6();\n f0_0_2_7();\n f0_0_2_8();\n f0_0_2_9();\n f0_0_2_10();\n f0_0_2_11();\n\n}\n\nfunction f0_0_3_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_3_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_3_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_3_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_3_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_3_5(){\n return isNaN(undefined)\n}\n\nfunction f0_0_3_6(){\n return isNaN(undefined)\n}\n\nfunction f0_0_3_7(){\n return isNaN(undefined)\n}\n\nfunction f0_0_3_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_3_9(){\n return Math.random()\n}\n\nfunction f0_0_3_10(){\n return isNaN(undefined)\n}\n\nfunction f0_0_3_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_3(){\n f0_0_3_0();\n f0_0_3_1();\n f0_0_3_2();\n f0_0_3_3();\n f0_0_3_4();\n f0_0_3_5();\n f0_0_3_6();\n f0_0_3_7();\n f0_0_3_8();\n f0_0_3_9();\n f0_0_3_10();\n f0_0_3_11();\n\n}\n\nfunction f0_0_4_0(){\n return isNaN(undefined)\n}\n\nfunction f0_0_4_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_4_2(){\n return Math.random()\n}\n\nfunction f0_0_4_3(){\n return isNaN(undefined)\n}\n\nfunction f0_0_4_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_4_5(){\n return isNaN(undefined)\n}\n\nfunction f0_0_4_6(){\n return isNaN(undefined)\n}\n\nfunction f0_0_4_7(){\n return isNaN(undefined)\n}\n\nfunction f0_0_4_8(){\n return isNaN(undefined)\n}\n\nfunction f0_0_4_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_4_10(){\n return Math.random()\n}\n\nfunction f0_0_4_11(){\n return isNaN(undefined)\n}\n\nfunction f0_0_4(){\n f0_0_4_0();\n f0_0_4_1();\n f0_0_4_2();\n f0_0_4_3();\n f0_0_4_4();\n f0_0_4_5();\n f0_0_4_6();\n f0_0_4_7();\n f0_0_4_8();\n f0_0_4_9();\n f0_0_4_10();\n f0_0_4_11();\n\n}\n\nfunction f0_0_5_0(){\n return Math.random()\n}\n\nfunction f0_0_5_1(){\n return Math.random()\n}\n\nfunction f0_0_5_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_5_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_5_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_5_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_5_6(){\n return Math.random()\n}\n\nfunction f0_0_5_7(){\n return isNaN(undefined)\n}\n\nfunction f0_0_5_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_5_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_5_10(){\n return isNaN(undefined)\n}\n\nfunction f0_0_5_11(){\n return Math.random()\n}\n\nfunction f0_0_5(){\n f0_0_5_0();\n f0_0_5_1();\n f0_0_5_2();\n f0_0_5_3();\n f0_0_5_4();\n f0_0_5_5();\n f0_0_5_6();\n f0_0_5_7();\n f0_0_5_8();\n f0_0_5_9();\n f0_0_5_10();\n f0_0_5_11();\n\n}\n\nfunction f0_0_6_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_6_1(){\n return Math.random()\n}\n\nfunction f0_0_6_2(){\n return isNaN(undefined)\n}\n\nfunction f0_0_6_3(){\n return isNaN(undefined)\n}\n\nfunction f0_0_6_4(){\n return isNaN(undefined)\n}\n\nfunction f0_0_6_5(){\n return Math.random()\n}\n\nfunction f0_0_6_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_6_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_6_8(){\n return Math.random()\n}\n\nfunction f0_0_6_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_6_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_6_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_6(){\n f0_0_6_0();\n f0_0_6_1();\n f0_0_6_2();\n f0_0_6_3();\n f0_0_6_4();\n f0_0_6_5();\n f0_0_6_6();\n f0_0_6_7();\n f0_0_6_8();\n f0_0_6_9();\n f0_0_6_10();\n f0_0_6_11();\n\n}\n\nfunction f0_0_7_0(){\n return isNaN(undefined)\n}\n\nfunction f0_0_7_1(){\n return Math.random()\n}\n\nfunction f0_0_7_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_7_3(){\n return Math.random()\n}\n\nfunction f0_0_7_4(){\n return Math.random()\n}\n\nfunction f0_0_7_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_7_6(){\n return Math.random()\n}\n\nfunction f0_0_7_7(){\n return Math.random()\n}\n\nfunction f0_0_7_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_7_9(){\n return isNaN(undefined)\n}\n\nfunction f0_0_7_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_7_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_7(){\n f0_0_7_0();\n f0_0_7_1();\n f0_0_7_2();\n f0_0_7_3();\n f0_0_7_4();\n f0_0_7_5();\n f0_0_7_6();\n f0_0_7_7();\n f0_0_7_8();\n f0_0_7_9();\n f0_0_7_10();\n f0_0_7_11();\n\n}\n\nfunction f0_0_8_0(){\n return Math.random()\n}\n\nfunction f0_0_8_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_8_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_8_3(){\n return Math.random()\n}\n\nfunction f0_0_8_4(){\n return isNaN(undefined)\n}\n\nfunction f0_0_8_5(){\n return Math.random()\n}\n\nfunction f0_0_8_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_8_7(){\n return Math.random()\n}\n\nfunction f0_0_8_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_8_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_8_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_8_11(){\n return Math.random()\n}\n\nfunction f0_0_8(){\n f0_0_8_0();\n f0_0_8_1();\n f0_0_8_2();\n f0_0_8_3();\n f0_0_8_4();\n f0_0_8_5();\n f0_0_8_6();\n f0_0_8_7();\n f0_0_8_8();\n f0_0_8_9();\n f0_0_8_10();\n f0_0_8_11();\n\n}\n\nfunction f0_0_9_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_9_1(){\n return Math.random()\n}\n\nfunction f0_0_9_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_9_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_9_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_9_5(){\n return isNaN(undefined)\n}\n\nfunction f0_0_9_6(){\n return Math.random()\n}\n\nfunction f0_0_9_7(){\n return Math.random()\n}\n\nfunction f0_0_9_8(){\n return Math.random()\n}\n\nfunction f0_0_9_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_9_10(){\n return Math.random()\n}\n\nfunction f0_0_9_11(){\n return Math.random()\n}\n\nfunction f0_0_9(){\n f0_0_9_0();\n f0_0_9_1();\n f0_0_9_2();\n f0_0_9_3();\n f0_0_9_4();\n f0_0_9_5();\n f0_0_9_6();\n f0_0_9_7();\n f0_0_9_8();\n f0_0_9_9();\n f0_0_9_10();\n f0_0_9_11();\n\n}\n\nfunction f0_0_10_0(){\n return Math.random()\n}\n\nfunction f0_0_10_1(){\n return isNaN(undefined)\n}\n\nfunction f0_0_10_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_10_3(){\n return Math.random()\n}\n\nfunction f0_0_10_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_10_5(){\n return isNaN(undefined)\n}\n\nfunction f0_0_10_6(){\n return Math.random()\n}\n\nfunction f0_0_10_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_10_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_10_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_10_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_10_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_10(){\n f0_0_10_0();\n f0_0_10_1();\n f0_0_10_2();\n f0_0_10_3();\n f0_0_10_4();\n f0_0_10_5();\n f0_0_10_6();\n f0_0_10_7();\n f0_0_10_8();\n f0_0_10_9();\n f0_0_10_10();\n f0_0_10_11();\n\n}\n\nfunction f0_0_11_0(){\n return Math.random()\n}\n\nfunction f0_0_11_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_11_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_11_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_11_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_11_5(){\n return isNaN(undefined)\n}\n\nfunction f0_0_11_6(){\n return isNaN(undefined)\n}\n\nfunction f0_0_11_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_0_11_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_11_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_0_11_10(){\n return Math.random()\n}\n\nfunction f0_0_11_11(){\n return Math.random()\n}\n\nfunction f0_0_11(){\n f0_0_11_0();\n f0_0_11_1();\n f0_0_11_2();\n f0_0_11_3();\n f0_0_11_4();\n f0_0_11_5();\n f0_0_11_6();\n f0_0_11_7();\n f0_0_11_8();\n f0_0_11_9();\n f0_0_11_10();\n f0_0_11_11();\n\n}\n\nfunction f0_0(){\n f0_0_0();\n f0_0_1();\n f0_0_2();\n f0_0_3();\n f0_0_4();\n f0_0_5();\n f0_0_6();\n f0_0_7();\n f0_0_8();\n f0_0_9();\n f0_0_10();\n f0_0_11();\n\n}\n\nfunction f0_1_0_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_0_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_0_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_0_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_0_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_0_5(){\n return Math.random()\n}\n\nfunction f0_1_0_6(){\n return isNaN(undefined)\n}\n\nfunction f0_1_0_7(){\n return Math.random()\n}\n\nfunction f0_1_0_8(){\n return isNaN(undefined)\n}\n\nfunction f0_1_0_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_0_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_0_11(){\n return Math.random()\n}\n\nfunction f0_1_0(){\n f0_1_0_0();\n f0_1_0_1();\n f0_1_0_2();\n f0_1_0_3();\n f0_1_0_4();\n f0_1_0_5();\n f0_1_0_6();\n f0_1_0_7();\n f0_1_0_8();\n f0_1_0_9();\n f0_1_0_10();\n f0_1_0_11();\n\n}\n\nfunction f0_1_1_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_1_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_1_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_1_3(){\n return isNaN(undefined)\n}\n\nfunction f0_1_1_4(){\n return Math.random()\n}\n\nfunction f0_1_1_5(){\n return isNaN(undefined)\n}\n\nfunction f0_1_1_6(){\n return isNaN(undefined)\n}\n\nfunction f0_1_1_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_1_8(){\n return Math.random()\n}\n\nfunction f0_1_1_9(){\n return Math.random()\n}\n\nfunction f0_1_1_10(){\n return Math.random()\n}\n\nfunction f0_1_1_11(){\n return Math.random()\n}\n\nfunction f0_1_1(){\n f0_1_1_0();\n f0_1_1_1();\n f0_1_1_2();\n f0_1_1_3();\n f0_1_1_4();\n f0_1_1_5();\n f0_1_1_6();\n f0_1_1_7();\n f0_1_1_8();\n f0_1_1_9();\n f0_1_1_10();\n f0_1_1_11();\n\n}\n\nfunction f0_1_2_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_2_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_2_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_2_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_2_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_2_5(){\n return Math.random()\n}\n\nfunction f0_1_2_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_2_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_2_8(){\n return isNaN(undefined)\n}\n\nfunction f0_1_2_9(){\n return Math.random()\n}\n\nfunction f0_1_2_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_2_11(){\n return Math.random()\n}\n\nfunction f0_1_2(){\n f0_1_2_0();\n f0_1_2_1();\n f0_1_2_2();\n f0_1_2_3();\n f0_1_2_4();\n f0_1_2_5();\n f0_1_2_6();\n f0_1_2_7();\n f0_1_2_8();\n f0_1_2_9();\n f0_1_2_10();\n f0_1_2_11();\n\n}\n\nfunction f0_1_3_0(){\n return isNaN(undefined)\n}\n\nfunction f0_1_3_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_3_2(){\n return isNaN(undefined)\n}\n\nfunction f0_1_3_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_3_4(){\n return isNaN(undefined)\n}\n\nfunction f0_1_3_5(){\n return Math.random()\n}\n\nfunction f0_1_3_6(){\n return Math.random()\n}\n\nfunction f0_1_3_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_3_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_3_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_3_10(){\n return Math.random()\n}\n\nfunction f0_1_3_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_3(){\n f0_1_3_0();\n f0_1_3_1();\n f0_1_3_2();\n f0_1_3_3();\n f0_1_3_4();\n f0_1_3_5();\n f0_1_3_6();\n f0_1_3_7();\n f0_1_3_8();\n f0_1_3_9();\n f0_1_3_10();\n f0_1_3_11();\n\n}\n\nfunction f0_1_4_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_4_1(){\n return isNaN(undefined)\n}\n\nfunction f0_1_4_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_4_3(){\n return isNaN(undefined)\n}\n\nfunction f0_1_4_4(){\n return isNaN(undefined)\n}\n\nfunction f0_1_4_5(){\n return isNaN(undefined)\n}\n\nfunction f0_1_4_6(){\n return isNaN(undefined)\n}\n\nfunction f0_1_4_7(){\n return Math.random()\n}\n\nfunction f0_1_4_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_4_9(){\n return isNaN(undefined)\n}\n\nfunction f0_1_4_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_4_11(){\n return Math.random()\n}\n\nfunction f0_1_4(){\n f0_1_4_0();\n f0_1_4_1();\n f0_1_4_2();\n f0_1_4_3();\n f0_1_4_4();\n f0_1_4_5();\n f0_1_4_6();\n f0_1_4_7();\n f0_1_4_8();\n f0_1_4_9();\n f0_1_4_10();\n f0_1_4_11();\n\n}\n\nfunction f0_1_5_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_5_1(){\n return isNaN(undefined)\n}\n\nfunction f0_1_5_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_5_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_5_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_5_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_5_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_5_7(){\n return isNaN(undefined)\n}\n\nfunction f0_1_5_8(){\n return isNaN(undefined)\n}\n\nfunction f0_1_5_9(){\n return Math.random()\n}\n\nfunction f0_1_5_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_5_11(){\n return isNaN(undefined)\n}\n\nfunction f0_1_5(){\n f0_1_5_0();\n f0_1_5_1();\n f0_1_5_2();\n f0_1_5_3();\n f0_1_5_4();\n f0_1_5_5();\n f0_1_5_6();\n f0_1_5_7();\n f0_1_5_8();\n f0_1_5_9();\n f0_1_5_10();\n f0_1_5_11();\n\n}\n\nfunction f0_1_6_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_6_1(){\n return isNaN(undefined)\n}\n\nfunction f0_1_6_2(){\n return isNaN(undefined)\n}\n\nfunction f0_1_6_3(){\n return isNaN(undefined)\n}\n\nfunction f0_1_6_4(){\n return isNaN(undefined)\n}\n\nfunction f0_1_6_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_6_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_6_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_6_8(){\n return isNaN(undefined)\n}\n\nfunction f0_1_6_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_6_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_6_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_6(){\n f0_1_6_0();\n f0_1_6_1();\n f0_1_6_2();\n f0_1_6_3();\n f0_1_6_4();\n f0_1_6_5();\n f0_1_6_6();\n f0_1_6_7();\n f0_1_6_8();\n f0_1_6_9();\n f0_1_6_10();\n f0_1_6_11();\n\n}\n\nfunction f0_1_7_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_7_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_7_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_7_3(){\n return Math.random()\n}\n\nfunction f0_1_7_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_7_5(){\n return isNaN(undefined)\n}\n\nfunction f0_1_7_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_7_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_7_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_7_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_7_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_7_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_7(){\n f0_1_7_0();\n f0_1_7_1();\n f0_1_7_2();\n f0_1_7_3();\n f0_1_7_4();\n f0_1_7_5();\n f0_1_7_6();\n f0_1_7_7();\n f0_1_7_8();\n f0_1_7_9();\n f0_1_7_10();\n f0_1_7_11();\n\n}\nfunction f0_1_8_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_8_1(){\n return isNaN(undefined)\n}\n\nfunction f0_1_8_2(){\n return Math.random()\n}\n\nfunction f0_1_8_3(){\n return isNaN(undefined)\n}\n\nfunction f0_1_8_4(){\n return isNaN(undefined)\n}\n\nfunction f0_1_8_5(){\n return isNaN(undefined)\n}\n\nfunction f0_1_8_6(){\n return isNaN(undefined)\n}\n\nfunction f0_1_8_7(){\n return Math.random()\n}\n\nfunction f0_1_8_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_8_9(){\n return isNaN(undefined)\n}\n\nfunction f0_1_8_10(){\n return isNaN(undefined)\n}\n\nfunction f0_1_8_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_8(){\n f0_1_8_0();\n f0_1_8_1();\n f0_1_8_2();\n f0_1_8_3();\n f0_1_8_4();\n f0_1_8_5();\n f0_1_8_6();\n f0_1_8_7();\n f0_1_8_8();\n f0_1_8_9();\n f0_1_8_10();\n f0_1_8_11();\n\n}\n\nfunction f0_1_9_0(){\n return isNaN(undefined)\n}\n\nfunction f0_1_9_1(){\n return isNaN(undefined)\n}\n\nfunction f0_1_9_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_9_3(){\n return isNaN(undefined)\n}\n\nfunction f0_1_9_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_9_5(){\n return isNaN(undefined)\n}\n\nfunction f0_1_9_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_9_7(){\n return Math.random()\n}\n\nfunction f0_1_9_8(){\n return isNaN(undefined)\n}\n\nfunction f0_1_9_9(){\n return Math.random()\n}\n\nfunction f0_1_9_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_9_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_9(){\n f0_1_9_0();\n f0_1_9_1();\n f0_1_9_2();\n f0_1_9_3();\n f0_1_9_4();\n f0_1_9_5();\n f0_1_9_6();\n f0_1_9_7();\n f0_1_9_8();\n f0_1_9_9();\n f0_1_9_10();\n f0_1_9_11();\n\n}\n\nfunction f0_1_10_0(){\n return isNaN(undefined)\n}\n\nfunction f0_1_10_1(){\n return isNaN(undefined)\n}\n\nfunction f0_1_10_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_10_3(){\n return Math.random()\n}\n\nfunction f0_1_10_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_10_5(){\n return Math.random()\n}\n\nfunction f0_1_10_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_10_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_10_8(){\n return isNaN(undefined)\n}\n\nfunction f0_1_10_9(){\n return isNaN(undefined)\n}\n\nfunction f0_1_10_10(){\n return isNaN(undefined)\n}\n\nfunction f0_1_10_11(){\n return isNaN(undefined)\n}\n\nfunction f0_1_10(){\n f0_1_10_0();\n f0_1_10_1();\n f0_1_10_2();\n f0_1_10_3();\n f0_1_10_4();\n f0_1_10_5();\n f0_1_10_6();\n f0_1_10_7();\n f0_1_10_8();\n f0_1_10_9();\n f0_1_10_10();\n f0_1_10_11();\n\n}\n\nfunction f0_1_11_0(){\n return Math.random()\n}\n\nfunction f0_1_11_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_11_2(){\n return Math.random()\n}\n\nfunction f0_1_11_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_11_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_11_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_11_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_11_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_11_8(){\n return Math.random()\n}\n\nfunction f0_1_11_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_1_11_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_11_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_1_11(){\n f0_1_11_0();\n f0_1_11_1();\n f0_1_11_2();\n f0_1_11_3();\n f0_1_11_4();\n f0_1_11_5();\n f0_1_11_6();\n f0_1_11_7();\n f0_1_11_8();\n f0_1_11_9();\n f0_1_11_10();\n f0_1_11_11();\n\n}\n\nfunction f0_1(){\n f0_1_0();\n f0_1_1();\n f0_1_2();\n f0_1_3();\n f0_1_4();\n f0_1_5();\n f0_1_6();\n f0_1_7();\n f0_1_8();\n f0_1_9();\n f0_1_10();\n f0_1_11();\n\n}\n\nfunction f0_2_0_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_0_1(){\n return Math.random()\n}\n\nfunction f0_2_0_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_0_3(){\n return isNaN(undefined)\n}\n\nfunction f0_2_0_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_0_5(){\n return Math.random()\n}\n\nfunction f0_2_0_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_0_7(){\n return Math.random()\n}\n\nfunction f0_2_0_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_0_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_0_10(){\n return isNaN(undefined)\n}\n\nfunction f0_2_0_11(){\n return isNaN(undefined)\n}\n\nfunction f0_2_0(){\n f0_2_0_0();\n f0_2_0_1();\n f0_2_0_2();\n f0_2_0_3();\n f0_2_0_4();\n f0_2_0_5();\n f0_2_0_6();\n f0_2_0_7();\n f0_2_0_8();\n f0_2_0_9();\n f0_2_0_10();\n f0_2_0_11();\n\n}\n\nfunction f0_2_1_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_1_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_1_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_1_3(){\n return isNaN(undefined)\n}\n\nfunction f0_2_1_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_1_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_1_6(){\n return isNaN(undefined)\n}\n\nfunction f0_2_1_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_1_8(){\n return isNaN(undefined)\n}\n\nfunction f0_2_1_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_1_10(){\n return isNaN(undefined)\n}\n\nfunction f0_2_1_11(){\n return isNaN(undefined)\n}\n\nfunction f0_2_1(){\n f0_2_1_0();\n f0_2_1_1();\n f0_2_1_2();\n f0_2_1_3();\n f0_2_1_4();\n f0_2_1_5();\n f0_2_1_6();\n f0_2_1_7();\n f0_2_1_8();\n f0_2_1_9();\n f0_2_1_10();\n f0_2_1_11();\n\n}\n\nfunction f0_2_2_0(){\n return Math.random()\n}\n\nfunction f0_2_2_1(){\n return Math.random()\n}\n\nfunction f0_2_2_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_2_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_2_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_2_5(){\n return Math.random()\n}\n\nfunction f0_2_2_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_2_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_2_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_2_9(){\n return Math.random()\n}\n\nfunction f0_2_2_10(){\n return Math.random()\n}\n\nfunction f0_2_2_11(){\n return isNaN(undefined)\n}\n\nfunction f0_2_2(){\n f0_2_2_0();\n f0_2_2_1();\n f0_2_2_2();\n f0_2_2_3();\n f0_2_2_4();\n f0_2_2_5();\n f0_2_2_6();\n f0_2_2_7();\n f0_2_2_8();\n f0_2_2_9();\n f0_2_2_10();\n f0_2_2_11();\n\n}\n\nfunction f0_2_3_0(){\n return Math.random()\n}\n\nfunction f0_2_3_1(){\n return Math.random()\n}\n\nfunction f0_2_3_2(){\n return Math.random()\n}\n\nfunction f0_2_3_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_3_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_3_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_3_6(){\n return isNaN(undefined)\n}\n\nfunction f0_2_3_7(){\n return isNaN(undefined)\n}\n\nfunction f0_2_3_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_3_9(){\n return Math.random()\n}\n\nfunction f0_2_3_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_3_11(){\n return isNaN(undefined)\n}\n\nfunction f0_2_3(){\n f0_2_3_0();\n f0_2_3_1();\n f0_2_3_2();\n f0_2_3_3();\n f0_2_3_4();\n f0_2_3_5();\n f0_2_3_6();\n f0_2_3_7();\n f0_2_3_8();\n f0_2_3_9();\n f0_2_3_10();\n f0_2_3_11();\n}\n\nfunction f0_2_4_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_4_1(){\n return Math.random()\n}\n\nfunction f0_2_4_2(){\n return Math.random()\n}\n\nfunction f0_2_4_3(){\n return isNaN(undefined)\n}\n\nfunction f0_2_4_4(){\n return isNaN(undefined)\n}\n\nfunction f0_2_4_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_4_6(){\n return Math.random()\n}\n\nfunction f0_2_4_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_4_8(){\n return Math.random()\n}\n\nfunction f0_2_4_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_4_10(){\n return isNaN(undefined)\n}\n\nfunction f0_2_4_11(){\n return isNaN(undefined)\n}\n\nfunction f0_2_4(){\n f0_2_4_0();\n f0_2_4_1();\n f0_2_4_2();\n f0_2_4_3();\n f0_2_4_4();\n f0_2_4_5();\n f0_2_4_6();\n f0_2_4_7();\n f0_2_4_8();\n f0_2_4_9();\n f0_2_4_10();\n f0_2_4_11();\n}\n\nfunction f0_2_5_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_5_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_5_2(){\n return Math.random()\n}\n\nfunction f0_2_5_3(){\n return Math.random()\n}\n\nfunction f0_2_5_4(){\n return isNaN(undefined)\n}\n\nfunction f0_2_5_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_5_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_5_7(){\n return isNaN(undefined)\n}\n\nfunction f0_2_5_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_5_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_5_10(){\n return Math.random()\n}\n\nfunction f0_2_5_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_5(){\n f0_2_5_0();\n f0_2_5_1();\n f0_2_5_2();\n f0_2_5_3();\n f0_2_5_4();\n f0_2_5_5();\n f0_2_5_6();\n f0_2_5_7();\n f0_2_5_8();\n f0_2_5_9();\n f0_2_5_10();\n f0_2_5_11();\n}\n\nfunction f0_2_6_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_6_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_6_2(){\n return Math.random()\n}\n\nfunction f0_2_6_3(){\n return Math.random()\n}\n\nfunction f0_2_6_4(){\n return Math.random()\n}\n\nfunction f0_2_6_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_6_6(){\n return Math.random()\n}\n\nfunction f0_2_6_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_6_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_6_9(){\n return Math.random()\n}\n\nfunction f0_2_6_10(){\n return isNaN(undefined)\n}\n\nfunction f0_2_6_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_6(){\n f0_2_6_0();\n f0_2_6_1();\n f0_2_6_2();\n f0_2_6_3();\n f0_2_6_4();\n f0_2_6_5();\n f0_2_6_6();\n f0_2_6_7();\n f0_2_6_8();\n f0_2_6_9();\n f0_2_6_10();\n f0_2_6_11();\n}\n\nfunction f0_2_7_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_7_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_7_2(){\n return isNaN(undefined)\n}\n\nfunction f0_2_7_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_7_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_7_5(){\n return isNaN(undefined)\n}\n\nfunction f0_2_7_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_7_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_7_8(){\n return isNaN(undefined)\n}\n\nfunction f0_2_7_9(){\n return Math.random()\n}\n\nfunction f0_2_7_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_7_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_7(){\n f0_2_7_0();\n f0_2_7_1();\n f0_2_7_2();\n f0_2_7_3();\n f0_2_7_4();\n f0_2_7_5();\n f0_2_7_6();\n f0_2_7_7();\n f0_2_7_8();\n f0_2_7_9();\n f0_2_7_10();\n f0_2_7_11();\n}\n\nfunction f0_2_8_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_8_1(){\n return Math.random()\n}\n\nfunction f0_2_8_2(){\n return isNaN(undefined)\n}\n\nfunction f0_2_8_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_8_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_8_5(){\n return isNaN(undefined)\n}\n\nfunction f0_2_8_6(){\n return Math.random()\n}\n\nfunction f0_2_8_7(){\n return isNaN(undefined)\n}\n\nfunction f0_2_8_8(){\n return Math.random()\n}\n\nfunction f0_2_8_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_8_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_8_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_8(){\n f0_2_8_0();\n f0_2_8_1();\n f0_2_8_2();\n f0_2_8_3();\n f0_2_8_4();\n f0_2_8_5();\n f0_2_8_6();\n f0_2_8_7();\n f0_2_8_8();\n f0_2_8_9();\n f0_2_8_10();\n f0_2_8_11();\n}\n\nfunction f0_2_9_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_9_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_9_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_9_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_9_4(){\n return isNaN(undefined)\n}\n\nfunction f0_2_9_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_9_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_9_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_9_8(){\n return Math.random()\n}\n\nfunction f0_2_9_9(){\n return Math.random()\n}\n\nfunction f0_2_9_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_9_11(){\n return isNaN(undefined)\n}\n\nfunction f0_2_9(){\n f0_2_9_0();\n f0_2_9_1();\n f0_2_9_2();\n f0_2_9_3();\n f0_2_9_4();\n f0_2_9_5();\n f0_2_9_6();\n f0_2_9_7();\n f0_2_9_8();\n f0_2_9_9();\n f0_2_9_10();\n f0_2_9_11();\n}\n\nfunction f0_2_10_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_10_1(){\n return Math.random()\n}\n\nfunction f0_2_10_2(){\n return isNaN(undefined)\n}\n\nfunction f0_2_10_3(){\n return isNaN(undefined)\n}\n\nfunction f0_2_10_4(){\n return isNaN(undefined)\n}\n\nfunction f0_2_10_5(){\n return isNaN(undefined)\n}\n\nfunction f0_2_10_6(){\n return isNaN(undefined)\n}\n\nfunction f0_2_10_7(){\n return Math.random()\n}\n\nfunction f0_2_10_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_10_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_10_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_10_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_10(){\n f0_2_10_0();\n f0_2_10_1();\n f0_2_10_2();\n f0_2_10_3();\n f0_2_10_4();\n f0_2_10_5();\n f0_2_10_6();\n f0_2_10_7();\n f0_2_10_8();\n f0_2_10_9();\n f0_2_10_10();\n f0_2_10_11();\n}\n\nfunction f0_2_11_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_11_1(){\n return Math.random()\n}\n\nfunction f0_2_11_2(){\n return Math.random()\n}\n\nfunction f0_2_11_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_11_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_11_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_11_6(){\n return isNaN(undefined)\n}\n\nfunction f0_2_11_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_11_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_2_11_9(){\n return isNaN(undefined)\n}\n\nfunction f0_2_11_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_2_11_11(){\n return isNaN(undefined)\n}\n\nfunction f0_2_11(){\n f0_2_11_0();\n f0_2_11_1();\n f0_2_11_2();\n f0_2_11_3();\n f0_2_11_4();\n f0_2_11_5();\n f0_2_11_6();\n f0_2_11_7();\n f0_2_11_8();\n f0_2_11_9();\n f0_2_11_10();\n f0_2_11_11();\n}\n\nfunction f0_2(){\n f0_2_0();\n f0_2_1();\n f0_2_2();\n f0_2_3();\n f0_2_4();\n f0_2_5();\n f0_2_6();\n f0_2_7();\n f0_2_8();\n f0_2_9();\n f0_2_10();\n f0_2_11();\n\n}\n\nfunction f0_3_0_0(){\n return Math.random()\n}\n\nfunction f0_3_0_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_0_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_0_3(){\n return isNaN(undefined)\n}\n\nfunction f0_3_0_4(){\n return Math.random()\n}\n\nfunction f0_3_0_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_0_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_0_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_0_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_0_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_0_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_0_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_0(){\n f0_3_0_0();\n f0_3_0_1();\n f0_3_0_2();\n f0_3_0_3();\n f0_3_0_4();\n f0_3_0_5();\n f0_3_0_6();\n f0_3_0_7();\n f0_3_0_8();\n f0_3_0_9();\n f0_3_0_10();\n f0_3_0_11();\n}\n\nfunction f0_3_1_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_1_1(){\n return isNaN(undefined)\n}\n\nfunction f0_3_1_2(){\n return Math.random()\n}\n\nfunction f0_3_1_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_1_4(){\n return isNaN(undefined)\n}\n\nfunction f0_3_1_5(){\n return Math.random()\n}\n\nfunction f0_3_1_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_1_7(){\n return isNaN(undefined)\n}\n\nfunction f0_3_1_8(){\n return Math.random()\n}\n\nfunction f0_3_1_9(){\n return Math.random()\n}\n\nfunction f0_3_1_10(){\n return Math.random()\n}\n\nfunction f0_3_1_11(){\n return Math.random()\n}\n\nfunction f0_3_1(){\n f0_3_1_0();\n f0_3_1_1();\n f0_3_1_2();\n f0_3_1_3();\n f0_3_1_4();\n f0_3_1_5();\n f0_3_1_6();\n f0_3_1_7();\n f0_3_1_8();\n f0_3_1_9();\n f0_3_1_10();\n f0_3_1_11();\n}\n\nfunction f0_3_2_0(){\n return Math.random()\n}\n\nfunction f0_3_2_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_2_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_2_3(){\n return isNaN(undefined)\n}\n\nfunction f0_3_2_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_2_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_2_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_2_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_2_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_2_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_2_10(){\n return isNaN(undefined)\n}\n\nfunction f0_3_2_11(){\n return Math.random()\n}\n\nfunction f0_3_2(){\n f0_3_2_0();\n f0_3_2_1();\n f0_3_2_2();\n f0_3_2_3();\n f0_3_2_4();\n f0_3_2_5();\n f0_3_2_6();\n f0_3_2_7();\n f0_3_2_8();\n f0_3_2_9();\n f0_3_2_10();\n f0_3_2_11();\n}\n\nfunction f0_3_3_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_3_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_3_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_3_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_3_4(){\n return isNaN(undefined)\n}\n\nfunction f0_3_3_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_3_6(){\n return Math.random()\n}\n\nfunction f0_3_3_7(){\n return isNaN(undefined)\n}\n\nfunction f0_3_3_8(){\n return isNaN(undefined)\n}\n\nfunction f0_3_3_9(){\n return isNaN(undefined)\n}\n\nfunction f0_3_3_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_3_11(){\n return Math.random()\n}\n\nfunction f0_3_3(){\n f0_3_3_0();\n f0_3_3_1();\n f0_3_3_2();\n f0_3_3_3();\n f0_3_3_4();\n f0_3_3_5();\n f0_3_3_6();\n f0_3_3_7();\n f0_3_3_8();\n f0_3_3_9();\n f0_3_3_10();\n f0_3_3_11();\n}\n\nfunction f0_3_4_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_4_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_4_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_4_3(){\n return Math.random()\n}\n\nfunction f0_3_4_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_4_5(){\n return Math.random()\n}\n\nfunction f0_3_4_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_4_7(){\n return Math.random()\n}\n\nfunction f0_3_4_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_4_9(){\n return Math.random()\n}\n\nfunction f0_3_4_10(){\n return Math.random()\n}\n\nfunction f0_3_4_11(){\n return Math.random()\n}\n\nfunction f0_3_4(){\n f0_3_4_0();\n f0_3_4_1();\n f0_3_4_2();\n f0_3_4_3();\n f0_3_4_4();\n f0_3_4_5();\n f0_3_4_6();\n f0_3_4_7();\n f0_3_4_8();\n f0_3_4_9();\n f0_3_4_10();\n f0_3_4_11();\n}\n\nfunction f0_3_5_0(){\n return Math.random()\n}\n\nfunction f0_3_5_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_5_2(){\n return isNaN(undefined)\n}\n\nfunction f0_3_5_3(){\n return isNaN(undefined)\n}\n\nfunction f0_3_5_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_5_5(){\n return Math.random()\n}\n\nfunction f0_3_5_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_5_7(){\n return Math.random()\n}\n\nfunction f0_3_5_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_5_9(){\n return isNaN(undefined)\n}\n\nfunction f0_3_5_10(){\n return Math.random()\n}\n\nfunction f0_3_5_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_5(){\n f0_3_5_0();\n f0_3_5_1();\n f0_3_5_2();\n f0_3_5_3();\n f0_3_5_4();\n f0_3_5_5();\n f0_3_5_6();\n f0_3_5_7();\n f0_3_5_8();\n f0_3_5_9();\n f0_3_5_10();\n f0_3_5_11();\n}\n\nfunction f0_3_6_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_6_1(){\n return isNaN(undefined)\n}\n\nfunction f0_3_6_2(){\n return Math.random()\n}\n\nfunction f0_3_6_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_6_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_6_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_6_6(){\n return isNaN(undefined)\n}\n\nfunction f0_3_6_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_6_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_6_9(){\n return isNaN(undefined)\n}\n\nfunction f0_3_6_10(){\n return Math.random()\n}\n\nfunction f0_3_6_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_6(){\n f0_3_6_0();\n f0_3_6_1();\n f0_3_6_2();\n f0_3_6_3();\n f0_3_6_4();\n f0_3_6_5();\n f0_3_6_6();\n f0_3_6_7();\n f0_3_6_8();\n f0_3_6_9();\n f0_3_6_10();\n f0_3_6_11();\n}\n\nfunction f0_3_7_0(){\n return isNaN(undefined)\n}\n\nfunction f0_3_7_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_7_2(){\n return Math.random()\n}\n\nfunction f0_3_7_3(){\n return isNaN(undefined)\n}\n\nfunction f0_3_7_4(){\n return isNaN(undefined)\n}\n\nfunction f0_3_7_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_7_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_7_7(){\n return isNaN(undefined)\n}\n\nfunction f0_3_7_8(){\n return Math.random()\n}\n\nfunction f0_3_7_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_7_10(){\n return isNaN(undefined)\n}\n\nfunction f0_3_7_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_7(){\n f0_3_7_0();\n f0_3_7_1();\n f0_3_7_2();\n f0_3_7_3();\n f0_3_7_4();\n f0_3_7_5();\n f0_3_7_6();\n f0_3_7_7();\n f0_3_7_8();\n f0_3_7_9();\n f0_3_7_10();\n f0_3_7_11();\n}\n\nfunction f0_3_8_0(){\n return Math.random()\n}\n\nfunction f0_3_8_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_8_2(){\n return isNaN(undefined)\n}\n\nfunction f0_3_8_3(){\n return Math.random()\n}\n\nfunction f0_3_8_4(){\n return Math.random()\n}\n\nfunction f0_3_8_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_8_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_8_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_8_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_8_9(){\n return Math.random()\n}\n\nfunction f0_3_8_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_8_11(){\n return Math.random()\n}\n\nfunction f0_3_8(){\n f0_3_8_0();\n f0_3_8_1();\n f0_3_8_2();\n f0_3_8_3();\n f0_3_8_4();\n f0_3_8_5();\n f0_3_8_6();\n f0_3_8_7();\n f0_3_8_8();\n f0_3_8_9();\n f0_3_8_10();\n f0_3_8_11();\n}\n\nfunction f0_3_9_0(){\n return isNaN(undefined)\n}\n\nfunction f0_3_9_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_9_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_9_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_9_4(){\n return isNaN(undefined)\n}\n\nfunction f0_3_9_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_9_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_9_7(){\n return Math.random()\n}\n\nfunction f0_3_9_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_9_9(){\n return Math.random()\n}\n\nfunction f0_3_9_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_9_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_9(){\n f0_3_9_0();\n f0_3_9_1();\n f0_3_9_2();\n f0_3_9_3();\n f0_3_9_4();\n f0_3_9_5();\n f0_3_9_6();\n f0_3_9_7();\n f0_3_9_8();\n f0_3_9_9();\n f0_3_9_10();\n f0_3_9_11();\n}\n\nfunction f0_3_10_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_10_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_10_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_10_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_10_4(){\n return isNaN(undefined)\n}\n\nfunction f0_3_10_5(){\n return Math.random()\n}\n\nfunction f0_3_10_6(){\n return isNaN(undefined)\n}\n\nfunction f0_3_10_7(){\n return isNaN(undefined)\n}\n\nfunction f0_3_10_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_10_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_10_10(){\n return isNaN(undefined)\n}\n\nfunction f0_3_10_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_10(){\n f0_3_10_0();\n f0_3_10_1();\n f0_3_10_2();\n f0_3_10_3();\n f0_3_10_4();\n f0_3_10_5();\n f0_3_10_6();\n f0_3_10_7();\n f0_3_10_8();\n f0_3_10_9();\n f0_3_10_10();\n f0_3_10_11();\n}\n\nfunction f0_3_11_0(){\n return isNaN(undefined)\n}\n\nfunction f0_3_11_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_11_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_11_3(){\n return isNaN(undefined)\n}\n\nfunction f0_3_11_4(){\n return isNaN(undefined)\n}\n\nfunction f0_3_11_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_11_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_11_7(){\n return Math.random()\n}\n\nfunction f0_3_11_8(){\n return Math.random()\n}\n\nfunction f0_3_11_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_3_11_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_3_11_11(){\n return Math.random()\n}\n\nfunction f0_3_11(){\n f0_3_11_0();\n f0_3_11_1();\n f0_3_11_2();\n f0_3_11_3();\n f0_3_11_4();\n f0_3_11_5();\n f0_3_11_6();\n f0_3_11_7();\n f0_3_11_8();\n f0_3_11_9();\n f0_3_11_10();\n f0_3_11_11();\n}\n\nfunction f0_3(){\n f0_3_0();\n f0_3_1();\n f0_3_2();\n f0_3_3();\n f0_3_4();\n f0_3_5();\n f0_3_6();\n f0_3_7();\n f0_3_8();\n f0_3_9();\n f0_3_10();\n f0_3_11();\n\n}\n\nfunction f0_4_0_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_0_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_0_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_0_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_0_4(){\n return Math.random()\n}\n\nfunction f0_4_0_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_0_6(){\n return isNaN(undefined)\n}\n\nfunction f0_4_0_7(){\n return isNaN(undefined)\n}\n\nfunction f0_4_0_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_0_9(){\n return Math.random()\n}\n\nfunction f0_4_0_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_0_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_0(){\n f0_4_0_0();\n f0_4_0_1();\n f0_4_0_2();\n f0_4_0_3();\n f0_4_0_4();\n f0_4_0_5();\n f0_4_0_6();\n f0_4_0_7();\n f0_4_0_8();\n f0_4_0_9();\n f0_4_0_10();\n f0_4_0_11();\n}\n\nfunction f0_4_1_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_1_1(){\n return Math.random()\n}\n\nfunction f0_4_1_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_1_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_1_4(){\n return isNaN(undefined)\n}\n\nfunction f0_4_1_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_1_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_1_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_1_8(){\n return isNaN(undefined)\n}\n\nfunction f0_4_1_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_1_10(){\n return isNaN(undefined)\n}\n\nfunction f0_4_1_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_1(){\n f0_4_1_0();\n f0_4_1_1();\n f0_4_1_2();\n f0_4_1_3();\n f0_4_1_4();\n f0_4_1_5();\n f0_4_1_6();\n f0_4_1_7();\n f0_4_1_8();\n f0_4_1_9();\n f0_4_1_10();\n f0_4_1_11();\n}\n\nfunction f0_4_2_0(){\n return Math.random()\n}\n\nfunction f0_4_2_1(){\n return Math.random()\n}\n\nfunction f0_4_2_2(){\n return isNaN(undefined)\n}\n\nfunction f0_4_2_3(){\n return isNaN(undefined)\n}\n\nfunction f0_4_2_4(){\n return isNaN(undefined)\n}\n\nfunction f0_4_2_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_2_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_2_7(){\n return Math.random()\n}\n\nfunction f0_4_2_8(){\n return Math.random()\n}\n\nfunction f0_4_2_9(){\n return isNaN(undefined)\n}\n\nfunction f0_4_2_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_2_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_2(){\n f0_4_2_0();\n f0_4_2_1();\n f0_4_2_2();\n f0_4_2_3();\n f0_4_2_4();\n f0_4_2_5();\n f0_4_2_6();\n f0_4_2_7();\n f0_4_2_8();\n f0_4_2_9();\n f0_4_2_10();\n f0_4_2_11();\n}\n\nfunction f0_4_3_0(){\n return isNaN(undefined)\n}\n\nfunction f0_4_3_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_3_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_3_3(){\n return isNaN(undefined)\n}\n\nfunction f0_4_3_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_3_5(){\n return isNaN(undefined)\n}\n\nfunction f0_4_3_6(){\n return Math.random()\n}\n\nfunction f0_4_3_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_3_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_3_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_3_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_3_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_3(){\n f0_4_3_0();\n f0_4_3_1();\n f0_4_3_2();\n f0_4_3_3();\n f0_4_3_4();\n f0_4_3_5();\n f0_4_3_6();\n f0_4_3_7();\n f0_4_3_8();\n f0_4_3_9();\n f0_4_3_10();\n f0_4_3_11();\n}\n\nfunction f0_4_4_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_4_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_4_2(){\n return isNaN(undefined)\n}\n\nfunction f0_4_4_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_4_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_4_5(){\n return isNaN(undefined)\n}\n\nfunction f0_4_4_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_4_7(){\n return Math.random()\n}\n\nfunction f0_4_4_8(){\n return isNaN(undefined)\n}\n\nfunction f0_4_4_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_4_10(){\n return isNaN(undefined)\n}\n\nfunction f0_4_4_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_4(){\n f0_4_4_0();\n f0_4_4_1();\n f0_4_4_2();\n f0_4_4_3();\n f0_4_4_4();\n f0_4_4_5();\n f0_4_4_6();\n f0_4_4_7();\n f0_4_4_8();\n f0_4_4_9();\n f0_4_4_10();\n f0_4_4_11();\n}\n\nfunction f0_4_5_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_5_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_5_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_5_3(){\n return isNaN(undefined)\n}\n\nfunction f0_4_5_4(){\n return Math.random()\n}\n\nfunction f0_4_5_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_5_6(){\n return isNaN(undefined)\n}\n\nfunction f0_4_5_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_5_8(){\n return Math.random()\n}\n\nfunction f0_4_5_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_5_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_5_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_5(){\n f0_4_5_0();\n f0_4_5_1();\n f0_4_5_2();\n f0_4_5_3();\n f0_4_5_4();\n f0_4_5_5();\n f0_4_5_6();\n f0_4_5_7();\n f0_4_5_8();\n f0_4_5_9();\n f0_4_5_10();\n f0_4_5_11();\n}\n\nfunction f0_4_6_0(){\n return Math.random()\n}\n\nfunction f0_4_6_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_6_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_6_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_6_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_6_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_6_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_6_7(){\n return Math.random()\n}\n\nfunction f0_4_6_8(){\n return isNaN(undefined)\n}\n\nfunction f0_4_6_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_6_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_6_11(){\n return Math.random()\n}\n\nfunction f0_4_6(){\n f0_4_6_0();\n f0_4_6_1();\n f0_4_6_2();\n f0_4_6_3();\n f0_4_6_4();\n f0_4_6_5();\n f0_4_6_6();\n f0_4_6_7();\n f0_4_6_8();\n f0_4_6_9();\n f0_4_6_10();\n f0_4_6_11();\n}\n\nfunction f0_4_7_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_7_1(){\n return Math.random()\n}\n\nfunction f0_4_7_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_7_3(){\n return isNaN(undefined)\n}\n\nfunction f0_4_7_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_7_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_7_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_7_7(){\n return isNaN(undefined)\n}\n\nfunction f0_4_7_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_7_9(){\n return Math.random()\n}\n\nfunction f0_4_7_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_7_11(){\n return isNaN(undefined)\n}\n\nfunction f0_4_7(){\n f0_4_7_0();\n f0_4_7_1();\n f0_4_7_2();\n f0_4_7_3();\n f0_4_7_4();\n f0_4_7_5();\n f0_4_7_6();\n f0_4_7_7();\n f0_4_7_8();\n f0_4_7_9();\n f0_4_7_10();\n f0_4_7_11();\n}\n\nfunction f0_4_8_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_8_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_8_2(){\n return Math.random()\n}\n\nfunction f0_4_8_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_8_4(){\n return Math.random()\n}\n\nfunction f0_4_8_5(){\n return isNaN(undefined)\n}\n\nfunction f0_4_8_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_8_7(){\n return Math.random()\n}\n\nfunction f0_4_8_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_8_9(){\n return isNaN(undefined)\n}\n\nfunction f0_4_8_10(){\n return Math.random()\n}\n\nfunction f0_4_8_11(){\n return isNaN(undefined)\n}\n\nfunction f0_4_8(){\n f0_4_8_0();\n f0_4_8_1();\n f0_4_8_2();\n f0_4_8_3();\n f0_4_8_4();\n f0_4_8_5();\n f0_4_8_6();\n f0_4_8_7();\n f0_4_8_8();\n f0_4_8_9();\n f0_4_8_10();\n f0_4_8_11();\n}\n\nfunction f0_4_9_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_9_1(){\n return Math.random()\n}\n\nfunction f0_4_9_2(){\n return Math.random()\n}\n\nfunction f0_4_9_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_9_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_9_5(){\n return isNaN(undefined)\n}\n\nfunction f0_4_9_6(){\n return isNaN(undefined)\n}\n\nfunction f0_4_9_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_9_8(){\n return Math.random()\n}\n\nfunction f0_4_9_9(){\n return Math.random()\n}\n\nfunction f0_4_9_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_9_11(){\n return Math.random()\n}\n\nfunction f0_4_9(){\n f0_4_9_0();\n f0_4_9_1();\n f0_4_9_2();\n f0_4_9_3();\n f0_4_9_4();\n f0_4_9_5();\n f0_4_9_6();\n f0_4_9_7();\n f0_4_9_8();\n f0_4_9_9();\n f0_4_9_10();\n f0_4_9_11();\n}\n\nfunction f0_4_10_0(){\n return isNaN(undefined)\n}\n\nfunction f0_4_10_1(){\n return isNaN(undefined)\n}\n\nfunction f0_4_10_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_10_3(){\n return Math.random()\n}\n\nfunction f0_4_10_4(){\n return Math.random()\n}\n\nfunction f0_4_10_5(){\n return Math.random()\n}\n\nfunction f0_4_10_6(){\n return isNaN(undefined)\n}\n\nfunction f0_4_10_7(){\n return isNaN(undefined)\n}\n\nfunction f0_4_10_8(){\n return Math.random()\n}\n\nfunction f0_4_10_9(){\n return Math.random()\n}\n\nfunction f0_4_10_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_10_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_10(){\n f0_4_10_0();\n f0_4_10_1();\n f0_4_10_2();\n f0_4_10_3();\n f0_4_10_4();\n f0_4_10_5();\n f0_4_10_6();\n f0_4_10_7();\n f0_4_10_8();\n f0_4_10_9();\n f0_4_10_10();\n f0_4_10_11();\n}\n\nfunction f0_4_11_0(){\n return isNaN(undefined)\n}\n\nfunction f0_4_11_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_11_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_11_3(){\n return isNaN(undefined)\n}\n\nfunction f0_4_11_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_11_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_11_6(){\n return isNaN(undefined)\n}\n\nfunction f0_4_11_7(){\n return isNaN(undefined)\n}\n\nfunction f0_4_11_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_4_11_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_4_11_10(){\n return isNaN(undefined)\n}\n\nfunction f0_4_11_11(){\n return isNaN(undefined)\n}\n\nfunction f0_4_11(){\n f0_4_11_0();\n f0_4_11_1();\n f0_4_11_2();\n f0_4_11_3();\n f0_4_11_4();\n f0_4_11_5();\n f0_4_11_6();\n f0_4_11_7();\n f0_4_11_8();\n f0_4_11_9();\n f0_4_11_10();\n f0_4_11_11();\n}\n\nfunction f0_4(){\n f0_4_0();\n f0_4_1();\n f0_4_2();\n f0_4_3();\n f0_4_4();\n f0_4_5();\n f0_4_6();\n f0_4_7();\n f0_4_8();\n f0_4_9();\n f0_4_10();\n f0_4_11();\n\n}\n\nfunction f0_5_0_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_0_1(){\n return Math.random()\n}\n\nfunction f0_5_0_2(){\n return isNaN(undefined)\n}\n\nfunction f0_5_0_3(){\n return Math.random()\n}\n\nfunction f0_5_0_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_0_5(){\n return isNaN(undefined)\n}\n\nfunction f0_5_0_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_0_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_0_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_0_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_0_10(){\n return Math.random()\n}\n\nfunction f0_5_0_11(){\n return isNaN(undefined)\n}\n\nfunction f0_5_0(){\n f0_5_0_0();\n f0_5_0_1();\n f0_5_0_2();\n f0_5_0_3();\n f0_5_0_4();\n f0_5_0_5();\n f0_5_0_6();\n f0_5_0_7();\n f0_5_0_8();\n f0_5_0_9();\n f0_5_0_10();\n f0_5_0_11();\n}\n\nfunction f0_5_1_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_1_1(){\n return isNaN(undefined)\n}\n\nfunction f0_5_1_2(){\n return Math.random()\n}\n\nfunction f0_5_1_3(){\n return isNaN(undefined)\n}\n\nfunction f0_5_1_4(){\n return Math.random()\n}\n\nfunction f0_5_1_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_1_6(){\n return isNaN(undefined)\n}\n\nfunction f0_5_1_7(){\n return isNaN(undefined)\n}\n\nfunction f0_5_1_8(){\n return Math.random()\n}\n\nfunction f0_5_1_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_1_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_1_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_1(){\n f0_5_1_0();\n f0_5_1_1();\n f0_5_1_2();\n f0_5_1_3();\n f0_5_1_4();\n f0_5_1_5();\n f0_5_1_6();\n f0_5_1_7();\n f0_5_1_8();\n f0_5_1_9();\n f0_5_1_10();\n f0_5_1_11();\n}\n\nfunction f0_5_2_0(){\n return isNaN(undefined)\n}\n\nfunction f0_5_2_1(){\n return isNaN(undefined)\n}\n\nfunction f0_5_2_2(){\n return Math.random()\n}\n\nfunction f0_5_2_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_2_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_2_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_2_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_2_7(){\n return Math.random()\n}\n\nfunction f0_5_2_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_2_9(){\n return isNaN(undefined)\n}\n\nfunction f0_5_2_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_2_11(){\n return isNaN(undefined)\n}\n\nfunction f0_5_2(){\n f0_5_2_0();\n f0_5_2_1();\n f0_5_2_2();\n f0_5_2_3();\n f0_5_2_4();\n f0_5_2_5();\n f0_5_2_6();\n f0_5_2_7();\n f0_5_2_8();\n f0_5_2_9();\n f0_5_2_10();\n f0_5_2_11();\n}\n\nfunction f0_5_3_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_3_1(){\n return isNaN(undefined)\n}\n\nfunction f0_5_3_2(){\n return Math.random()\n}\n\nfunction f0_5_3_3(){\n return isNaN(undefined)\n}\n\nfunction f0_5_3_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_3_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_3_6(){\n return isNaN(undefined)\n}\n\nfunction f0_5_3_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_3_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_3_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_3_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_3_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_3(){\n f0_5_3_0();\n f0_5_3_1();\n f0_5_3_2();\n f0_5_3_3();\n f0_5_3_4();\n f0_5_3_5();\n f0_5_3_6();\n f0_5_3_7();\n f0_5_3_8();\n f0_5_3_9();\n f0_5_3_10();\n f0_5_3_11();\n}\n\nfunction f0_5_4_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_4_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_4_2(){\n return Math.random()\n}\n\nfunction f0_5_4_3(){\n return Math.random()\n}\n\nfunction f0_5_4_4(){\n return Math.random()\n}\n\nfunction f0_5_4_5(){\n return Math.random()\n}\n\nfunction f0_5_4_6(){\n return Math.random()\n}\n\nfunction f0_5_4_7(){\n return Math.random()\n}\n\nfunction f0_5_4_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_4_9(){\n return Math.random()\n}\n\nfunction f0_5_4_10(){\n return isNaN(undefined)\n}\n\nfunction f0_5_4_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_4(){\n f0_5_4_0();\n f0_5_4_1();\n f0_5_4_2();\n f0_5_4_3();\n f0_5_4_4();\n f0_5_4_5();\n f0_5_4_6();\n f0_5_4_7();\n f0_5_4_8();\n f0_5_4_9();\n f0_5_4_10();\n f0_5_4_11();\n}\n\nfunction f0_5_5_0(){\n return isNaN(undefined)\n}\n\nfunction f0_5_5_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_5_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_5_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_5_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_5_5(){\n return isNaN(undefined)\n}\n\nfunction f0_5_5_6(){\n return Math.random()\n}\n\nfunction f0_5_5_7(){\n return Math.random()\n}\n\nfunction f0_5_5_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_5_9(){\n return Math.random()\n}\n\nfunction f0_5_5_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_5_11(){\n return Math.random()\n}\n\nfunction f0_5_5(){\n f0_5_5_0();\n f0_5_5_1();\n f0_5_5_2();\n f0_5_5_3();\n f0_5_5_4();\n f0_5_5_5();\n f0_5_5_6();\n f0_5_5_7();\n f0_5_5_8();\n f0_5_5_9();\n f0_5_5_10();\n f0_5_5_11();\n}\n\nfunction f0_5_6_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_6_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_6_2(){\n return Math.random()\n}\n\nfunction f0_5_6_3(){\n return isNaN(undefined)\n}\n\nfunction f0_5_6_4(){\n return Math.random()\n}\n\nfunction f0_5_6_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_6_6(){\n return Math.random()\n}\n\nfunction f0_5_6_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_6_8(){\n return isNaN(undefined)\n}\n\nfunction f0_5_6_9(){\n return isNaN(undefined)\n}\n\nfunction f0_5_6_10(){\n return Math.random()\n}\n\nfunction f0_5_6_11(){\n return Math.random()\n}\n\nfunction f0_5_6(){\n f0_5_6_0();\n f0_5_6_1();\n f0_5_6_2();\n f0_5_6_3();\n f0_5_6_4();\n f0_5_6_5();\n f0_5_6_6();\n f0_5_6_7();\n f0_5_6_8();\n f0_5_6_9();\n f0_5_6_10();\n f0_5_6_11();\n}\n\nfunction f0_5_7_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_7_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_7_2(){\n return Math.random()\n}\n\nfunction f0_5_7_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_7_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_7_5(){\n return Math.random()\n}\n\nfunction f0_5_7_6(){\n return isNaN(undefined)\n}\n\nfunction f0_5_7_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_7_8(){\n return Math.random()\n}\n\nfunction f0_5_7_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_7_10(){\n return Math.random()\n}\n\nfunction f0_5_7_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_7(){\n f0_5_7_0();\n f0_5_7_1();\n f0_5_7_2();\n f0_5_7_3();\n f0_5_7_4();\n f0_5_7_5();\n f0_5_7_6();\n f0_5_7_7();\n f0_5_7_8();\n f0_5_7_9();\n f0_5_7_10();\n f0_5_7_11();\n}\n\nfunction f0_5_8_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_8_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_8_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_8_3(){\n return Math.random()\n}\n\nfunction f0_5_8_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_8_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_8_6(){\n return Math.random()\n}\n\nfunction f0_5_8_7(){\n return Math.random()\n}\n\nfunction f0_5_8_8(){\n return isNaN(undefined)\n}\n\nfunction f0_5_8_9(){\n return Math.random()\n}\n\nfunction f0_5_8_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_8_11(){\n return isNaN(undefined)\n}\n\nfunction f0_5_8(){\n f0_5_8_0();\n f0_5_8_1();\n f0_5_8_2();\n f0_5_8_3();\n f0_5_8_4();\n f0_5_8_5();\n f0_5_8_6();\n f0_5_8_7();\n f0_5_8_8();\n f0_5_8_9();\n f0_5_8_10();\n f0_5_8_11();\n}\n\nfunction f0_5_9_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_9_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_9_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_9_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_9_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_9_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_9_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_9_7(){\n return Math.random()\n}\n\nfunction f0_5_9_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_9_9(){\n return Math.random()\n}\n\nfunction f0_5_9_10(){\n return Math.random()\n}\n\nfunction f0_5_9_11(){\n return isNaN(undefined)\n}\n\nfunction f0_5_9(){\n f0_5_9_0();\n f0_5_9_1();\n f0_5_9_2();\n f0_5_9_3();\n f0_5_9_4();\n f0_5_9_5();\n f0_5_9_6();\n f0_5_9_7();\n f0_5_9_8();\n f0_5_9_9();\n f0_5_9_10();\n f0_5_9_11();\n}\n\nfunction f0_5_10_0(){\n return isNaN(undefined)\n}\n\nfunction f0_5_10_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_10_2(){\n return isNaN(undefined)\n}\n\nfunction f0_5_10_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_10_4(){\n return Math.random()\n}\n\nfunction f0_5_10_5(){\n return Math.random()\n}\n\nfunction f0_5_10_6(){\n return Math.random()\n}\n\nfunction f0_5_10_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_10_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_10_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_10_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_10_11(){\n return Math.random()\n}\n\nfunction f0_5_10(){\n f0_5_10_0();\n f0_5_10_1();\n f0_5_10_2();\n f0_5_10_3();\n f0_5_10_4();\n f0_5_10_5();\n f0_5_10_6();\n f0_5_10_7();\n f0_5_10_8();\n f0_5_10_9();\n f0_5_10_10();\n f0_5_10_11();\n}\n\nfunction f0_5_11_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_11_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_11_2(){\n return Math.random()\n}\n\nfunction f0_5_11_3(){\n return Math.random()\n}\n\nfunction f0_5_11_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_5_11_5(){\n return Math.random()\n}\n\nfunction f0_5_11_6(){\n return Math.random()\n}\n\nfunction f0_5_11_7(){\n return isNaN(undefined)\n}\n\nfunction f0_5_11_8(){\n return isNaN(undefined)\n}\n\nfunction f0_5_11_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_11_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_5_11_11(){\n return isNaN(undefined)\n}\n\nfunction f0_5_11(){\n f0_5_11_0();\n f0_5_11_1();\n f0_5_11_2();\n f0_5_11_3();\n f0_5_11_4();\n f0_5_11_5();\n f0_5_11_6();\n f0_5_11_7();\n f0_5_11_8();\n f0_5_11_9();\n f0_5_11_10();\n f0_5_11_11();\n}\n\nfunction f0_5(){\n f0_5_0();\n f0_5_1();\n f0_5_2();\n f0_5_3();\n f0_5_4();\n f0_5_5();\n f0_5_6();\n f0_5_7();\n f0_5_8();\n f0_5_9();\n f0_5_10();\n f0_5_11();\n\n}\n\nfunction f0_6_0_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_0_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_0_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_0_3(){\n return Math.random()\n}\n\nfunction f0_6_0_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_0_5(){\n return isNaN(undefined)\n}\n\nfunction f0_6_0_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_0_7(){\n return Math.random()\n}\n\nfunction f0_6_0_8(){\n return isNaN(undefined)\n}\n\nfunction f0_6_0_9(){\n return isNaN(undefined)\n}\n\nfunction f0_6_0_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_0_11(){\n return isNaN(undefined)\n}\n\nfunction f0_6_0(){\n f0_6_0_0();\n f0_6_0_1();\n f0_6_0_2();\n f0_6_0_3();\n f0_6_0_4();\n f0_6_0_5();\n f0_6_0_6();\n f0_6_0_7();\n f0_6_0_8();\n f0_6_0_9();\n f0_6_0_10();\n f0_6_0_11();\n}\n\nfunction f0_6_1_0(){\n return isNaN(undefined)\n}\n\nfunction f0_6_1_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_1_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_1_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_1_4(){\n return Math.random()\n}\n\nfunction f0_6_1_5(){\n return isNaN(undefined)\n}\n\nfunction f0_6_1_6(){\n return isNaN(undefined)\n}\n\nfunction f0_6_1_7(){\n return isNaN(undefined)\n}\n\nfunction f0_6_1_8(){\n return Math.random()\n}\n\nfunction f0_6_1_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_1_10(){\n return Math.random()\n}\n\nfunction f0_6_1_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_1(){\n f0_6_1_0();\n f0_6_1_1();\n f0_6_1_2();\n f0_6_1_3();\n f0_6_1_4();\n f0_6_1_5();\n f0_6_1_6();\n f0_6_1_7();\n f0_6_1_8();\n f0_6_1_9();\n f0_6_1_10();\n f0_6_1_11();\n}\n\nfunction f0_6_2_0(){\n return isNaN(undefined)\n}\n\nfunction f0_6_2_1(){\n return Math.random()\n}\n\nfunction f0_6_2_2(){\n return isNaN(undefined)\n}\n\nfunction f0_6_2_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_2_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_2_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_2_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_2_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_2_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_2_9(){\n return Math.random()\n}\n\nfunction f0_6_2_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_2_11(){\n return isNaN(undefined)\n}\n\nfunction f0_6_2(){\n f0_6_2_0();\n f0_6_2_1();\n f0_6_2_2();\n f0_6_2_3();\n f0_6_2_4();\n f0_6_2_5();\n f0_6_2_6();\n f0_6_2_7();\n f0_6_2_8();\n f0_6_2_9();\n f0_6_2_10();\n f0_6_2_11();\n}\n\nfunction f0_6_3_0(){\n return Math.random()\n}\n\nfunction f0_6_3_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_3_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_3_3(){\n return isNaN(undefined)\n}\n\nfunction f0_6_3_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_3_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_3_6(){\n return Math.random()\n}\n\nfunction f0_6_3_7(){\n return isNaN(undefined)\n}\n\nfunction f0_6_3_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_3_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_3_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_3_11(){\n return Math.random()\n}\n\nfunction f0_6_3(){\n f0_6_3_0();\n f0_6_3_1();\n f0_6_3_2();\n f0_6_3_3();\n f0_6_3_4();\n f0_6_3_5();\n f0_6_3_6();\n f0_6_3_7();\n f0_6_3_8();\n f0_6_3_9();\n f0_6_3_10();\n f0_6_3_11();\n}\n\nfunction f0_6_4_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_4_1(){\n return Math.random()\n}\n\nfunction f0_6_4_2(){\n return isNaN(undefined)\n}\n\nfunction f0_6_4_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_4_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_4_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_4_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_4_7(){\n return Math.random()\n}\n\nfunction f0_6_4_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_4_9(){\n return isNaN(undefined)\n}\n\nfunction f0_6_4_10(){\n return isNaN(undefined)\n}\n\nfunction f0_6_4_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_4(){\n f0_6_4_0();\n f0_6_4_1();\n f0_6_4_2();\n f0_6_4_3();\n f0_6_4_4();\n f0_6_4_5();\n f0_6_4_6();\n f0_6_4_7();\n f0_6_4_8();\n f0_6_4_9();\n f0_6_4_10();\n f0_6_4_11();\n}\n\nfunction f0_6_5_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_5_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_5_2(){\n return isNaN(undefined)\n}\n\nfunction f0_6_5_3(){\n return isNaN(undefined)\n}\n\nfunction f0_6_5_4(){\n return Math.random()\n}\n\nfunction f0_6_5_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_5_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_5_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_5_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_5_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_5_10(){\n return isNaN(undefined)\n}\n\nfunction f0_6_5_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_5(){\n f0_6_5_0();\n f0_6_5_1();\n f0_6_5_2();\n f0_6_5_3();\n f0_6_5_4();\n f0_6_5_5();\n f0_6_5_6();\n f0_6_5_7();\n f0_6_5_8();\n f0_6_5_9();\n f0_6_5_10();\n f0_6_5_11();\n}\n\nfunction f0_6_6_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_6_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_6_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_6_3(){\n return Math.random()\n}\n\nfunction f0_6_6_4(){\n return isNaN(undefined)\n}\n\nfunction f0_6_6_5(){\n return isNaN(undefined)\n}\n\nfunction f0_6_6_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_6_7(){\n return isNaN(undefined)\n}\n\nfunction f0_6_6_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_6_9(){\n return isNaN(undefined)\n}\n\nfunction f0_6_6_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_6_11(){\n return isNaN(undefined)\n}\n\nfunction f0_6_6(){\n f0_6_6_0();\n f0_6_6_1();\n f0_6_6_2();\n f0_6_6_3();\n f0_6_6_4();\n f0_6_6_5();\n f0_6_6_6();\n f0_6_6_7();\n f0_6_6_8();\n f0_6_6_9();\n f0_6_6_10();\n f0_6_6_11();\n}\n\nfunction f0_6_7_0(){\n return isNaN(undefined)\n}\n\nfunction f0_6_7_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_7_2(){\n return Math.random()\n}\n\nfunction f0_6_7_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_7_4(){\n return Math.random()\n}\n\nfunction f0_6_7_5(){\n return isNaN(undefined)\n}\n\nfunction f0_6_7_6(){\n return isNaN(undefined)\n}\n\nfunction f0_6_7_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_7_8(){\n return Math.random()\n}\n\nfunction f0_6_7_9(){\n return Math.random()\n}\n\nfunction f0_6_7_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_7_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_7(){\n f0_6_7_0();\n f0_6_7_1();\n f0_6_7_2();\n f0_6_7_3();\n f0_6_7_4();\n f0_6_7_5();\n f0_6_7_6();\n f0_6_7_7();\n f0_6_7_8();\n f0_6_7_9();\n f0_6_7_10();\n f0_6_7_11();\n}\n\nfunction f0_6_8_0(){\n return isNaN(undefined)\n}\n\nfunction f0_6_8_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_8_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_8_3(){\n return isNaN(undefined)\n}\n\nfunction f0_6_8_4(){\n return isNaN(undefined)\n}\n\nfunction f0_6_8_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_8_6(){\n return isNaN(undefined)\n}\n\nfunction f0_6_8_7(){\n return Math.random()\n}\n\nfunction f0_6_8_8(){\n return Math.random()\n}\n\nfunction f0_6_8_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_8_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_8_11(){\n return Math.random()\n}\n\nfunction f0_6_8(){\n f0_6_8_0();\n f0_6_8_1();\n f0_6_8_2();\n f0_6_8_3();\n f0_6_8_4();\n f0_6_8_5();\n f0_6_8_6();\n f0_6_8_7();\n f0_6_8_8();\n f0_6_8_9();\n f0_6_8_10();\n f0_6_8_11();\n}\n\nfunction f0_6_9_0(){\n return isNaN(undefined)\n}\n\nfunction f0_6_9_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_9_2(){\n return isNaN(undefined)\n}\n\nfunction f0_6_9_3(){\n return Math.random()\n}\n\nfunction f0_6_9_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_9_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_9_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_9_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_9_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_9_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_9_10(){\n return isNaN(undefined)\n}\n\nfunction f0_6_9_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_9(){\n f0_6_9_0();\n f0_6_9_1();\n f0_6_9_2();\n f0_6_9_3();\n f0_6_9_4();\n f0_6_9_5();\n f0_6_9_6();\n f0_6_9_7();\n f0_6_9_8();\n f0_6_9_9();\n f0_6_9_10();\n f0_6_9_11();\n}\n\nfunction f0_6_10_0(){\n return isNaN(undefined)\n}\n\nfunction f0_6_10_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_10_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_10_3(){\n return isNaN(undefined)\n}\n\nfunction f0_6_10_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_10_5(){\n return Math.random()\n}\n\nfunction f0_6_10_6(){\n return Math.random()\n}\n\nfunction f0_6_10_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_10_8(){\n return isNaN(undefined)\n}\n\nfunction f0_6_10_9(){\n return Math.random()\n}\n\nfunction f0_6_10_10(){\n return isNaN(undefined)\n}\n\nfunction f0_6_10_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_10(){\n f0_6_10_0();\n f0_6_10_1();\n f0_6_10_2();\n f0_6_10_3();\n f0_6_10_4();\n f0_6_10_5();\n f0_6_10_6();\n f0_6_10_7();\n f0_6_10_8();\n f0_6_10_9();\n f0_6_10_10();\n f0_6_10_11();\n}\n\nfunction f0_6_11_0(){\n return isNaN(undefined)\n}\n\nfunction f0_6_11_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_11_2(){\n return Math.random()\n}\n\nfunction f0_6_11_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_11_4(){\n return Math.random()\n}\n\nfunction f0_6_11_5(){\n return isNaN(undefined)\n}\n\nfunction f0_6_11_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_6_11_7(){\n return Math.random()\n}\n\nfunction f0_6_11_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_11_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_11_10(){\n return Math.random()\n}\n\nfunction f0_6_11_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_6_11(){\n f0_6_11_0();\n f0_6_11_1();\n f0_6_11_2();\n f0_6_11_3();\n f0_6_11_4();\n f0_6_11_5();\n f0_6_11_6();\n f0_6_11_7();\n f0_6_11_8();\n f0_6_11_9();\n f0_6_11_10();\n f0_6_11_11();\n}\n\nfunction f0_6(){\n f0_6_0();\n f0_6_1();\n f0_6_2();\n f0_6_3();\n f0_6_4();\n f0_6_5();\n f0_6_6();\n f0_6_7();\n f0_6_8();\n f0_6_9();\n f0_6_10();\n f0_6_11();\n\n}\n\nfunction f0_7_0_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_0_1(){\n return Math.random()\n}\n\nfunction f0_7_0_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_0_3(){\n return isNaN(undefined)\n}\n\nfunction f0_7_0_4(){\n return Math.random()\n}\n\nfunction f0_7_0_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_0_6(){\n return isNaN(undefined)\n}\n\nfunction f0_7_0_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_0_8(){\n return Math.random()\n}\n\nfunction f0_7_0_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_0_10(){\n return isNaN(undefined)\n}\n\nfunction f0_7_0_11(){\n return isNaN(undefined)\n}\n\nfunction f0_7_0(){\n f0_7_0_0();\n f0_7_0_1();\n f0_7_0_2();\n f0_7_0_3();\n f0_7_0_4();\n f0_7_0_5();\n f0_7_0_6();\n f0_7_0_7();\n f0_7_0_8();\n f0_7_0_9();\n f0_7_0_10();\n f0_7_0_11();\n}\n\nfunction f0_7_1_0(){\n return Math.random()\n}\n\nfunction f0_7_1_1(){\n return Math.random()\n}\n\nfunction f0_7_1_2(){\n return Math.random()\n}\n\nfunction f0_7_1_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_1_4(){\n return Math.random()\n}\n\nfunction f0_7_1_5(){\n return isNaN(undefined)\n}\n\nfunction f0_7_1_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_1_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_1_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_1_9(){\n return Math.random()\n}\n\nfunction f0_7_1_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_1_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_1(){\n f0_7_1_0();\n f0_7_1_1();\n f0_7_1_2();\n f0_7_1_3();\n f0_7_1_4();\n f0_7_1_5();\n f0_7_1_6();\n f0_7_1_7();\n f0_7_1_8();\n f0_7_1_9();\n f0_7_1_10();\n f0_7_1_11();\n}\n\nfunction f0_7_2_0(){\n return isNaN(undefined)\n}\n\nfunction f0_7_2_1(){\n return Math.random()\n}\n\nfunction f0_7_2_2(){\n return isNaN(undefined)\n}\n\nfunction f0_7_2_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_2_4(){\n return isNaN(undefined)\n}\n\nfunction f0_7_2_5(){\n return Math.random()\n}\n\nfunction f0_7_2_6(){\n return Math.random()\n}\n\nfunction f0_7_2_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_2_8(){\n return isNaN(undefined)\n}\n\nfunction f0_7_2_9(){\n return isNaN(undefined)\n}\n\nfunction f0_7_2_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_2_11(){\n return isNaN(undefined)\n}\n\nfunction f0_7_2(){\n f0_7_2_0();\n f0_7_2_1();\n f0_7_2_2();\n f0_7_2_3();\n f0_7_2_4();\n f0_7_2_5();\n f0_7_2_6();\n f0_7_2_7();\n f0_7_2_8();\n f0_7_2_9();\n f0_7_2_10();\n f0_7_2_11();\n}\n\nfunction f0_7_3_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_3_1(){\n return isNaN(undefined)\n}\n\nfunction f0_7_3_2(){\n return isNaN(undefined)\n}\n\nfunction f0_7_3_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_3_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_3_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_3_6(){\n return isNaN(undefined)\n}\n\nfunction f0_7_3_7(){\n return Math.random()\n}\n\nfunction f0_7_3_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_3_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_3_10(){\n return isNaN(undefined)\n}\n\nfunction f0_7_3_11(){\n return isNaN(undefined)\n}\n\nfunction f0_7_3(){\n f0_7_3_0();\n f0_7_3_1();\n f0_7_3_2();\n f0_7_3_3();\n f0_7_3_4();\n f0_7_3_5();\n f0_7_3_6();\n f0_7_3_7();\n f0_7_3_8();\n f0_7_3_9();\n f0_7_3_10();\n f0_7_3_11();\n}\n\nfunction f0_7_4_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_4_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_4_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_4_3(){\n return Math.random()\n}\n\nfunction f0_7_4_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_4_5(){\n return isNaN(undefined)\n}\n\nfunction f0_7_4_6(){\n return Math.random()\n}\n\nfunction f0_7_4_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_4_8(){\n return isNaN(undefined)\n}\n\nfunction f0_7_4_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_4_10(){\n return isNaN(undefined)\n}\n\nfunction f0_7_4_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_4(){\n f0_7_4_0();\n f0_7_4_1();\n f0_7_4_2();\n f0_7_4_3();\n f0_7_4_4();\n f0_7_4_5();\n f0_7_4_6();\n f0_7_4_7();\n f0_7_4_8();\n f0_7_4_9();\n f0_7_4_10();\n f0_7_4_11();\n}\n\nfunction f0_7_5_0(){\n return Math.random()\n}\n\nfunction f0_7_5_1(){\n return Math.random()\n}\n\nfunction f0_7_5_2(){\n return isNaN(undefined)\n}\n\nfunction f0_7_5_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_5_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_5_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_5_6(){\n return isNaN(undefined)\n}\n\nfunction f0_7_5_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_5_8(){\n return isNaN(undefined)\n}\n\nfunction f0_7_5_9(){\n return isNaN(undefined)\n}\n\nfunction f0_7_5_10(){\n return isNaN(undefined)\n}\n\nfunction f0_7_5_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_5(){\n f0_7_5_0();\n f0_7_5_1();\n f0_7_5_2();\n f0_7_5_3();\n f0_7_5_4();\n f0_7_5_5();\n f0_7_5_6();\n f0_7_5_7();\n f0_7_5_8();\n f0_7_5_9();\n f0_7_5_10();\n f0_7_5_11();\n}\n\nfunction f0_7_6_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_6_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_6_2(){\n return Math.random()\n}\n\nfunction f0_7_6_3(){\n return Math.random()\n}\n\nfunction f0_7_6_4(){\n return isNaN(undefined)\n}\n\nfunction f0_7_6_5(){\n return isNaN(undefined)\n}\n\nfunction f0_7_6_6(){\n return Math.random()\n}\n\nfunction f0_7_6_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_6_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_6_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_6_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_6_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_6(){\n f0_7_6_0();\n f0_7_6_1();\n f0_7_6_2();\n f0_7_6_3();\n f0_7_6_4();\n f0_7_6_5();\n f0_7_6_6();\n f0_7_6_7();\n f0_7_6_8();\n f0_7_6_9();\n f0_7_6_10();\n f0_7_6_11();\n}\n\nfunction f0_7_7_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_7_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_7_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_7_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_7_4(){\n return isNaN(undefined)\n}\n\nfunction f0_7_7_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_7_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_7_7(){\n return Math.random()\n}\n\nfunction f0_7_7_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_7_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_7_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_7_11(){\n return Math.random()\n}\n\nfunction f0_7_7(){\n f0_7_7_0();\n f0_7_7_1();\n f0_7_7_2();\n f0_7_7_3();\n f0_7_7_4();\n f0_7_7_5();\n f0_7_7_6();\n f0_7_7_7();\n f0_7_7_8();\n f0_7_7_9();\n f0_7_7_10();\n f0_7_7_11();\n}\n\nfunction f0_7_8_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_8_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_8_2(){\n return Math.random()\n}\n\nfunction f0_7_8_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_8_4(){\n return isNaN(undefined)\n}\n\nfunction f0_7_8_5(){\n return isNaN(undefined)\n}\n\nfunction f0_7_8_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_8_7(){\n return Math.random()\n}\n\nfunction f0_7_8_8(){\n return isNaN(undefined)\n}\n\nfunction f0_7_8_9(){\n return isNaN(undefined)\n}\n\nfunction f0_7_8_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_8_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_8(){\n f0_7_8_0();\n f0_7_8_1();\n f0_7_8_2();\n f0_7_8_3();\n f0_7_8_4();\n f0_7_8_5();\n f0_7_8_6();\n f0_7_8_7();\n f0_7_8_8();\n f0_7_8_9();\n f0_7_8_10();\n f0_7_8_11();\n}\n\nfunction f0_7_9_0(){\n return Math.random()\n}\n\nfunction f0_7_9_1(){\n return Math.random()\n}\n\nfunction f0_7_9_2(){\n return Math.random()\n}\n\nfunction f0_7_9_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_9_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_9_5(){\n return isNaN(undefined)\n}\n\nfunction f0_7_9_6(){\n return Math.random()\n}\n\nfunction f0_7_9_7(){\n return Math.random()\n}\n\nfunction f0_7_9_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_9_9(){\n return isNaN(undefined)\n}\n\nfunction f0_7_9_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_9_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_9(){\n f0_7_9_0();\n f0_7_9_1();\n f0_7_9_2();\n f0_7_9_3();\n f0_7_9_4();\n f0_7_9_5();\n f0_7_9_6();\n f0_7_9_7();\n f0_7_9_8();\n f0_7_9_9();\n f0_7_9_10();\n f0_7_9_11();\n}\n\nfunction f0_7_10_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_10_1(){\n return Math.random()\n}\n\nfunction f0_7_10_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_10_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_10_4(){\n return isNaN(undefined)\n}\n\nfunction f0_7_10_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_10_6(){\n return isNaN(undefined)\n}\n\nfunction f0_7_10_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_10_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_10_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_10_10(){\n return isNaN(undefined)\n}\n\nfunction f0_7_10_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_10(){\n f0_7_10_0();\n f0_7_10_1();\n f0_7_10_2();\n f0_7_10_3();\n f0_7_10_4();\n f0_7_10_5();\n f0_7_10_6();\n f0_7_10_7();\n f0_7_10_8();\n f0_7_10_9();\n f0_7_10_10();\n f0_7_10_11();\n}\n\nfunction f0_7_11_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_11_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_11_2(){\n return isNaN(undefined)\n}\n\nfunction f0_7_11_3(){\n return isNaN(undefined)\n}\n\nfunction f0_7_11_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_11_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_7_11_6(){\n return Math.random()\n}\n\nfunction f0_7_11_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_11_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_11_9(){\n return isNaN(undefined)\n}\n\nfunction f0_7_11_10(){\n return Math.random()\n}\n\nfunction f0_7_11_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_7_11(){\n f0_7_11_0();\n f0_7_11_1();\n f0_7_11_2();\n f0_7_11_3();\n f0_7_11_4();\n f0_7_11_5();\n f0_7_11_6();\n f0_7_11_7();\n f0_7_11_8();\n f0_7_11_9();\n f0_7_11_10();\n f0_7_11_11();\n}\n\nfunction f0_7(){\n f0_7_0();\n f0_7_1();\n f0_7_2();\n f0_7_3();\n f0_7_4();\n f0_7_5();\n f0_7_6();\n f0_7_7();\n f0_7_8();\n f0_7_9();\n f0_7_10();\n f0_7_11();\n\n}\n\nfunction f0_8_0_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_0_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_0_2(){\n return Math.random()\n}\n\nfunction f0_8_0_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_0_4(){\n return Math.random()\n}\n\nfunction f0_8_0_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_0_6(){\n return Math.random()\n}\n\nfunction f0_8_0_7(){\n return Math.random()\n}\n\nfunction f0_8_0_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_0_9(){\n return Math.random()\n}\n\nfunction f0_8_0_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_0_11(){\n return isNaN(undefined)\n}\n\nfunction f0_8_0(){\n f0_8_0_0();\n f0_8_0_1();\n f0_8_0_2();\n f0_8_0_3();\n f0_8_0_4();\n f0_8_0_5();\n f0_8_0_6();\n f0_8_0_7();\n f0_8_0_8();\n f0_8_0_9();\n f0_8_0_10();\n f0_8_0_11();\n}\n\nfunction f0_8_1_0(){\n return Math.random()\n}\n\nfunction f0_8_1_1(){\n return Math.random()\n}\n\nfunction f0_8_1_2(){\n return Math.random()\n}\n\nfunction f0_8_1_3(){\n return isNaN(undefined)\n}\n\nfunction f0_8_1_4(){\n return Math.random()\n}\n\nfunction f0_8_1_5(){\n return Math.random()\n}\n\nfunction f0_8_1_6(){\n return isNaN(undefined)\n}\n\nfunction f0_8_1_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_1_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_1_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_1_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_1_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_1(){\n f0_8_1_0();\n f0_8_1_1();\n f0_8_1_2();\n f0_8_1_3();\n f0_8_1_4();\n f0_8_1_5();\n f0_8_1_6();\n f0_8_1_7();\n f0_8_1_8();\n f0_8_1_9();\n f0_8_1_10();\n f0_8_1_11();\n}\n\nfunction f0_8_2_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_2_1(){\n return isNaN(undefined)\n}\n\nfunction f0_8_2_2(){\n return isNaN(undefined)\n}\n\nfunction f0_8_2_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_2_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_2_5(){\n return isNaN(undefined)\n}\n\nfunction f0_8_2_6(){\n return Math.random()\n}\n\nfunction f0_8_2_7(){\n return isNaN(undefined)\n}\n\nfunction f0_8_2_8(){\n return Math.random()\n}\n\nfunction f0_8_2_9(){\n return isNaN(undefined)\n}\n\nfunction f0_8_2_10(){\n return isNaN(undefined)\n}\n\nfunction f0_8_2_11(){\n return isNaN(undefined)\n}\n\nfunction f0_8_2(){\n f0_8_2_0();\n f0_8_2_1();\n f0_8_2_2();\n f0_8_2_3();\n f0_8_2_4();\n f0_8_2_5();\n f0_8_2_6();\n f0_8_2_7();\n f0_8_2_8();\n f0_8_2_9();\n f0_8_2_10();\n f0_8_2_11();\n}\n\nfunction f0_8_3_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_3_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_3_2(){\n return isNaN(undefined)\n}\n\nfunction f0_8_3_3(){\n return isNaN(undefined)\n}\n\nfunction f0_8_3_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_3_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_3_6(){\n return Math.random()\n}\n\nfunction f0_8_3_7(){\n return isNaN(undefined)\n}\n\nfunction f0_8_3_8(){\n return Math.random()\n}\n\nfunction f0_8_3_9(){\n return Math.random()\n}\n\nfunction f0_8_3_10(){\n return isNaN(undefined)\n}\n\nfunction f0_8_3_11(){\n return Math.random()\n}\n\nfunction f0_8_3(){\n f0_8_3_0();\n f0_8_3_1();\n f0_8_3_2();\n f0_8_3_3();\n f0_8_3_4();\n f0_8_3_5();\n f0_8_3_6();\n f0_8_3_7();\n f0_8_3_8();\n f0_8_3_9();\n f0_8_3_10();\n f0_8_3_11();\n}\n\nfunction f0_8_4_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_4_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_4_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_4_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_4_4(){\n return Math.random()\n}\n\nfunction f0_8_4_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_4_6(){\n return isNaN(undefined)\n}\n\nfunction f0_8_4_7(){\n return Math.random()\n}\n\nfunction f0_8_4_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_4_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_4_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_4_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_4(){\n f0_8_4_0();\n f0_8_4_1();\n f0_8_4_2();\n f0_8_4_3();\n f0_8_4_4();\n f0_8_4_5();\n f0_8_4_6();\n f0_8_4_7();\n f0_8_4_8();\n f0_8_4_9();\n f0_8_4_10();\n f0_8_4_11();\n}\n\nfunction f0_8_5_0(){\n return isNaN(undefined)\n}\n\nfunction f0_8_5_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_5_2(){\n return isNaN(undefined)\n}\n\nfunction f0_8_5_3(){\n return isNaN(undefined)\n}\n\nfunction f0_8_5_4(){\n return Math.random()\n}\n\nfunction f0_8_5_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_5_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_5_7(){\n return Math.random()\n}\n\nfunction f0_8_5_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_5_9(){\n return Math.random()\n}\n\nfunction f0_8_5_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_5_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_5(){\n f0_8_5_0();\n f0_8_5_1();\n f0_8_5_2();\n f0_8_5_3();\n f0_8_5_4();\n f0_8_5_5();\n f0_8_5_6();\n f0_8_5_7();\n f0_8_5_8();\n f0_8_5_9();\n f0_8_5_10();\n f0_8_5_11();\n}\n\nfunction f0_8_6_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_6_1(){\n return Math.random()\n}\n\nfunction f0_8_6_2(){\n return isNaN(undefined)\n}\n\nfunction f0_8_6_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_6_4(){\n return Math.random()\n}\n\nfunction f0_8_6_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_6_6(){\n return Math.random()\n}\n\nfunction f0_8_6_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_6_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_6_9(){\n return Math.random()\n}\n\nfunction f0_8_6_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_6_11(){\n return isNaN(undefined)\n}\n\nfunction f0_8_6(){\n f0_8_6_0();\n f0_8_6_1();\n f0_8_6_2();\n f0_8_6_3();\n f0_8_6_4();\n f0_8_6_5();\n f0_8_6_6();\n f0_8_6_7();\n f0_8_6_8();\n f0_8_6_9();\n f0_8_6_10();\n f0_8_6_11();\n}\n\nfunction f0_8_7_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_7_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_7_2(){\n return Math.random()\n}\n\nfunction f0_8_7_3(){\n return isNaN(undefined)\n}\n\nfunction f0_8_7_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_7_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_7_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_7_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_7_8(){\n return isNaN(undefined)\n}\n\nfunction f0_8_7_9(){\n return isNaN(undefined)\n}\n\nfunction f0_8_7_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_7_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_7(){\n f0_8_7_0();\n f0_8_7_1();\n f0_8_7_2();\n f0_8_7_3();\n f0_8_7_4();\n f0_8_7_5();\n f0_8_7_6();\n f0_8_7_7();\n f0_8_7_8();\n f0_8_7_9();\n f0_8_7_10();\n f0_8_7_11();\n}\n\nfunction f0_8_8_0(){\n return isNaN(undefined)\n}\n\nfunction f0_8_8_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_8_2(){\n return isNaN(undefined)\n}\n\nfunction f0_8_8_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_8_4(){\n return Math.random()\n}\n\nfunction f0_8_8_5(){\n return isNaN(undefined)\n}\n\nfunction f0_8_8_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_8_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_8_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_8_9(){\n return Math.random()\n}\n\nfunction f0_8_8_10(){\n return Math.random()\n}\n\nfunction f0_8_8_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_8(){\n f0_8_8_0();\n f0_8_8_1();\n f0_8_8_2();\n f0_8_8_3();\n f0_8_8_4();\n f0_8_8_5();\n f0_8_8_6();\n f0_8_8_7();\n f0_8_8_8();\n f0_8_8_9();\n f0_8_8_10();\n f0_8_8_11();\n}\n\nfunction f0_8_9_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_9_1(){\n return isNaN(undefined)\n}\n\nfunction f0_8_9_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_9_3(){\n return isNaN(undefined)\n}\n\nfunction f0_8_9_4(){\n return isNaN(undefined)\n}\n\nfunction f0_8_9_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_9_6(){\n return Math.random()\n}\n\nfunction f0_8_9_7(){\n return isNaN(undefined)\n}\n\nfunction f0_8_9_8(){\n return isNaN(undefined)\n}\n\nfunction f0_8_9_9(){\n return isNaN(undefined)\n}\n\nfunction f0_8_9_10(){\n return isNaN(undefined)\n}\n\nfunction f0_8_9_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_9(){\n f0_8_9_0();\n f0_8_9_1();\n f0_8_9_2();\n f0_8_9_3();\n f0_8_9_4();\n f0_8_9_5();\n f0_8_9_6();\n f0_8_9_7();\n f0_8_9_8();\n f0_8_9_9();\n f0_8_9_10();\n f0_8_9_11();\n}\n\nfunction f0_8_10_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_10_1(){\n return isNaN(undefined)\n}\n\nfunction f0_8_10_2(){\n return isNaN(undefined)\n}\n\nfunction f0_8_10_3(){\n return Math.random()\n}\n\nfunction f0_8_10_4(){\n return isNaN(undefined)\n}\n\nfunction f0_8_10_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_10_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_10_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_10_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_10_9(){\n return Math.random()\n}\n\nfunction f0_8_10_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_10_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_10(){\n f0_8_10_0();\n f0_8_10_1();\n f0_8_10_2();\n f0_8_10_3();\n f0_8_10_4();\n f0_8_10_5();\n f0_8_10_6();\n f0_8_10_7();\n f0_8_10_8();\n f0_8_10_9();\n f0_8_10_10();\n f0_8_10_11();\n}\n\nfunction f0_8_11_0(){\n return isNaN(undefined)\n}\n\nfunction f0_8_11_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_11_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_8_11_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_11_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_11_5(){\n return isNaN(undefined)\n}\n\nfunction f0_8_11_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_11_7(){\n return Math.random()\n}\n\nfunction f0_8_11_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_11_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_8_11_10(){\n return Math.random()\n}\n\nfunction f0_8_11_11(){\n return isNaN(undefined)\n}\n\nfunction f0_8_11(){\n f0_8_11_0();\n f0_8_11_1();\n f0_8_11_2();\n f0_8_11_3();\n f0_8_11_4();\n f0_8_11_5();\n f0_8_11_6();\n f0_8_11_7();\n f0_8_11_8();\n f0_8_11_9();\n f0_8_11_10();\n f0_8_11_11();\n}\n\nfunction f0_8(){\n f0_8_0();\n f0_8_1();\n f0_8_2();\n f0_8_3();\n f0_8_4();\n f0_8_5();\n f0_8_6();\n f0_8_7();\n f0_8_8();\n f0_8_9();\n f0_8_10();\n f0_8_11();\n\n}\n\nfunction f0_9_0_0(){\n return Math.random()\n}\n\nfunction f0_9_0_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_0_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_0_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_0_4(){\n return Math.random()\n}\n\nfunction f0_9_0_5(){\n return Math.random()\n}\n\nfunction f0_9_0_6(){\n return isNaN(undefined)\n}\n\nfunction f0_9_0_7(){\n return Math.random()\n}\n\nfunction f0_9_0_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_0_9(){\n return isNaN(undefined)\n}\n\nfunction f0_9_0_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_0_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_0(){\n f0_9_0_0();\n f0_9_0_1();\n f0_9_0_2();\n f0_9_0_3();\n f0_9_0_4();\n f0_9_0_5();\n f0_9_0_6();\n f0_9_0_7();\n f0_9_0_8();\n f0_9_0_9();\n f0_9_0_10();\n f0_9_0_11();\n}\n\nfunction f0_9_1_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_1_1(){\n return isNaN(undefined)\n}\n\nfunction f0_9_1_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_1_3(){\n return isNaN(undefined)\n}\n\nfunction f0_9_1_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_1_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_1_6(){\n return Math.random()\n}\n\nfunction f0_9_1_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_1_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_1_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_1_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_1_11(){\n return isNaN(undefined)\n}\n\nfunction f0_9_1(){\n f0_9_1_0();\n f0_9_1_1();\n f0_9_1_2();\n f0_9_1_3();\n f0_9_1_4();\n f0_9_1_5();\n f0_9_1_6();\n f0_9_1_7();\n f0_9_1_8();\n f0_9_1_9();\n f0_9_1_10();\n f0_9_1_11();\n}\n\nfunction f0_9_2_0(){\n return isNaN(undefined)\n}\n\nfunction f0_9_2_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_2_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_2_3(){\n return Math.random()\n}\n\nfunction f0_9_2_4(){\n return isNaN(undefined)\n}\n\nfunction f0_9_2_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_2_6(){\n return isNaN(undefined)\n}\n\nfunction f0_9_2_7(){\n return Math.random()\n}\n\nfunction f0_9_2_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_2_9(){\n return isNaN(undefined)\n}\n\nfunction f0_9_2_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_2_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_2(){\n f0_9_2_0();\n f0_9_2_1();\n f0_9_2_2();\n f0_9_2_3();\n f0_9_2_4();\n f0_9_2_5();\n f0_9_2_6();\n f0_9_2_7();\n f0_9_2_8();\n f0_9_2_9();\n f0_9_2_10();\n f0_9_2_11();\n}\n\nfunction f0_9_3_0(){\n return Math.random()\n}\n\nfunction f0_9_3_1(){\n return isNaN(undefined)\n}\n\nfunction f0_9_3_2(){\n return Math.random()\n}\n\nfunction f0_9_3_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_3_4(){\n return Math.random()\n}\n\nfunction f0_9_3_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_3_6(){\n return Math.random()\n}\n\nfunction f0_9_3_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_3_8(){\n return Math.random()\n}\n\nfunction f0_9_3_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_3_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_3_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_3(){\n f0_9_3_0();\n f0_9_3_1();\n f0_9_3_2();\n f0_9_3_3();\n f0_9_3_4();\n f0_9_3_5();\n f0_9_3_6();\n f0_9_3_7();\n f0_9_3_8();\n f0_9_3_9();\n f0_9_3_10();\n f0_9_3_11();\n}\n\nfunction f0_9_4_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_4_1(){\n return Math.random()\n}\n\nfunction f0_9_4_2(){\n return Math.random()\n}\n\nfunction f0_9_4_3(){\n return Math.random()\n}\n\nfunction f0_9_4_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_4_5(){\n return isNaN(undefined)\n}\n\nfunction f0_9_4_6(){\n return isNaN(undefined)\n}\n\nfunction f0_9_4_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_4_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_4_9(){\n return Math.random()\n}\n\nfunction f0_9_4_10(){\n return Math.random()\n}\n\nfunction f0_9_4_11(){\n return isNaN(undefined)\n}\n\nfunction f0_9_4(){\n f0_9_4_0();\n f0_9_4_1();\n f0_9_4_2();\n f0_9_4_3();\n f0_9_4_4();\n f0_9_4_5();\n f0_9_4_6();\n f0_9_4_7();\n f0_9_4_8();\n f0_9_4_9();\n f0_9_4_10();\n f0_9_4_11();\n}\n\nfunction f0_9_5_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_5_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_5_2(){\n return isNaN(undefined)\n}\n\nfunction f0_9_5_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_5_4(){\n return Math.random()\n}\n\nfunction f0_9_5_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_5_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_5_7(){\n return isNaN(undefined)\n}\n\nfunction f0_9_5_8(){\n return isNaN(undefined)\n}\n\nfunction f0_9_5_9(){\n return Math.random()\n}\n\nfunction f0_9_5_10(){\n return isNaN(undefined)\n}\n\nfunction f0_9_5_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_5(){\n f0_9_5_0();\n f0_9_5_1();\n f0_9_5_2();\n f0_9_5_3();\n f0_9_5_4();\n f0_9_5_5();\n f0_9_5_6();\n f0_9_5_7();\n f0_9_5_8();\n f0_9_5_9();\n f0_9_5_10();\n f0_9_5_11();\n}\n\nfunction f0_9_6_0(){\n return Math.random()\n}\n\nfunction f0_9_6_1(){\n return isNaN(undefined)\n}\n\nfunction f0_9_6_2(){\n return isNaN(undefined)\n}\n\nfunction f0_9_6_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_6_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_6_5(){\n return Math.random()\n}\n\nfunction f0_9_6_6(){\n return Math.random()\n}\n\nfunction f0_9_6_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_6_8(){\n return isNaN(undefined)\n}\n\nfunction f0_9_6_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_6_10(){\n return Math.random()\n}\n\nfunction f0_9_6_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_6(){\n f0_9_6_0();\n f0_9_6_1();\n f0_9_6_2();\n f0_9_6_3();\n f0_9_6_4();\n f0_9_6_5();\n f0_9_6_6();\n f0_9_6_7();\n f0_9_6_8();\n f0_9_6_9();\n f0_9_6_10();\n f0_9_6_11();\n}\n\nfunction f0_9_7_0(){\n return Math.random()\n}\n\nfunction f0_9_7_1(){\n return Math.random()\n}\n\nfunction f0_9_7_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_7_3(){\n return isNaN(undefined)\n}\n\nfunction f0_9_7_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_7_5(){\n return isNaN(undefined)\n}\n\nfunction f0_9_7_6(){\n return Math.random()\n}\n\nfunction f0_9_7_7(){\n return isNaN(undefined)\n}\n\nfunction f0_9_7_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_7_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_7_10(){\n return Math.random()\n}\n\nfunction f0_9_7_11(){\n return isNaN(undefined)\n}\n\nfunction f0_9_7(){\n f0_9_7_0();\n f0_9_7_1();\n f0_9_7_2();\n f0_9_7_3();\n f0_9_7_4();\n f0_9_7_5();\n f0_9_7_6();\n f0_9_7_7();\n f0_9_7_8();\n f0_9_7_9();\n f0_9_7_10();\n f0_9_7_11();\n}\n\nfunction f0_9_8_0(){\n return isNaN(undefined)\n}\n\nfunction f0_9_8_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_8_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_8_3(){\n return isNaN(undefined)\n}\n\nfunction f0_9_8_4(){\n return isNaN(undefined)\n}\n\nfunction f0_9_8_5(){\n return Math.random()\n}\n\nfunction f0_9_8_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_8_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_8_8(){\n return Math.random()\n}\n\nfunction f0_9_8_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_8_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_8_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_8(){\n f0_9_8_0();\n f0_9_8_1();\n f0_9_8_2();\n f0_9_8_3();\n f0_9_8_4();\n f0_9_8_5();\n f0_9_8_6();\n f0_9_8_7();\n f0_9_8_8();\n f0_9_8_9();\n f0_9_8_10();\n f0_9_8_11();\n}\n\nfunction f0_9_9_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_9_1(){\n return isNaN(undefined)\n}\n\nfunction f0_9_9_2(){\n return Math.random()\n}\n\nfunction f0_9_9_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_9_4(){\n return Math.random()\n}\n\nfunction f0_9_9_5(){\n return isNaN(undefined)\n}\n\nfunction f0_9_9_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_9_7(){\n return isNaN(undefined)\n}\n\nfunction f0_9_9_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_9_9(){\n return isNaN(undefined)\n}\n\nfunction f0_9_9_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_9_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_9(){\n f0_9_9_0();\n f0_9_9_1();\n f0_9_9_2();\n f0_9_9_3();\n f0_9_9_4();\n f0_9_9_5();\n f0_9_9_6();\n f0_9_9_7();\n f0_9_9_8();\n f0_9_9_9();\n f0_9_9_10();\n f0_9_9_11();\n}\n\nfunction f0_9_10_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_10_1(){\n return isNaN(undefined)\n}\n\nfunction f0_9_10_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_10_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_10_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_10_5(){\n return isNaN(undefined)\n}\n\nfunction f0_9_10_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_10_7(){\n return isNaN(undefined)\n}\n\nfunction f0_9_10_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_10_9(){\n return isNaN(undefined)\n}\n\nfunction f0_9_10_10(){\n return isNaN(undefined)\n}\n\nfunction f0_9_10_11(){\n return isNaN(undefined)\n}\n\nfunction f0_9_10(){\n f0_9_10_0();\n f0_9_10_1();\n f0_9_10_2();\n f0_9_10_3();\n f0_9_10_4();\n f0_9_10_5();\n f0_9_10_6();\n f0_9_10_7();\n f0_9_10_8();\n f0_9_10_9();\n f0_9_10_10();\n f0_9_10_11();\n}\n\nfunction f0_9_11_0(){\n return Math.random()\n}\n\nfunction f0_9_11_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_11_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_11_3(){\n return isNaN(undefined)\n}\n\nfunction f0_9_11_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_11_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_9_11_6(){\n return isNaN(undefined)\n}\n\nfunction f0_9_11_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_11_8(){\n return Math.random()\n}\n\nfunction f0_9_11_9(){\n return Math.random()\n}\n\nfunction f0_9_11_10(){\n return isNaN(undefined)\n}\n\nfunction f0_9_11_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_9_11(){\n f0_9_11_0();\n f0_9_11_1();\n f0_9_11_2();\n f0_9_11_3();\n f0_9_11_4();\n f0_9_11_5();\n f0_9_11_6();\n f0_9_11_7();\n f0_9_11_8();\n f0_9_11_9();\n f0_9_11_10();\n f0_9_11_11();\n}\n\nfunction f0_9(){\n f0_9_0();\n f0_9_1();\n f0_9_2();\n f0_9_3();\n f0_9_4();\n f0_9_5();\n f0_9_6();\n f0_9_7();\n f0_9_8();\n f0_9_9();\n f0_9_10();\n f0_9_11();\n\n}\n\nfunction f0_10_0_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_0_1(){\n return isNaN(undefined)\n}\n\nfunction f0_10_0_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_0_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_0_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_0_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_0_6(){\n return isNaN(undefined)\n}\n\nfunction f0_10_0_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_0_8(){\n return Math.random()\n}\n\nfunction f0_10_0_9(){\n return isNaN(undefined)\n}\n\nfunction f0_10_0_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_0_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_0(){\n f0_10_0_0();\n f0_10_0_1();\n f0_10_0_2();\n f0_10_0_3();\n f0_10_0_4();\n f0_10_0_5();\n f0_10_0_6();\n f0_10_0_7();\n f0_10_0_8();\n f0_10_0_9();\n f0_10_0_10();\n f0_10_0_11();\n}\n\nfunction f0_10_1_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_1_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_1_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_1_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_1_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_1_5(){\n return Math.random()\n}\n\nfunction f0_10_1_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_1_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_1_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_1_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_1_10(){\n return Math.random()\n}\n\nfunction f0_10_1_11(){\n return isNaN(undefined)\n}\n\nfunction f0_10_1(){\n f0_10_1_0();\n f0_10_1_1();\n f0_10_1_2();\n f0_10_1_3();\n f0_10_1_4();\n f0_10_1_5();\n f0_10_1_6();\n f0_10_1_7();\n f0_10_1_8();\n f0_10_1_9();\n f0_10_1_10();\n f0_10_1_11();\n}\n\nfunction f0_10_2_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_2_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_2_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_2_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_2_4(){\n return Math.random()\n}\n\nfunction f0_10_2_5(){\n return Math.random()\n}\n\nfunction f0_10_2_6(){\n return Math.random()\n}\n\nfunction f0_10_2_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_2_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_2_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_2_10(){\n return Math.random()\n}\n\nfunction f0_10_2_11(){\n return isNaN(undefined)\n}\n\nfunction f0_10_2(){\n f0_10_2_0();\n f0_10_2_1();\n f0_10_2_2();\n f0_10_2_3();\n f0_10_2_4();\n f0_10_2_5();\n f0_10_2_6();\n f0_10_2_7();\n f0_10_2_8();\n f0_10_2_9();\n f0_10_2_10();\n f0_10_2_11();\n}\n\nfunction f0_10_3_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_3_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_3_2(){\n return isNaN(undefined)\n}\n\nfunction f0_10_3_3(){\n return isNaN(undefined)\n}\n\nfunction f0_10_3_4(){\n return isNaN(undefined)\n}\n\nfunction f0_10_3_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_3_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_3_7(){\n return Math.random()\n}\n\nfunction f0_10_3_8(){\n return isNaN(undefined)\n}\n\nfunction f0_10_3_9(){\n return isNaN(undefined)\n}\n\nfunction f0_10_3_10(){\n return Math.random()\n}\n\nfunction f0_10_3_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_3(){\n f0_10_3_0();\n f0_10_3_1();\n f0_10_3_2();\n f0_10_3_3();\n f0_10_3_4();\n f0_10_3_5();\n f0_10_3_6();\n f0_10_3_7();\n f0_10_3_8();\n f0_10_3_9();\n f0_10_3_10();\n f0_10_3_11();\n}\n\nfunction f0_10_4_0(){\n return Math.random()\n}\n\nfunction f0_10_4_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_4_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_4_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_4_4(){\n return isNaN(undefined)\n}\n\nfunction f0_10_4_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_4_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_4_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_4_8(){\n return isNaN(undefined)\n}\n\nfunction f0_10_4_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_4_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_4_11(){\n return Math.random()\n}\n\nfunction f0_10_4(){\n f0_10_4_0();\n f0_10_4_1();\n f0_10_4_2();\n f0_10_4_3();\n f0_10_4_4();\n f0_10_4_5();\n f0_10_4_6();\n f0_10_4_7();\n f0_10_4_8();\n f0_10_4_9();\n f0_10_4_10();\n f0_10_4_11();\n}\n\nfunction f0_10_5_0(){\n return Math.random()\n}\n\nfunction f0_10_5_1(){\n return Math.random()\n}\n\nfunction f0_10_5_2(){\n return isNaN(undefined)\n}\n\nfunction f0_10_5_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_5_4(){\n return isNaN(undefined)\n}\n\nfunction f0_10_5_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_5_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_5_7(){\n return isNaN(undefined)\n}\n\nfunction f0_10_5_8(){\n return isNaN(undefined)\n}\n\nfunction f0_10_5_9(){\n return Math.random()\n}\n\nfunction f0_10_5_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_5_11(){\n return Math.random()\n}\n\nfunction f0_10_5(){\n f0_10_5_0();\n f0_10_5_1();\n f0_10_5_2();\n f0_10_5_3();\n f0_10_5_4();\n f0_10_5_5();\n f0_10_5_6();\n f0_10_5_7();\n f0_10_5_8();\n f0_10_5_9();\n f0_10_5_10();\n f0_10_5_11();\n}\n\nfunction f0_10_6_0(){\n return Math.random()\n}\n\nfunction f0_10_6_1(){\n return Math.random()\n}\n\nfunction f0_10_6_2(){\n return Math.random()\n}\n\nfunction f0_10_6_3(){\n return isNaN(undefined)\n}\n\nfunction f0_10_6_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_6_5(){\n return isNaN(undefined)\n}\n\nfunction f0_10_6_6(){\n return isNaN(undefined)\n}\n\nfunction f0_10_6_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_6_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_6_9(){\n return isNaN(undefined)\n}\n\nfunction f0_10_6_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_6_11(){\n return Math.random()\n}\n\nfunction f0_10_6(){\n f0_10_6_0();\n f0_10_6_1();\n f0_10_6_2();\n f0_10_6_3();\n f0_10_6_4();\n f0_10_6_5();\n f0_10_6_6();\n f0_10_6_7();\n f0_10_6_8();\n f0_10_6_9();\n f0_10_6_10();\n f0_10_6_11();\n}\n\nfunction f0_10_7_0(){\n return Math.random()\n}\n\nfunction f0_10_7_1(){\n return Math.random()\n}\n\nfunction f0_10_7_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_7_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_7_4(){\n return isNaN(undefined)\n}\n\nfunction f0_10_7_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_7_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_7_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_7_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_7_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_7_10(){\n return isNaN(undefined)\n}\n\nfunction f0_10_7_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_7(){\n f0_10_7_0();\n f0_10_7_1();\n f0_10_7_2();\n f0_10_7_3();\n f0_10_7_4();\n f0_10_7_5();\n f0_10_7_6();\n f0_10_7_7();\n f0_10_7_8();\n f0_10_7_9();\n f0_10_7_10();\n f0_10_7_11();\n}\n\nfunction f0_10_8_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_8_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_8_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_8_3(){\n return isNaN(undefined)\n}\n\nfunction f0_10_8_4(){\n return isNaN(undefined)\n}\n\nfunction f0_10_8_5(){\n return Math.random()\n}\n\nfunction f0_10_8_6(){\n return isNaN(undefined)\n}\n\nfunction f0_10_8_7(){\n return isNaN(undefined)\n}\n\nfunction f0_10_8_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_8_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_8_10(){\n return isNaN(undefined)\n}\n\nfunction f0_10_8_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_8(){\n f0_10_8_0();\n f0_10_8_1();\n f0_10_8_2();\n f0_10_8_3();\n f0_10_8_4();\n f0_10_8_5();\n f0_10_8_6();\n f0_10_8_7();\n f0_10_8_8();\n f0_10_8_9();\n f0_10_8_10();\n f0_10_8_11();\n}\n\nfunction f0_10_9_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_9_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_9_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_9_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_9_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_9_5(){\n return Math.random()\n}\n\nfunction f0_10_9_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_9_7(){\n return isNaN(undefined)\n}\n\nfunction f0_10_9_8(){\n return Math.random()\n}\n\nfunction f0_10_9_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_9_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_9_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_9(){\n f0_10_9_0();\n f0_10_9_1();\n f0_10_9_2();\n f0_10_9_3();\n f0_10_9_4();\n f0_10_9_5();\n f0_10_9_6();\n f0_10_9_7();\n f0_10_9_8();\n f0_10_9_9();\n f0_10_9_10();\n f0_10_9_11();\n}\n\nfunction f0_10_10_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_10_1(){\n return Math.random()\n}\n\nfunction f0_10_10_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_10_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_10_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_10_5(){\n return isNaN(undefined)\n}\n\nfunction f0_10_10_6(){\n return Math.random()\n}\n\nfunction f0_10_10_7(){\n return Math.random()\n}\n\nfunction f0_10_10_8(){\n return Math.random()\n}\n\nfunction f0_10_10_9(){\n return isNaN(undefined)\n}\n\nfunction f0_10_10_10(){\n return Math.random()\n}\n\nfunction f0_10_10_11(){\n return isNaN(undefined)\n}\n\nfunction f0_10_10(){\n f0_10_10_0();\n f0_10_10_1();\n f0_10_10_2();\n f0_10_10_3();\n f0_10_10_4();\n f0_10_10_5();\n f0_10_10_6();\n f0_10_10_7();\n f0_10_10_8();\n f0_10_10_9();\n f0_10_10_10();\n f0_10_10_11();\n}\n\nfunction f0_10_11_0(){\n return isNaN(undefined)\n}\n\nfunction f0_10_11_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_11_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_11_3(){\n return isNaN(undefined)\n}\n\nfunction f0_10_11_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_11_5(){\n return Math.random()\n}\n\nfunction f0_10_11_6(){\n return isNaN(undefined)\n}\n\nfunction f0_10_11_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_11_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_10_11_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_11_10(){\n return isNaN(undefined)\n}\n\nfunction f0_10_11_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_10_11(){\n f0_10_11_0();\n f0_10_11_1();\n f0_10_11_2();\n f0_10_11_3();\n f0_10_11_4();\n f0_10_11_5();\n f0_10_11_6();\n f0_10_11_7();\n f0_10_11_8();\n f0_10_11_9();\n f0_10_11_10();\n f0_10_11_11();\n}\n\nfunction f0_10(){\n f0_10_0();\n f0_10_1();\n f0_10_2();\n f0_10_3();\n f0_10_4();\n f0_10_5();\n f0_10_6();\n f0_10_7();\n f0_10_8();\n f0_10_9();\n f0_10_10();\n f0_10_11();\n\n}\n\nfunction f0_11_0_0(){\n return Math.random()\n}\n\nfunction f0_11_0_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_0_2(){\n return isNaN(undefined)\n}\n\nfunction f0_11_0_3(){\n return Math.random()\n}\n\nfunction f0_11_0_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_0_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_0_6(){\n return isNaN(undefined)\n}\n\nfunction f0_11_0_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_0_8(){\n return Math.random()\n}\n\nfunction f0_11_0_9(){\n return Math.random()\n}\n\nfunction f0_11_0_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_0_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_0(){\n f0_11_0_0();\n f0_11_0_1();\n f0_11_0_2();\n f0_11_0_3();\n f0_11_0_4();\n f0_11_0_5();\n f0_11_0_6();\n f0_11_0_7();\n f0_11_0_8();\n f0_11_0_9();\n f0_11_0_10();\n f0_11_0_11();\n}\n\nfunction f0_11_1_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_1_1(){\n return Math.random()\n}\n\nfunction f0_11_1_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_1_3(){\n return Math.random()\n}\n\nfunction f0_11_1_4(){\n return isNaN(undefined)\n}\n\nfunction f0_11_1_5(){\n return Math.random()\n}\n\nfunction f0_11_1_6(){\n return isNaN(undefined)\n}\n\nfunction f0_11_1_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_1_8(){\n return Math.random()\n}\n\nfunction f0_11_1_9(){\n return isNaN(undefined)\n}\n\nfunction f0_11_1_10(){\n return isNaN(undefined)\n}\n\nfunction f0_11_1_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_1(){\n f0_11_1_0();\n f0_11_1_1();\n f0_11_1_2();\n f0_11_1_3();\n f0_11_1_4();\n f0_11_1_5();\n f0_11_1_6();\n f0_11_1_7();\n f0_11_1_8();\n f0_11_1_9();\n f0_11_1_10();\n f0_11_1_11();\n}\n\nfunction f0_11_2_0(){\n return Math.random()\n}\n\nfunction f0_11_2_1(){\n return isNaN(undefined)\n}\n\nfunction f0_11_2_2(){\n return isNaN(undefined)\n}\n\nfunction f0_11_2_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_2_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_2_5(){\n return isNaN(undefined)\n}\n\nfunction f0_11_2_6(){\n return Math.random()\n}\n\nfunction f0_11_2_7(){\n return Math.random()\n}\n\nfunction f0_11_2_8(){\n return Math.random()\n}\n\nfunction f0_11_2_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_2_10(){\n return isNaN(undefined)\n}\n\nfunction f0_11_2_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_2(){\n f0_11_2_0();\n f0_11_2_1();\n f0_11_2_2();\n f0_11_2_3();\n f0_11_2_4();\n f0_11_2_5();\n f0_11_2_6();\n f0_11_2_7();\n f0_11_2_8();\n f0_11_2_9();\n f0_11_2_10();\n f0_11_2_11();\n}\n\nfunction f0_11_3_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_3_1(){\n return Math.random()\n}\n\nfunction f0_11_3_2(){\n return isNaN(undefined)\n}\n\nfunction f0_11_3_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_3_4(){\n return Math.random()\n}\n\nfunction f0_11_3_5(){\n return Math.random()\n}\n\nfunction f0_11_3_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_3_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_3_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_3_9(){\n return Math.random()\n}\n\nfunction f0_11_3_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_3_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_3(){\n f0_11_3_0();\n f0_11_3_1();\n f0_11_3_2();\n f0_11_3_3();\n f0_11_3_4();\n f0_11_3_5();\n f0_11_3_6();\n f0_11_3_7();\n f0_11_3_8();\n f0_11_3_9();\n f0_11_3_10();\n f0_11_3_11();\n}\n\nfunction f0_11_4_0(){\n return isNaN(undefined)\n}\n\nfunction f0_11_4_1(){\n return Math.random()\n}\n\nfunction f0_11_4_2(){\n return Math.random()\n}\n\nfunction f0_11_4_3(){\n return Math.random()\n}\n\nfunction f0_11_4_4(){\n return Math.random()\n}\n\nfunction f0_11_4_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_4_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_4_7(){\n return Math.random()\n}\n\nfunction f0_11_4_8(){\n return Math.random()\n}\n\nfunction f0_11_4_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_4_10(){\n return Math.random()\n}\n\nfunction f0_11_4_11(){\n return isNaN(undefined)\n}\n\nfunction f0_11_4(){\n f0_11_4_0();\n f0_11_4_1();\n f0_11_4_2();\n f0_11_4_3();\n f0_11_4_4();\n f0_11_4_5();\n f0_11_4_6();\n f0_11_4_7();\n f0_11_4_8();\n f0_11_4_9();\n f0_11_4_10();\n f0_11_4_11();\n}\n\nfunction f0_11_5_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_5_1(){\n return Math.random()\n}\n\nfunction f0_11_5_2(){\n return isNaN(undefined)\n}\n\nfunction f0_11_5_3(){\n return isNaN(undefined)\n}\n\nfunction f0_11_5_4(){\n return Math.random()\n}\n\nfunction f0_11_5_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_5_6(){\n return Math.random()\n}\n\nfunction f0_11_5_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_5_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_5_9(){\n return Math.random()\n}\n\nfunction f0_11_5_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_5_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_5(){\n f0_11_5_0();\n f0_11_5_1();\n f0_11_5_2();\n f0_11_5_3();\n f0_11_5_4();\n f0_11_5_5();\n f0_11_5_6();\n f0_11_5_7();\n f0_11_5_8();\n f0_11_5_9();\n f0_11_5_10();\n f0_11_5_11();\n}\n\nfunction f0_11_6_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_6_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_6_2(){\n return isNaN(undefined)\n}\n\nfunction f0_11_6_3(){\n return isNaN(undefined)\n}\n\nfunction f0_11_6_4(){\n return isNaN(undefined)\n}\n\nfunction f0_11_6_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_6_6(){\n return Math.random()\n}\n\nfunction f0_11_6_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_6_8(){\n return Math.random()\n}\n\nfunction f0_11_6_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_6_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_6_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_6(){\n f0_11_6_0();\n f0_11_6_1();\n f0_11_6_2();\n f0_11_6_3();\n f0_11_6_4();\n f0_11_6_5();\n f0_11_6_6();\n f0_11_6_7();\n f0_11_6_8();\n f0_11_6_9();\n f0_11_6_10();\n f0_11_6_11();\n}\n\nfunction f0_11_7_0(){\n return isNaN(undefined)\n}\n\nfunction f0_11_7_1(){\n return Math.random()\n}\n\nfunction f0_11_7_2(){\n return Math.random()\n}\n\nfunction f0_11_7_3(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_7_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_7_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_7_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_7_7(){\n return Math.random()\n}\n\nfunction f0_11_7_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_7_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_7_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_7_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_7(){\n f0_11_7_0();\n f0_11_7_1();\n f0_11_7_2();\n f0_11_7_3();\n f0_11_7_4();\n f0_11_7_5();\n f0_11_7_6();\n f0_11_7_7();\n f0_11_7_8();\n f0_11_7_9();\n f0_11_7_10();\n f0_11_7_11();\n}\n\nfunction f0_11_8_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_8_1(){\n return isNaN(undefined)\n}\n\nfunction f0_11_8_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_8_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_8_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_8_5(){\n return Math.random()\n}\n\nfunction f0_11_8_6(){\n return Math.random()\n}\n\nfunction f0_11_8_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_8_8(){\n return isNaN(undefined)\n}\n\nfunction f0_11_8_9(){\n return isNaN(undefined)\n}\n\nfunction f0_11_8_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_8_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_8(){\n f0_11_8_0();\n f0_11_8_1();\n f0_11_8_2();\n f0_11_8_3();\n f0_11_8_4();\n f0_11_8_5();\n f0_11_8_6();\n f0_11_8_7();\n f0_11_8_8();\n f0_11_8_9();\n f0_11_8_10();\n f0_11_8_11();\n}\n\nfunction f0_11_9_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_9_1(){\n return Math.random()\n}\n\nfunction f0_11_9_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_9_3(){\n return Math.random()\n}\n\nfunction f0_11_9_4(){\n return isNaN(undefined)\n}\n\nfunction f0_11_9_5(){\n return Math.random()\n}\n\nfunction f0_11_9_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_9_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_9_8(){\n return Math.random()\n}\n\nfunction f0_11_9_9(){\n return isNaN(undefined)\n}\n\nfunction f0_11_9_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_9_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_9(){\n f0_11_9_0();\n f0_11_9_1();\n f0_11_9_2();\n f0_11_9_3();\n f0_11_9_4();\n f0_11_9_5();\n f0_11_9_6();\n f0_11_9_7();\n f0_11_9_8();\n f0_11_9_9();\n f0_11_9_10();\n f0_11_9_11();\n}\n\nfunction f0_11_10_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_10_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_10_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_10_3(){\n return isNaN(undefined)\n}\n\nfunction f0_11_10_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_10_5(){\n return isNaN(undefined)\n}\n\nfunction f0_11_10_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_10_7(){\n return isNaN(undefined)\n}\n\nfunction f0_11_10_8(){\n return Math.random()\n}\n\nfunction f0_11_10_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_10_10(){\n return isNaN(undefined)\n}\n\nfunction f0_11_10_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_10(){\n f0_11_10_0();\n f0_11_10_1();\n f0_11_10_2();\n f0_11_10_3();\n f0_11_10_4();\n f0_11_10_5();\n f0_11_10_6();\n f0_11_10_7();\n f0_11_10_8();\n f0_11_10_9();\n f0_11_10_10();\n f0_11_10_11();\n}\n\nfunction f0_11_11_0(){\n return Math.random()\n}\n\nfunction f0_11_11_1(){\n return isNaN(undefined)\n}\n\nfunction f0_11_11_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_11_3(){\n return isNaN(undefined)\n}\n\nfunction f0_11_11_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_11_5(){\n return isNaN(undefined)\n}\n\nfunction f0_11_11_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_11_7(){\n return isNaN(undefined)\n}\n\nfunction f0_11_11_8(){\n return Math.random()\n}\n\nfunction f0_11_11_9(){\n return Math.random()\n}\n\nfunction f0_11_11_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f0_11_11_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f0_11_11(){\n f0_11_11_0();\n f0_11_11_1();\n f0_11_11_2();\n f0_11_11_3();\n f0_11_11_4();\n f0_11_11_5();\n f0_11_11_6();\n f0_11_11_7();\n f0_11_11_8();\n f0_11_11_9();\n f0_11_11_10();\n f0_11_11_11();\n}\n\nfunction f0_11(){\n f0_11_0();\n f0_11_1();\n f0_11_2();\n f0_11_3();\n f0_11_4();\n f0_11_5();\n f0_11_6();\n f0_11_7();\n f0_11_8();\n f0_11_9();\n f0_11_10();\n f0_11_11();\n\n}\n\nfunction f0(){\n f0_0();\n f0_1();\n f0_2();\n f0_3();\n f0_4();\n f0_5();\n f0_6();\n f0_7();\n f0_8();\n f0_9();\n f0_10();\n f0_11();\n\n}\n\nfunction f2_0(){\n return Math.random()\n}\n\nfunction f2_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f2_2(){\n return isNaN(undefined)\n}\n\nfunction f2_3(){\n return isNaN(undefined)\n}\n\nfunction f2_4(){\n return isNaN(undefined)\n}\n\nfunction f2_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f2_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f2_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f2_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f2_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f2_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f2_11(){\n return isNaN(undefined)\n}\n\nfunction f1(){\n f1_0();\n f1_1();\n f1_2();\n f1_3();\n f1_4();\n f1_5();\n f1_6();\n f1_7();\n f1_8();\n f1_9();\n f1_10();\n f1_11();\n\n}\n\nfunction f1_0_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_0_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_0_2(){\n return Math.random()\n}\n\nfunction f1_0_3(){\n return isNaN(undefined)\n}\n\nfunction f1_0_4(){\n return isNaN(undefined)\n}\n\nfunction f1_0_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_0_6(){\n return isNaN(undefined)\n}\n\nfunction f1_0_7(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_0_8(){\n return isNaN(undefined)\n}\n\nfunction f1_0_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_0_10(){\n return Math.random()\n}\n\nfunction f1_0_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_0(){\n f1_0_0();\n f1_0_1();\n f1_0_2();\n f1_0_3();\n f1_0_4();\n f1_0_5();\n f1_0_6();\n f1_0_7();\n f1_0_8();\n f1_0_9();\n f1_0_10();\n f1_0_11();\n\n}\n\nfunction f1_1_0(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_1_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_1_2(){\n return isNaN(undefined)\n}\n\nfunction f1_1_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_1_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_1_5(){\n return Math.random()\n}\n\nfunction f1_1_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_1_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_1_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_1_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_1_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_1_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_1(){\n f1_1_0();\n f1_1_1();\n f1_1_2();\n f1_1_3();\n f1_1_4();\n f1_1_5();\n f1_1_6();\n f1_1_7();\n f1_1_8();\n f1_1_9();\n f1_1_10();\n f1_1_11();\n}\n\nfunction f1_2_0(){\n return Math.random()\n}\n\nfunction f1_2_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_2_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_2_3(){\n return isNaN(undefined)\n}\n\nfunction f1_2_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_2_5(){\n return Math.random()\n}\n\nfunction f1_2_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_2_7(){\n return isNaN(undefined)\n}\n\nfunction f1_2_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_2_9(){\n return Math.random()\n}\n\nfunction f1_2_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_2_11(){\n return Math.random()\n}\n\nfunction f1_2(){\n f1_2_0();\n f1_2_1();\n f1_2_2();\n f1_2_3();\n f1_2_4();\n f1_2_5();\n f1_2_6();\n f1_2_7();\n f1_2_8();\n f1_2_9();\n f1_2_10();\n f1_2_11();\n\n}\n\nfunction f1_3_0(){\n return Math.random()\n}\n\nfunction f1_3_1(){\n return isNaN(undefined)\n}\n\nfunction f1_3_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_3_3(){\n return isNaN(undefined)\n}\n\nfunction f1_3_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_3_5(){\n return isNaN(undefined)\n}\n\nfunction f1_3_6(){\n return Math.random()\n}\n\nfunction f1_3_7(){\n return Math.random()\n}\n\nfunction f1_3_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_3_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_3_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_3_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_3(){\n f1_3_0();\n f1_3_1();\n f1_3_2();\n f1_3_3();\n f1_3_4();\n f1_3_5();\n f1_3_6();\n f1_3_7();\n f1_3_8();\n f1_3_9();\n f1_3_10();\n f1_3_11();\n\n}\n\nfunction f1_4_0(){\n return isNaN(undefined)\n}\n\nfunction f1_4_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_4_2(){\n return isNaN(undefined)\n}\n\nfunction f1_4_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_4_4(){\n return Math.random()\n}\n\nfunction f1_4_5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_4_6(){\n return isNaN(undefined)\n}\n\nfunction f1_4_7(){\n return isNaN(undefined)\n}\n\nfunction f1_4_8(){\n return Math.random()\n}\n\nfunction f1_4_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_4_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_4_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_4(){\n f1_4_0();\n f1_4_1();\n f1_4_2();\n f1_4_3();\n f1_4_4();\n f1_4_5();\n f1_4_6();\n f1_4_7();\n f1_4_8();\n f1_4_9();\n f1_4_10();\n f1_4_11();\n\n}\n\nfunction f1_5_0(){\n return isNaN(undefined)\n}\n\nfunction f1_5_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_5_2(){\n return Math.random()\n}\n\nfunction f1_5_3(){\n return isNaN(undefined)\n}\n\nfunction f1_5_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_5_5(){\n return isNaN(undefined)\n}\n\nfunction f1_5_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_5_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_5_8(){\n return Math.random()\n}\n\nfunction f1_5_9(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_5_10(){\n return isNaN(undefined)\n}\n\nfunction f1_5_11(){\n return isNaN(undefined)\n}\n\nfunction f1_5(){\n f1_5_0();\n f1_5_1();\n f1_5_2();\n f1_5_3();\n f1_5_4();\n f1_5_5();\n f1_5_6();\n f1_5_7();\n f1_5_8();\n f1_5_9();\n f1_5_10();\n f1_5_11();\n\n}\n\nfunction f1_6_0(){\n return Math.random()\n}\n\nfunction f1_6_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_6_2(){\n return Math.random()\n}\n\nfunction f1_6_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_6_4(){\n return Math.random()\n}\n\nfunction f1_6_5(){\n return Math.random()\n}\n\nfunction f1_6_6(){\n return Math.random()\n}\n\nfunction f1_6_7(){\n return Math.random()\n}\n\nfunction f1_6_8(){\n return isNaN(undefined)\n}\n\nfunction f1_6_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_6_10(){\n return Math.random()\n}\n\nfunction f1_6_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_6(){\n f1_6_0();\n f1_6_1();\n f1_6_2();\n f1_6_3();\n f1_6_4();\n f1_6_5();\n f1_6_6();\n f1_6_7();\n f1_6_8();\n f1_6_9();\n f1_6_10();\n f1_6_11();\n\n}\n\nfunction f1_7_0(){\n return Math.random()\n}\n\nfunction f1_7_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_7_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_7_3(){\n return Math.random()\n}\n\nfunction f1_7_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_7_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_7_6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_7_7(){\n return isNaN(undefined)\n}\n\nfunction f1_7_8(){\n return isNaN(undefined)\n}\n\nfunction f1_7_9(){\n return isNaN(undefined)\n}\n\nfunction f1_7_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_7_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_7(){\n f1_7_0();\n f1_7_1();\n f1_7_2();\n f1_7_3();\n f1_7_4();\n f1_7_5();\n f1_7_6();\n f1_7_7();\n f1_7_8();\n f1_7_9();\n f1_7_10();\n f1_7_11();\n\n}\n\nfunction f1_8_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_8_1(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_8_2(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_8_3(){\n return isNaN(undefined)\n}\n\nfunction f1_8_4(){\n return isNaN(undefined)\n}\n\nfunction f1_8_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_8_6(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_8_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_8_8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_8_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_8_10(){\n return isNaN(undefined)\n}\n\nfunction f1_8_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_8(){\n f1_8_0();\n f1_8_1();\n f1_8_2();\n f1_8_3();\n f1_8_4();\n f1_8_5();\n f1_8_6();\n f1_8_7();\n f1_8_8();\n f1_8_9();\n f1_8_10();\n f1_8_11();\n\n}\n\nfunction f1_9_0(){\n return Math.random()\n}\n\nfunction f1_9_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_9_2(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_9_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_9_4(){\n return Math.random()\n}\n\nfunction f1_9_5(){\n return isNaN(undefined)\n}\n\nfunction f1_9_6(){\n return isNaN(undefined)\n}\n\nfunction f1_9_7(){\n return Math.random()\n}\n\nfunction f1_9_8(){\n return Math.random()\n}\n\nfunction f1_9_9(){\n return Math.random()\n}\n\nfunction f1_9_10(){\n return isNaN(undefined)\n}\n\nfunction f1_9_11(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_9(){\n f1_9_0();\n f1_9_1();\n f1_9_2();\n f1_9_3();\n f1_9_4();\n f1_9_5();\n f1_9_6();\n f1_9_7();\n f1_9_8();\n f1_9_9();\n f1_9_10();\n f1_9_11();\n\n}\n\nfunction f1_10_0(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_10_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_10_2(){\n return Math.random()\n}\n\nfunction f1_10_3(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_10_4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_10_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_10_6(){\n return Math.random()\n}\n\nfunction f1_10_7(){\n return Math.random()\n}\n\nfunction f1_10_8(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_10_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_10_10(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f1_10_11(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_10(){\n f1_10_0();\n f1_10_1();\n f1_10_2();\n f1_10_3();\n f1_10_4();\n f1_10_5();\n f1_10_6();\n f1_10_7();\n f1_10_8();\n f1_10_9();\n f1_10_10();\n f1_10_11();\n\n}\n\nfunction f1_11_0(){\n return isNaN(undefined)\n}\n\nfunction f1_11_1(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_11_2(){\n return isNaN(undefined)\n}\n\nfunction f1_11_3(){\n return isNaN(undefined)\n}\n\nfunction f1_11_4(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_11_5(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_11_6(){\n return Math.random()\n}\n\nfunction f1_11_7(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_11_8(){\n return Math.random()\n}\n\nfunction f1_11_9(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_11_10(){\n return encodeURIComponent(\",45098#\\\"¤#\\\"&¤/%\\\"Q\\\"\")\n}\n\nfunction f1_11_11(){\n return Math.random()\n}\n\nfunction f1_11(){\n f1_11_0();\n f1_11_1();\n f1_11_2();\n f1_11_3();\n f1_11_4();\n f1_11_5();\n f1_11_6();\n f1_11_7();\n f1_11_8();\n f1_11_9();\n f1_11_10();\n f1_11_11();\n}\n\nfunction f2(){\n f2_0();\n f2_1();\n f2_2();\n f2_3();\n f2_4();\n f2_5();\n f2_6();\n f2_7();\n f2_8();\n f2_9();\n f2_10();\n f2_11();\n\n}\n\nfunction f3(){\n return isNaN(undefined)\n}\n\nfunction f4(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f5(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f6(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f7(){\n return isNaN(undefined)\n}\n\nfunction f8(){\n return Math.max(Math.random(), Math.random())\n}\n\nfunction f9(){\n return isNaN(undefined)\n}\n\nfunction f10(){\n return isNaN(undefined)\n}\n\nfunction f11(){\n return isNaN(undefined)\n}\n\nexport function stepInTest(){\n\n f0();\n f1();\n f2();\n f3();\n f4();\n f5();\n f6();\n f7();\n f8();\n f9();\n f10();\n f11();\n console.log('Done!');\n\n}\n\nexport function debugStatement(){\n\n debugger;\n f0();\n f1();\n f2();\n f3();\n f4();\n f5();\n f6();\n f7();\n f8();\n f9();\n f10();\n f11();\n console.log('Done!');\n\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/step-in-test.js","function squareAndOne(arg){\n return (arg * arg) + 1;\n}\nfunction squareUntil(arg, limit){\n if(arg * arg >= limit){\n return arg * arg;\n }else{\n return squareUntil(arg * arg, limit);\n }\n}\n\nfunction addUntil(arg1, arg2, limit){\n if(arg1 + arg2 > limit){\n return arg1 + arg2;\n }else{\n return addUntil(arg1 + arg2, arg2, limit);\n }\n}\n\nfunction testStart(aArg) {\n var r = 10;\n var a = squareAndOne(r);\n var b = squareUntil(r, 99999999999); //recurses 3 times, returns on 4th call\n var c = addUntil(r, 5, 1050); // recurses 208 times and returns on the 209th call\n return a + b + c;\n}\n\nexport default testStart;\n\n\n\n// WEBPACK FOOTER //\n// ./src/step-over-test.js","function f0() {\n f1();\n return Math.random();\n}\n\nfunction f1() {\n f2();\n return Math.random();\n}\n\nfunction f2() {\n f3();\n return Math.random();\n}\n\nfunction f3() {\n f4();\n return Math.random();\n}\n\nfunction f4() {\n f5();\n return Math.random();\n}\n\nfunction f5() {\n f6();\n return Math.random();\n}\n\nfunction f6() {\n f7();\n return Math.random();\n}\n\nfunction f7() {\n f8();\n return Math.random();\n}\n\nfunction f8() {\n f9();\n return Math.random();\n}\n\nfunction f9() {\n f10();\n return Math.random();\n}\n\nfunction f10() {\n f11();\n return Math.random();\n}\n\nfunction f11() {\n f12();\n return Math.random();\n}\n\nfunction f12() {\n f13();\n return Math.random();\n}\n\nfunction f13() {\n f14();\n return Math.random();\n}\n\nfunction f14() {\n f15();\n return Math.random();\n}\n\nfunction f15() {\n f16();\n return Math.random();\n}\n\nfunction f16() {\n f17();\n return Math.random();\n}\n\nfunction f17() {\n f18();\n return Math.random();\n}\n\nfunction f18() {\n f19();\n return Math.random();\n}\n\nfunction f19() {\n f20();\n return Math.random();\n}\n\nfunction f20() {\n f21();\n return Math.random();\n}\n\nfunction f21() {\n f22();\n return Math.random();\n}\n\nfunction f22() {\n f23();\n return Math.random();\n}\n\nfunction f23() {\n f24();\n return Math.random();\n}\n\nfunction f24() {\n f25();\n return Math.random();\n}\n\nfunction f25() {\n f26();\n return Math.random();\n}\n\nfunction f26() {\n f27();\n return Math.random();\n}\n\nfunction f27() {\n f28();\n return Math.random();\n}\n\nfunction f28() {\n f29();\n return Math.random();\n}\n\nfunction f29() {\n f30();\n return Math.random();\n}\n\nfunction f30() {\n f31();\n return Math.random();\n}\n\nfunction f31() {\n f32();\n return Math.random();\n}\n\nfunction f32() {\n f33();\n return Math.random();\n}\n\nfunction f33() {\n f34();\n return Math.random();\n}\n\nfunction f34() {\n f35();\n return Math.random();\n}\n\nfunction f35() {\n f36();\n return Math.random();\n}\n\nfunction f36() {\n f37();\n return Math.random();\n}\n\nfunction f37() {\n f38();\n return Math.random();\n}\n\nfunction f38() {\n f39();\n return Math.random();\n}\n\nfunction f39() {\n f40();\n return Math.random();\n}\n\nfunction f40() {\n f41();\n return Math.random();\n}\n\nfunction f41() {\n f42();\n return Math.random();\n}\n\nfunction f42() {\n f43();\n return Math.random();\n}\n\nfunction f43() {\n f44();\n return Math.random();\n}\n\nfunction f44() {\n f45();\n return Math.random();\n}\n\nfunction f45() {\n f46();\n return Math.random();\n}\n\nfunction f46() {\n f47();\n return Math.random();\n}\n\nfunction f47() {\n f48();\n return Math.random();\n}\n\nfunction f48() {\n f49();\n return Math.random();\n}\n\nfunction f49() {\n f50();\n return Math.random();\n}\n\nfunction f50() {\n f51();\n return Math.random();\n}\n\nfunction f51() {\n f52();\n return Math.random();\n}\n\nfunction f52() {\n f53();\n return Math.random();\n}\n\nfunction f53() {\n f54();\n return Math.random();\n}\n\nfunction f54() {\n f55();\n return Math.random();\n}\n\nfunction f55() {\n f56();\n return Math.random();\n}\n\nfunction f56() {\n f57();\n return Math.random();\n}\n\nfunction f57() {\n f58();\n return Math.random();\n}\n\nfunction f58() {\n f59();\n return Math.random();\n}\n\nfunction f59() {\n f60();\n return Math.random();\n}\n\nfunction f60() {\n f61();\n return Math.random();\n}\n\nfunction f61() {\n f62();\n return Math.random();\n}\n\nfunction f62() {\n f63();\n return Math.random();\n}\n\nfunction f63() {\n f64();\n return Math.random();\n}\n\nfunction f64() {\n f65();\n return Math.random();\n}\n\nfunction f65() {\n f66();\n return Math.random();\n}\n\nfunction f66() {\n f67();\n return Math.random();\n}\n\nfunction f67() {\n f68();\n return Math.random();\n}\n\nfunction f68() {\n f69();\n return Math.random();\n}\n\nfunction f69() {\n f70();\n return Math.random();\n}\n\nfunction f70() {\n f71();\n return Math.random();\n}\n\nfunction f71() {\n f72();\n return Math.random();\n}\n\nfunction f72() {\n f73();\n return Math.random();\n}\n\nfunction f73() {\n f74();\n return Math.random();\n}\n\nfunction f74() {\n f75();\n return Math.random();\n}\n\nfunction f75() {\n f76();\n return Math.random();\n}\n\nfunction f76() {\n f77();\n return Math.random();\n}\n\nfunction f77() {\n f78();\n return Math.random();\n}\n\nfunction f78() {\n f79();\n return Math.random();\n}\n\nfunction f79() {\n f80();\n return Math.random();\n}\n\nfunction f80() {\n f81();\n return Math.random();\n}\n\nfunction f81() {\n f82();\n return Math.random();\n}\n\nfunction f82() {\n f83();\n return Math.random();\n}\n\nfunction f83() {\n f84();\n return Math.random();\n}\n\nfunction f84() {\n f85();\n return Math.random();\n}\n\nfunction f85() {\n f86();\n return Math.random();\n}\n\nfunction f86() {\n f87();\n return Math.random();\n}\n\nfunction f87() {\n f88();\n return Math.random();\n}\n\nfunction f88() {\n f89();\n return Math.random();\n}\n\nfunction f89() {\n f90();\n return Math.random();\n}\n\nfunction f90() {\n f91();\n return Math.random();\n}\n\nfunction f91() {\n f92();\n return Math.random();\n}\n\nfunction f92() {\n f93();\n return Math.random();\n}\n\nfunction f93() {\n f94();\n return Math.random();\n}\n\nfunction f94() {\n f95();\n return Math.random();\n}\n\nfunction f95() {\n f96();\n return Math.random();\n}\n\nfunction f96() {\n f97();\n return Math.random();\n}\n\nfunction f97() {\n f98();\n return Math.random();\n}\n\nfunction f98() {\n f99();\n return Math.random();\n}\n\nfunction f99() {\n f100();\n return Math.random();\n}\n\n\nfunction f100() {\n f101();\n return Math.random();\n}\n\nfunction f101() {\n f102();\n return Math.random();\n}\n\nfunction f102() {\n f103();\n return Math.random();\n}\n\nfunction f103() {\n f104();\n return Math.random();\n}\n\nfunction f104() {\n f105();\n return Math.random();\n}\n\nfunction f105() {\n f106();\n return Math.random();\n}\n\nfunction f106() {\n f107();\n return Math.random();\n}\n\nfunction f107() {\n f108();\n return Math.random();\n}\n\nfunction f108() {\n f109();\n return Math.random();\n}\n\nfunction f109() {\n f110();\n return Math.random();\n}\n\nfunction f110() {\n f111();\n return Math.random();\n}\n\nfunction f111() {\n f112();\n return Math.random();\n}\n\nfunction f112() {\n f113();\n return Math.random();\n}\n\nfunction f113() {\n f114();\n return Math.random();\n}\n\nfunction f114() {\n f115();\n return Math.random();\n}\n\nfunction f115() {\n f116();\n return Math.random();\n}\n\nfunction f116() {\n f117();\n return Math.random();\n}\n\nfunction f117() {\n f118();\n return Math.random();\n}\n\nfunction f118() {\n f119();\n return Math.random();\n}\n\nfunction f119() {\n f120();\n return Math.random();\n}\n\nfunction f120() {\n f121();\n return Math.random();\n}\n\nfunction f121() {\n f122();\n return Math.random();\n}\n\nfunction f122() {\n f123();\n return Math.random();\n}\n\nfunction f123() {\n f124();\n return Math.random();\n}\n\nfunction f124() {\n f125();\n return Math.random();\n}\n\nfunction f125() {\n f126();\n return Math.random();\n}\n\nfunction f126() {\n f127();\n return Math.random();\n}\n\nfunction f127() {\n f128();\n return Math.random();\n}\n\nfunction f128() {\n f129();\n return Math.random();\n}\n\nfunction f129() {\n f130();\n return Math.random();\n}\n\nfunction f130() {\n f131();\n return Math.random();\n}\n\nfunction f131() {\n f132();\n return Math.random();\n}\n\nfunction f132() {\n f133();\n return Math.random();\n}\n\nfunction f133() {\n f134();\n return Math.random();\n}\n\nfunction f134() {\n f135();\n return Math.random();\n}\n\nfunction f135() {\n f136();\n return Math.random();\n}\n\nfunction f136() {\n f137();\n return Math.random();\n}\n\nfunction f137() {\n f138();\n return Math.random();\n}\n\nfunction f138() {\n f139();\n return Math.random();\n}\n\nfunction f139() {\n f140();\n return Math.random();\n}\n\nfunction f140() {\n f141();\n return Math.random();\n}\n\nfunction f141() {\n f142();\n return Math.random();\n}\n\nfunction f142() {\n f143();\n return Math.random();\n}\n\nfunction f143() {\n f144();\n return Math.random();\n}\n\nfunction f144() {\n f145();\n return Math.random();\n}\n\nfunction f145() {\n f146();\n return Math.random();\n}\n\nfunction f146() {\n f147();\n return Math.random();\n}\n\nfunction f147() {\n f148();\n return Math.random();\n}\n\nfunction f148() {\n f149();\n return Math.random();\n}\n\nfunction f149() {\n f150();\n return Math.random();\n}\n\nfunction f150() {\n f151();\n return Math.random();\n}\n\nfunction f151() {\n f152();\n return Math.random();\n}\n\nfunction f152() {\n f153();\n return Math.random();\n}\n\nfunction f153() {\n f154();\n return Math.random();\n}\n\nfunction f154() {\n f155();\n return Math.random();\n}\n\nfunction f155() {\n f156();\n return Math.random();\n}\n\nfunction f156() {\n f157();\n return Math.random();\n}\n\nfunction f157() {\n f158();\n return Math.random();\n}\n\nfunction f158() {\n f159();\n return Math.random();\n}\n\nfunction f159() {\n f160();\n return Math.random();\n}\n\nfunction f160() {\n f161();\n return Math.random();\n}\n\nfunction f161() {\n f162();\n return Math.random();\n}\n\nfunction f162() {\n f163();\n return Math.random();\n}\n\nfunction f163() {\n f164();\n return Math.random();\n}\n\nfunction f164() {\n f165();\n return Math.random();\n}\n\nfunction f165() {\n f166();\n return Math.random();\n}\n\nfunction f166() {\n f167();\n return Math.random();\n}\n\nfunction f167() {\n f168();\n return Math.random();\n}\n\nfunction f168() {\n f169();\n return Math.random();\n}\n\nfunction f169() {\n f170();\n return Math.random();\n}\n\nfunction f170() {\n f171();\n return Math.random();\n}\n\nfunction f171() {\n f172();\n return Math.random();\n}\n\nfunction f172() {\n f173();\n return Math.random();\n}\n\nfunction f173() {\n f174();\n return Math.random();\n}\n\nfunction f174() {\n f175();\n return Math.random();\n}\n\nfunction f175() {\n f176();\n return Math.random();\n}\n\nfunction f176() {\n f177();\n return Math.random();\n}\n\nfunction f177() {\n f178();\n return Math.random();\n}\n\nfunction f178() {\n f179();\n return Math.random();\n}\n\nfunction f179() {\n f180();\n return Math.random();\n}\n\nfunction f180() {\n f181();\n return Math.random();\n}\n\nfunction f181() {\n f182();\n return Math.random();\n}\n\nfunction f182() {\n f183();\n return Math.random();\n}\n\nfunction f183() {\n f184();\n return Math.random();\n}\n\nfunction f184() {\n f185();\n return Math.random();\n}\n\nfunction f185() {\n f186();\n return Math.random();\n}\n\nfunction f186() {\n f187();\n return Math.random();\n}\n\nfunction f187() {\n f188();\n return Math.random();\n}\n\nfunction f188() {\n f189();\n return Math.random();\n}\n\nfunction f189() {\n f190();\n return Math.random();\n}\n\nfunction f190() {\n f191();\n return Math.random();\n}\n\nfunction f191() {\n f192();\n return Math.random();\n}\n\nfunction f192() {\n f193();\n return Math.random();\n}\n\nfunction f193() {\n f194();\n return Math.random();\n}\n\nfunction f194() {\n f195();\n return Math.random();\n}\n\nfunction f195() {\n f196();\n return Math.random();\n}\n\nfunction f196() {\n f197();\n return Math.random();\n}\n\nfunction f197() {\n f198();\n return Math.random();\n}\n\nfunction f198() {\n f199();\n return Math.random();\n}\n\nfunction f199() {\n return Math.random();\n}\n\nexport default f0;\n\n\n\n// WEBPACK FOOTER //\n// ./src/step-out-test.js"],"sourceRoot":""} From ff7771db98062bbc5042fd3d852ba6b1b4ed0c9f Mon Sep 17 00:00:00 2001 From: Kartikaya Gupta Date: Wed, 7 Mar 2018 10:15:43 -0500 Subject: [PATCH 10/65] Bug 1442422 - Update webrender to commit 0da6c839b3a0e165f1115fb9fe286be7540c24ed. r=jrmuizel MozReview-Commit-ID: DmcL7siJnZ2 --HG-- extra : rebase_source : 62cf0b5cacd771b0c97a4282761fcf0edc3cf3ef --- gfx/webrender/Cargo.toml | 2 +- gfx/webrender/res/prim_shared.glsl | 30 +++++- gfx/webrender/src/clip.rs | 5 - gfx/webrender/src/clip_scroll_node.rs | 9 ++ gfx/webrender/src/display_list_flattener.rs | 48 +++++----- gfx/webrender/src/gpu_types.rs | 6 +- gfx/webrender/src/picture.rs | 30 ++++-- gfx/webrender/src/prim_store.rs | 18 ++-- gfx/webrender/src/render_backend.rs | 92 ++++++++++--------- gfx/webrender/src/resource_cache.rs | 3 - gfx/webrender/src/scene.rs | 1 + gfx/webrender/src/util.rs | 2 +- .../tests/angle_shader_validation.rs | 6 +- gfx/webrender_bindings/revision.txt | 2 +- 14 files changed, 141 insertions(+), 113 deletions(-) diff --git a/gfx/webrender/Cargo.toml b/gfx/webrender/Cargo.toml index 72bbc871ba28..c3fa393dddf6 100644 --- a/gfx/webrender/Cargo.toml +++ b/gfx/webrender/Cargo.toml @@ -40,7 +40,7 @@ base64 = { optional = true, version = "0.3.0" } ron = { optional = true, version = "0.1.7" } [dev-dependencies] -angle = {git = "https://github.com/servo/angle", branch = "servo"} +mozangle = "0.1" env_logger = "0.5" rand = "0.3" # for the benchmarks glutin = "0.12" # for the example apps diff --git a/gfx/webrender/res/prim_shared.glsl b/gfx/webrender/res/prim_shared.glsl index 025b2262330f..2d4881ec98fb 100644 --- a/gfx/webrender/res/prim_shared.glsl +++ b/gfx/webrender/res/prim_shared.glsl @@ -71,7 +71,7 @@ vec4[2] fetch_from_resource_cache_2(int address) { #ifdef WR_VERTEX_SHADER -#define VECS_PER_CLIP_SCROLL_NODE 5 +#define VECS_PER_CLIP_SCROLL_NODE 9 #define VECS_PER_LOCAL_CLIP_RECT 1 #define VECS_PER_RENDER_TASK 3 #define VECS_PER_PRIM_HEADER 2 @@ -86,6 +86,16 @@ uniform HIGHP_SAMPLER_FLOAT sampler2D sRenderTasks; in ivec4 aData0; in ivec4 aData1; +// Work around Angle bug that forgets to update sampler metadata, +// by making the use of those samplers uniform across programs. +// https://github.com/servo/webrender/wiki/Driver-issues#texturesize-in-vertex-shaders +void markCacheTexturesUsed() { + vec2 size = vec2(textureSize(sCacheA8, 0)) + vec2(textureSize(sCacheRGBA8, 0)); + if (size.x > 1000000.0) { + gl_Position = vec4(0.0); + } +} + // get_fetch_uv is a macro to work around a macOS Intel driver parsing bug. // TODO: convert back to a function once the driver issues are resolved, if ever. // https://github.com/servo/webrender/pull/623 @@ -154,6 +164,7 @@ vec4 fetch_from_resource_cache_1(int address) { struct ClipScrollNode { mat4 transform; + mat4 inv_transform; bool is_axis_aligned; }; @@ -166,13 +177,19 @@ ClipScrollNode fetch_clip_scroll_node(int index) { // of OSX. ivec2 uv = get_fetch_uv(index, VECS_PER_CLIP_SCROLL_NODE); ivec2 uv0 = ivec2(uv.x + 0, uv.y); + ivec2 uv1 = ivec2(uv.x + 8, uv.y); node.transform[0] = TEXEL_FETCH(sClipScrollNodes, uv0, 0, ivec2(0, 0)); node.transform[1] = TEXEL_FETCH(sClipScrollNodes, uv0, 0, ivec2(1, 0)); node.transform[2] = TEXEL_FETCH(sClipScrollNodes, uv0, 0, ivec2(2, 0)); node.transform[3] = TEXEL_FETCH(sClipScrollNodes, uv0, 0, ivec2(3, 0)); - vec4 misc = TEXEL_FETCH(sClipScrollNodes, uv0, 0, ivec2(4, 0)); + node.inv_transform[0] = TEXEL_FETCH(sClipScrollNodes, uv0, 0, ivec2(4, 0)); + node.inv_transform[1] = TEXEL_FETCH(sClipScrollNodes, uv0, 0, ivec2(5, 0)); + node.inv_transform[2] = TEXEL_FETCH(sClipScrollNodes, uv0, 0, ivec2(6, 0)); + node.inv_transform[3] = TEXEL_FETCH(sClipScrollNodes, uv0, 0, ivec2(7, 0)); + + vec4 misc = TEXEL_FETCH(sClipScrollNodes, uv1, 0, ivec2(0, 0)); node.is_axis_aligned = misc.x == 0.0; return node; @@ -358,6 +375,8 @@ PrimitiveInstance fetch_prim_instance() { pi.user_data1 = aData1.z; pi.user_data2 = aData1.w; + markCacheTexturesUsed(); + return pi; } @@ -385,6 +404,8 @@ CompositeInstance fetch_composite_instance() { ci.user_data2 = aData1.z; ci.user_data3 = aData1.w; + markCacheTexturesUsed(); + return ci; } @@ -476,9 +497,8 @@ vec4 get_node_pos(vec2 pos, ClipScrollNode node) { vec3 a = ah.xyz / ah.w; // get the normal to the scroll node plane - mat4 inv_transform = inverse(node.transform); - vec3 n = transpose(mat3(inv_transform)) * vec3(0.0, 0.0, 1.0); - return untransform(pos, n, a, inv_transform); + vec3 n = transpose(mat3(node.inv_transform)) * vec3(0.0, 0.0, 1.0); + return untransform(pos, n, a, node.inv_transform); } // Compute a snapping offset in world space (adjusted to pixel ratio), diff --git a/gfx/webrender/src/clip.rs b/gfx/webrender/src/clip.rs index 7a42588fc59f..7506af2f8ccd 100644 --- a/gfx/webrender/src/clip.rs +++ b/gfx/webrender/src/clip.rs @@ -245,11 +245,6 @@ impl ClipSources { } } - /// Whether or not this ClipSources has any clips (does any clipping). - pub fn has_clips(&self) -> bool { - !self.clips.is_empty() - } - pub fn get_screen_bounds( &self, transform: &LayerToWorldFastTransform, diff --git a/gfx/webrender/src/clip_scroll_node.rs b/gfx/webrender/src/clip_scroll_node.rs index 2e3c4414a2cd..cf657d023a81 100644 --- a/gfx/webrender/src/clip_scroll_node.rs +++ b/gfx/webrender/src/clip_scroll_node.rs @@ -286,6 +286,14 @@ impl ClipScrollNode { return; } + let inv_transform = match self.world_content_transform.inverse() { + Some(inverted) => inverted.to_transform(), + None => { + node_data.push(ClipScrollNodeData::invalid()); + return; + } + }; + let transform_kind = if self.world_content_transform.preserves_2d_axis_alignment() { TransformedRectKind::AxisAligned } else { @@ -293,6 +301,7 @@ impl ClipScrollNode { }; let data = ClipScrollNodeData { transform: self.world_content_transform.into(), + inv_transform, transform_kind: transform_kind as u32 as f32, padding: [0.0; 3], }; diff --git a/gfx/webrender/src/display_list_flattener.rs b/gfx/webrender/src/display_list_flattener.rs index 1752b0f8ce11..7017e3521ac3 100644 --- a/gfx/webrender/src/display_list_flattener.rs +++ b/gfx/webrender/src/display_list_flattener.rs @@ -216,14 +216,13 @@ impl<'a> DisplayListFlattener<'a> { view: &DocumentView, output_pipelines: &FastHashSet, frame_builder_config: &FrameBuilderConfig, - pipeline_epochs: &mut FastHashMap, + new_scene: &mut Scene, ) -> FrameBuilder { // We checked that the root pipeline is available on the render backend. let root_pipeline_id = scene.root_pipeline_id.unwrap(); let root_pipeline = scene.pipelines.get(&root_pipeline_id).unwrap(); let root_epoch = scene.pipeline_epochs[&root_pipeline_id]; - pipeline_epochs.insert(root_pipeline_id, root_epoch); let background_color = root_pipeline .background_color @@ -261,7 +260,11 @@ impl<'a> DisplayListFlattener<'a> { flattener.flatten_root(root_pipeline, &root_pipeline.viewport_size); debug_assert!(flattener.picture_stack.is_empty()); - pipeline_epochs.extend(flattener.pipeline_epochs.drain(..)); + + new_scene.root_pipeline_id = Some(root_pipeline_id); + new_scene.pipeline_epochs.insert(root_pipeline_id, root_epoch); + new_scene.pipeline_epochs.extend(flattener.pipeline_epochs.drain(..)); + new_scene.pipelines = scene.pipelines.clone(); FrameBuilder::with_display_list_flattener( view.inner_rect, @@ -1164,7 +1167,12 @@ impl<'a> DisplayListFlattener<'a> { let stacking_context = self.sc_stack.last().expect("bug: no stacking context!"); - let clip_sources = self.clip_store.insert(ClipSources::new(clip_sources)); + let clip_sources = if clip_sources.is_empty() { + None + } else { + Some(self.clip_store.insert(ClipSources::new(clip_sources))) + }; + let prim_index = self.prim_store.add_primitive( &info.rect, &info.local_clip.clip_rect(), @@ -1271,9 +1279,6 @@ impl<'a> DisplayListFlattener<'a> { None, ); - // No clip sources needed for the main framebuffer. - let clip_sources = self.clip_store.insert(ClipSources::new(Vec::new())); - // Add root picture primitive. The provided layer rect // is zero, because we don't yet know the size of the // picture. Instead, this is calculated recursively @@ -1282,7 +1287,7 @@ impl<'a> DisplayListFlattener<'a> { &LayerRect::zero(), &max_clip, true, - clip_sources, + None, None, PrimitiveContainer::Picture(pic), ); @@ -1351,13 +1356,11 @@ impl<'a> DisplayListFlattener<'a> { None, ); - let clip_sources = self.clip_store.insert(ClipSources::new(Vec::new())); - let prim_index = self.prim_store.add_primitive( &LayerRect::zero(), &max_clip, is_backface_visible, - clip_sources, + None, None, PrimitiveContainer::Picture(container), ); @@ -1402,13 +1405,12 @@ impl<'a> DisplayListFlattener<'a> { current_reference_frame_index, None, ); - let src_clip_sources = self.clip_store.insert(ClipSources::new(Vec::new())); let src_prim_index = self.prim_store.add_primitive( &LayerRect::zero(), &max_clip, is_backface_visible, - src_clip_sources, + None, None, PrimitiveContainer::Picture(src_prim), ); @@ -1433,13 +1435,12 @@ impl<'a> DisplayListFlattener<'a> { current_reference_frame_index, None, ); - let src_clip_sources = self.clip_store.insert(ClipSources::new(Vec::new())); let src_prim_index = self.prim_store.add_primitive( &LayerRect::zero(), &max_clip, is_backface_visible, - src_clip_sources, + None, None, PrimitiveContainer::Picture(src_prim), ); @@ -1487,12 +1488,11 @@ impl<'a> DisplayListFlattener<'a> { frame_output_pipeline_id, ); - let sc_clip_sources = self.clip_store.insert(ClipSources::new(Vec::new())); let sc_prim_index = self.prim_store.add_primitive( &LayerRect::zero(), &max_clip, is_backface_visible, - sc_clip_sources, + None, None, PrimitiveContainer::Picture(sc_prim), ); @@ -1646,8 +1646,6 @@ impl<'a> DisplayListFlattener<'a> { ) -> ClipScrollNodeIndex { let clip_rect = clip_region.main; let clip_sources = ClipSources::from(clip_region); - - debug_assert!(clip_sources.has_clips()); let handle = self.clip_store.insert(clip_sources); let node_index = self.id_to_index_mapper.get_node_index(new_node_id); @@ -2621,10 +2619,9 @@ impl<'a> DisplayListFlattener<'a> { } pub fn build_scene(config: &FrameBuilderConfig, request: SceneRequest) -> BuiltScene { - // TODO: mutably pass the scene and update its own pipeline epoch map instead of - // creating a new one here. - let mut pipeline_epoch_map = FastHashMap::default(); + let mut clip_scroll_tree = ClipScrollTree::new(); + let mut new_scene = Scene::new(); let frame_builder = DisplayListFlattener::create_frame_builder( FrameBuilder::empty(), // WIP, we're not really recycling anything here, clean this up. @@ -2635,14 +2632,11 @@ pub fn build_scene(config: &FrameBuilderConfig, request: SceneRequest) -> BuiltS &request.view, &request.output_pipelines, config, - &mut pipeline_epoch_map + &mut new_scene ); - let mut scene = request.scene; - scene.pipeline_epochs = pipeline_epoch_map; - BuiltScene { - scene, + scene: new_scene, frame_builder, clip_scroll_tree, removed_pipelines: request.removed_pipelines, diff --git a/gfx/webrender/src/gpu_types.rs b/gfx/webrender/src/gpu_types.rs index 5d14b43d8113..a0d8fbe4557f 100644 --- a/gfx/webrender/src/gpu_types.rs +++ b/gfx/webrender/src/gpu_types.rs @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use api::{DevicePoint, LayerToWorldTransform, PremultipliedColorF}; +use api::{DevicePoint, LayerToWorldTransform, PremultipliedColorF, WorldToLayerTransform}; use gpu_cache::{GpuCacheAddress, GpuDataRequest}; use prim_store::EdgeAaSegmentMask; use render_task::RenderTaskAddress; @@ -217,6 +217,7 @@ pub struct ClipScrollNodeIndex(pub u32); #[repr(C)] pub struct ClipScrollNodeData { pub transform: LayerToWorldTransform, + pub inv_transform: WorldToLayerTransform, pub transform_kind: f32, pub padding: [f32; 3], } @@ -225,6 +226,7 @@ impl ClipScrollNodeData { pub fn invalid() -> Self { ClipScrollNodeData { transform: LayerToWorldTransform::identity(), + inv_transform: WorldToLayerTransform::identity(), transform_kind: 0.0, padding: [0.0; 3], } @@ -273,4 +275,4 @@ impl ImageSource { ]); request.push(self.color); } -} \ No newline at end of file +} diff --git a/gfx/webrender/src/picture.rs b/gfx/webrender/src/picture.rs index cc7d338b6a9f..fa303c94eb3f 100644 --- a/gfx/webrender/src/picture.rs +++ b/gfx/webrender/src/picture.rs @@ -2,8 +2,9 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use api::{BoxShadowClipMode, ColorF, DeviceIntPoint, DeviceIntRect, FilterOp, LayerPoint}; -use api::{LayerRect, LayerToWorldScale, LayerVector2D, MixBlendMode, PipelineId}; +use api::{DeviceIntPoint, DeviceIntRect, DeviceIntSize, DeviceSize}; +use api::{LayerPoint, LayerRect, LayerToWorldScale, LayerVector2D}; +use api::{BoxShadowClipMode, ColorF, FilterOp, MixBlendMode, PipelineId}; use api::{PremultipliedColorF, Shadow}; use box_shadow::{BLUR_SAMPLE_SCALE, BoxShadowCacheKey}; use clip_scroll_tree::ClipScrollNodeIndex; @@ -18,6 +19,21 @@ use resource_cache::CacheItem; use scene::{FilterOpHelpers, SceneProperties}; use tiling::RenderTargetKind; + +// TODO(gw): Rounding the content rect here to device pixels is not +// technically correct. Ideally we should ceil() here, and ensure that +// the extra part pixel in the case of fractional sizes is correctly +// handled. For now, just use rounding which passes the existing +// Gecko tests. +// Note: zero-square tasks are prohibited in WR task tree, so +// we ensure each dimension to be at least the length of 1 after rounding. +fn to_cache_size(size: DeviceSize) -> DeviceIntSize { + DeviceIntSize::new( + 1.max(size.width.round() as i32), + 1.max(size.height.round() as i32), + ) +} + /* A picture represents a dynamically rendered image. It consists of: @@ -474,13 +490,7 @@ impl PicturePrimitive { // render the text run to a target, and then apply a gaussian // blur to that text run in order to build the actual primitive // which will be blitted to the framebuffer. - - // TODO(gw): Rounding the content rect here to device pixels is not - // technically correct. Ideally we should ceil() here, and ensure that - // the extra part pixel in the case of fractional sizes is correctly - // handled. For now, just use rounding which passes the existing - // Gecko tests. - let cache_size = (content_rect.size * content_scale).round().to_i32(); + let cache_size = to_cache_size(content_rect.size * content_scale); // Quote from https://drafts.csswg.org/css-backgrounds-3/#shadow-blur // "the image that would be generated by applying to the shadow a @@ -520,7 +530,7 @@ impl PicturePrimitive { // the extra part pixel in the case of fractional sizes is correctly // handled. For now, just use rounding which passes the existing // Gecko tests. - let cache_size = (content_rect.size * content_scale).round().to_i32(); + let cache_size = to_cache_size(content_rect.size * content_scale); // Request the texture cache item for this box-shadow key. If it // doesn't exist in the cache, the closure is invoked to build diff --git a/gfx/webrender/src/prim_store.rs b/gfx/webrender/src/prim_store.rs index a156ae3ede30..9e0468934e73 100644 --- a/gfx/webrender/src/prim_store.rs +++ b/gfx/webrender/src/prim_store.rs @@ -168,7 +168,7 @@ pub struct ScreenRect { #[derive(Debug)] pub struct PrimitiveMetadata { pub opacity: PrimitiveOpacity, - pub clip_sources: ClipSourcesHandle, + pub clip_sources: Option, pub prim_kind: PrimitiveKind, pub cpu_prim_index: SpecificPrimitiveIndex, pub gpu_location: GpuCacheHandle, @@ -964,7 +964,7 @@ impl PrimitiveStore { local_rect: &LayerRect, local_clip_rect: &LayerRect, is_backface_visible: bool, - clip_sources: ClipSourcesHandle, + clip_sources: Option, tag: Option, container: PrimitiveContainer, ) -> PrimitiveIndex { @@ -1570,8 +1570,8 @@ impl PrimitiveStore { let transform = &prim_run_context.scroll_node.world_content_transform; let extra_clip = { let metadata = &self.cpu_metadata[prim_index.0]; - let prim_clips = frame_state.clip_store.get_mut(&metadata.clip_sources); - if prim_clips.has_clips() { + metadata.clip_sources.as_ref().map(|ref clip_sources| { + let prim_clips = frame_state.clip_store.get_mut(clip_sources); prim_clips.update( frame_state.gpu_cache, frame_state.resource_cache, @@ -1583,10 +1583,10 @@ impl PrimitiveStore { combined_outer_rect = combined_outer_rect.and_then(|r| r.intersection(&outer)); } - Some(Arc::new(ClipChainNode { + Arc::new(ClipChainNode { work_item: ClipWorkItem { scroll_node_data_index: prim_run_context.scroll_node.node_data_index, - clip_sources: metadata.clip_sources.weak(), + clip_sources: clip_sources.weak(), coordinate_system_id: prim_coordinate_system_id, }, // The local_clip_rect a property of ClipChain nodes that are ClipScrollNodes. @@ -1597,10 +1597,8 @@ impl PrimitiveStore { screen_inner_rect, screen_outer_rect: screen_outer_rect.unwrap_or(prim_screen_rect), prev: None, - })) - } else { - None - } + }) + }) }; // If everything is clipped out, then we don't need to render this primitive. diff --git a/gfx/webrender/src/render_backend.rs b/gfx/webrender/src/render_backend.rs index 231ee9d870bb..28345337eb56 100644 --- a/gfx/webrender/src/render_backend.rs +++ b/gfx/webrender/src/render_backend.rs @@ -172,13 +172,49 @@ impl Document { // TODO: We will probably get rid of this soon and always forward to the scene building thread. fn build_scene(&mut self, resource_cache: &mut ResourceCache) { - let frame_builder = self.create_frame_builder(resource_cache); + + if self.view.window_size.width == 0 || self.view.window_size.height == 0 { + error!("ERROR: Invalid window dimensions! Please call api.set_window_size()"); + } + + let old_builder = self.frame_builder.take().unwrap_or_else(FrameBuilder::empty); + let root_pipeline_id = match self.pending.scene.root_pipeline_id { + Some(root_pipeline_id) => root_pipeline_id, + None => return, + }; + + if !self.pending.scene.pipelines.contains_key(&root_pipeline_id) { + return; + } + + // The DisplayListFlattener will re-create the up-to-date current scene's pipeline epoch + // map and clip scroll tree from the information in the pending scene. + self.current.scene.pipeline_epochs.clear(); + let old_scrolling_states = self.clip_scroll_tree.drain(); + + let frame_builder = DisplayListFlattener::create_frame_builder( + old_builder, + &self.pending.scene, + &mut self.clip_scroll_tree, + resource_cache.get_font_instances(), + resource_cache.get_tiled_image_map(), + &self.view, + &self.output_pipelines, + &self.frame_builder_config, + &mut self.current.scene, + ); + + self.clip_scroll_tree.finalize_and_apply_pending_scroll_offsets(old_scrolling_states); + if !self.current.removed_pipelines.is_empty() { warn!("Built the scene several times without rendering it."); } + self.current.removed_pipelines.extend(self.pending.removed_pipelines.drain(..)); self.frame_builder = Some(frame_builder); - self.current.scene = self.pending.scene.clone(); + + // Advance to the next frame. + self.frame_id.0 += 1; } fn forward_transaction_to_scene_builder( @@ -312,48 +348,6 @@ impl Document { // Advance to the next frame. self.frame_id.0 += 1; } - - // When changing this, please make the same modification to build_scene, - // which will soon replace this method completely. - pub fn create_frame_builder(&mut self, resource_cache: &mut ResourceCache) -> FrameBuilder { - if self.view.window_size.width == 0 || self.view.window_size.height == 0 { - error!("ERROR: Invalid window dimensions! Please call api.set_window_size()"); - } - - let old_builder = self.frame_builder.take().unwrap_or_else(FrameBuilder::empty); - let root_pipeline_id = match self.pending.scene.root_pipeline_id { - Some(root_pipeline_id) => root_pipeline_id, - None => return old_builder, - }; - - if !self.pending.scene.pipelines.contains_key(&root_pipeline_id) { - return old_builder; - } - - // The DisplayListFlattener will re-create the up-to-date current scene's pipeline epoch - // map and clip scroll tree from the information in the pending scene. - self.current.scene.pipeline_epochs.clear(); - let old_scrolling_states = self.clip_scroll_tree.drain(); - - let frame_builder = DisplayListFlattener::create_frame_builder( - old_builder, - &self.pending.scene, - &mut self.clip_scroll_tree, - resource_cache.get_font_instances(), - resource_cache.get_tiled_image_map(), - &self.view, - &self.output_pipelines, - &self.frame_builder_config, - &mut self.current.scene.pipeline_epochs, - ); - - self.clip_scroll_tree.finalize_and_apply_pending_scroll_offsets(old_scrolling_states); - - // Advance to the next frame. - self.frame_id.0 += 1; - - frame_builder - } } struct DocumentOps { @@ -1149,10 +1143,15 @@ impl RenderBackend { bits: CaptureBits, profile_counters: &mut BackendProfileCounters, ) -> DebugOutput { + use std::fs; use capture::CaptureConfig; debug!("capture: saving {:?}", root); - let (resources, deferred) = self.resource_cache.save_capture(&root); + if !root.is_dir() { + if let Err(e) = fs::create_dir_all(&root) { + panic!("Unable to create capture dir: {:?}", e); + } + } let config = CaptureConfig::new(root, bits); for (&id, doc) in &mut self.documents { @@ -1175,6 +1174,9 @@ impl RenderBackend { } } + debug!("\tresource cache"); + let (resources, deferred) = self.resource_cache.save_capture(&config.root); + info!("\tbackend"); let backend = PlainRenderBackend { default_device_pixel_ratio: self.default_device_pixel_ratio, diff --git a/gfx/webrender/src/resource_cache.rs b/gfx/webrender/src/resource_cache.rs index 21b887975ac6..c9b1f84adba2 100644 --- a/gfx/webrender/src/resource_cache.rs +++ b/gfx/webrender/src/resource_cache.rs @@ -1060,9 +1060,6 @@ impl ResourceCache { info!("saving resource cache"); let res = &self.resources; - if !root.is_dir() { - fs::create_dir_all(root).unwrap() - } let path_fonts = root.join("fonts"); if !path_fonts.is_dir() { fs::create_dir(&path_fonts).unwrap(); diff --git a/gfx/webrender/src/scene.rs b/gfx/webrender/src/scene.rs index 6c1f78467793..d64fe5dc69c3 100644 --- a/gfx/webrender/src/scene.rs +++ b/gfx/webrender/src/scene.rs @@ -146,6 +146,7 @@ impl Scene { self.root_pipeline_id = None; } self.pipelines.remove(&pipeline_id); + self.pipeline_epochs.remove(&pipeline_id); } pub fn update_epoch(&mut self, pipeline_id: PipelineId, epoch: Epoch) { diff --git a/gfx/webrender/src/util.rs b/gfx/webrender/src/util.rs index 7d4245b427d4..acb18a92874b 100644 --- a/gfx/webrender/src/util.rs +++ b/gfx/webrender/src/util.rs @@ -401,7 +401,7 @@ impl FastTransform { match (self, other) { (&FastTransform::Offset(ref offset), &FastTransform::Offset(ref other_offset)) => { let offset = TypedVector2D::from_untyped(&offset.to_untyped()); - FastTransform::Offset((offset + *other_offset)) + FastTransform::Offset(offset + *other_offset) } _ => { let new_transform = self.to_transform().pre_mul(&other.to_transform()); diff --git a/gfx/webrender/tests/angle_shader_validation.rs b/gfx/webrender/tests/angle_shader_validation.rs index abed21a429db..51ea0a0612f2 100644 --- a/gfx/webrender/tests/angle_shader_validation.rs +++ b/gfx/webrender/tests/angle_shader_validation.rs @@ -2,10 +2,10 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -extern crate angle; +extern crate mozangle; extern crate webrender; -use angle::hl::{BuiltInResources, Output, ShaderSpec, ShaderValidator}; +use mozangle::shaders::{BuiltInResources, Output, ShaderSpec, ShaderValidator}; // from glslang const FRAGMENT_SHADER: u32 = 0x8B30; @@ -113,7 +113,7 @@ const VERSION_STRING: &str = "#version 300 es\n"; #[test] fn validate_shaders() { - angle::hl::initialize().unwrap(); + mozangle::shaders::initialize().unwrap(); let resources = BuiltInResources::default(); let vs_validator = diff --git a/gfx/webrender_bindings/revision.txt b/gfx/webrender_bindings/revision.txt index 717bf44a8b96..bf8238de6df7 100644 --- a/gfx/webrender_bindings/revision.txt +++ b/gfx/webrender_bindings/revision.txt @@ -1 +1 @@ -22b831c02479eea31821f49a0fac7dd699083557 +0da6c839b3a0e165f1115fb9fe286be7540c24ed From 4a49655321fcbce6d7ea412697a4d17eeb9bb96d Mon Sep 17 00:00:00 2001 From: Mike Conley Date: Mon, 5 Mar 2018 17:03:09 -0500 Subject: [PATCH 11/65] Bug 1443315 - Make preloaded about:newtab's layers always rendered so that we avoid the flash when opening new tabs. r=florian MozReview-Commit-ID: I0MvCnzskhB --HG-- extra : rebase_source : 150a709f655a8f98b63aa1e975ecdbbe5d201530 --- browser/base/content/tabbrowser.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/browser/base/content/tabbrowser.js b/browser/base/content/tabbrowser.js index a44913e27a52..adce99668dc7 100644 --- a/browser/base/content/tabbrowser.js +++ b/browser/base/content/tabbrowser.js @@ -1812,6 +1812,8 @@ window._gBrowser = { browser.loadURI(BROWSER_NEW_TAB_URL); browser.docShellIsActive = false; + browser.renderLayers = true; + browser._urlbarFocused = true; // Make sure the preloaded browser is loaded with desired zoom level let tabURI = Services.io.newURI(BROWSER_NEW_TAB_URL); From 3cb1bcb379c4d8ee374be0831f75ea9d19c5dc84 Mon Sep 17 00:00:00 2001 From: Mike Conley Date: Tue, 6 Mar 2018 14:37:27 -0500 Subject: [PATCH 12/65] Bug 1443315 - Don't set docShellIsActive to false for preloaded browsers that are being inserted. r=dao MozReview-Commit-ID: LxZ9qaG1ls7 --HG-- extra : rebase_source : 30d722fbd9fe8aad4e935d526f321ee9711a4581 --- browser/base/content/tabbrowser.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/browser/base/content/tabbrowser.js b/browser/base/content/tabbrowser.js index adce99668dc7..39a0cb3d856f 100644 --- a/browser/base/content/tabbrowser.js +++ b/browser/base/content/tabbrowser.js @@ -2077,9 +2077,19 @@ window._gBrowser = { browser.droppedLinkHandler = handleDroppedLink; - // We start our browsers out as inactive, and then maintain - // activeness in the tab switcher. - browser.docShellIsActive = false; + // Most of the time, we start our browser's docShells out as inactive, + // and then maintain activeness in the tab switcher. Preloaded about:newtab's + // are already created with their docShell's as inactive, but then explicitly + // render their layers to ensure that we can switch to them quickly. We avoid + // setting docShellIsActive to false again in this case, since that'd cause + // the layers for the preloaded tab to be dropped, and we'd see a flash + // of empty content instead. + // + // So for all browsers except for the preloaded case, we set the browser + // docShell to inactive. + if (!usingPreloadedContent) { + browser.docShellIsActive = false; + } // When addTab() is called with an URL that is not "about:blank" we // set the "nodefaultsrc" attribute that prevents a frameLoader From 7c5d675d77ea2df35315d0dadae658fb43c6bb8e Mon Sep 17 00:00:00 2001 From: Xidorn Quan Date: Wed, 7 Mar 2018 09:19:25 -0500 Subject: [PATCH 13/65] servo: Merge #20227 - Fix `mach build` for Servo in Firefox tree (from upsuper:in-firefox-build); r=jdm Running `mach build` in servo directory in Firefox tree currently doesn't work due to several errors when importing modules. First error: ```text Traceback (most recent call last): File "mach", line 93, in main(sys.argv) File "mach", line 23, in main mach = mach_bootstrap.bootstrap(topdir) File "servo/python/mach_bootstrap.py", line 280, in bootstrap mach.load_commands_from_file(os.path.join(topdir, path)) File "servo/python/_virtualenv/Lib/site-packages/mach/main.py", line 265, in load_commands_from_file imp.load_source(module_name, path) File "servo/python/servo/testing_commands.py", line 42, in from update import updatecommandline File "servo/../testing/web-platform/update/__init__.py", line 17, in from wptrunner.update import setup_logging, WPTUpdate File "servo/../testing/web-platform/tests/tools/wptrunner/wptrunner/update/__init__.py", line 8, in from update import WPTUpdate File "servo/../testing/web-platform/tests/tools/wptrunner/wptrunner/update/update.py", line 8, in from .. import environment as env File "servo/../testing/web-platform/tests/tools/wptrunner/wptrunner/environment.py", line 12, in from wptserve.handlers import StringHandler ImportError: No module named wptserve.handlers ``` Second error: ```text Traceback (most recent call last): File "mach", line 93, in main(sys.argv) File "mach", line 23, in main mach = mach_bootstrap.bootstrap(topdir) File "servo/python/mach_bootstrap.py", line 291, in bootstrap mach.load_commands_from_file(os.path.join(topdir, path)) File "servo/python/_virtualenv/Lib/site-packages/mach/main.py", line 265, in load_commands_from_file imp.load_source(module_name, path) File "servo/python/servo/testing_commands.py", line 43, in from servo_tidy import tidy File "servo/python/tidy/servo_tidy/tidy.py", line 34, in from wptmanifest import parser, node ImportError: No module named wptmanifest ``` The two commits fix these two errors respectively. Source-Repo: https://github.com/servo/servo Source-Revision: 4e2f8ec8e162fe707240eff223ec225790bf29fd --HG-- extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear extra : subtree_revision : fd8d95aa6ee79b994cdf8a6ca6f948ac3ba725b3 --- servo/python/mach_bootstrap.py | 21 ++++++++++++++++----- servo/python/tidy/servo_tidy/tidy.py | 14 ++++++++++---- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/servo/python/mach_bootstrap.py b/servo/python/mach_bootstrap.py index 0f7e1ac68827..4bbd1fe7d957 100644 --- a/servo/python/mach_bootstrap.py +++ b/servo/python/mach_bootstrap.py @@ -131,7 +131,7 @@ def wpt_path(is_firefox, topdir, *paths): return os.path.join(topdir, rel, *paths) -def wpt_harness_path(is_firefox, topdir, *paths): +def wptrunner_path(is_firefox, topdir, *paths): wpt_root = wpt_path(is_firefox, topdir) if is_firefox: rel = os.path.join(wpt_root, "tests", "tools", "wptrunner") @@ -141,6 +141,16 @@ def wpt_harness_path(is_firefox, topdir, *paths): return os.path.join(topdir, rel, *paths) +def wptserve_path(is_firefox, topdir, *paths): + wpt_root = wpt_path(is_firefox, topdir) + if is_firefox: + rel = os.path.join(wpt_root, "tests", "tools", "wptserve") + else: + rel = os.path.join(wpt_root, "web-platform-tests", "tools", "wptserve") + + return os.path.join(topdir, rel, *paths) + + def _activate_virtualenv(topdir, is_firefox): virtualenv_path = os.path.join(topdir, "python", "_virtualenv") check_exec_path = lambda path: path.startswith(virtualenv_path) @@ -175,9 +185,9 @@ def _activate_virtualenv(topdir, is_firefox): # and it will check for conflicts. requirements_paths = [ os.path.join("python", "requirements.txt"), - wpt_harness_path(is_firefox, topdir, "requirements.txt",), - wpt_harness_path(is_firefox, topdir, "requirements_firefox.txt"), - wpt_harness_path(is_firefox, topdir, "requirements_servo.txt"), + wptrunner_path(is_firefox, topdir, "requirements.txt",), + wptrunner_path(is_firefox, topdir, "requirements_firefox.txt"), + wptrunner_path(is_firefox, topdir, "requirements_servo.txt"), ] if need_pip_upgrade: @@ -267,7 +277,8 @@ def bootstrap(topdir): sys.path[0:0] = [os.path.join(topdir, path) for path in SEARCH_PATHS] sys.path[0:0] = [wpt_path(is_firefox, topdir), - wpt_harness_path(is_firefox, topdir)] + wptrunner_path(is_firefox, topdir), + wptserve_path(is_firefox, topdir)] import mach.main mach = mach.main.Mach(os.getcwd()) diff --git a/servo/python/tidy/servo_tidy/tidy.py b/servo/python/tidy/servo_tidy/tidy.py index 2d0a2fc23f64..1dcdfd178495 100644 --- a/servo/python/tidy/servo_tidy/tidy.py +++ b/servo/python/tidy/servo_tidy/tidy.py @@ -30,12 +30,15 @@ wpt = os.path.join(topdir, "tests", "wpt") def wpt_path(*args): return os.path.join(wpt, *args) -sys.path.append(wpt_path("web-platform-tests", "tools", "wptrunner", "wptrunner")) -from wptmanifest import parser, node - CONFIG_FILE_PATH = os.path.join(".", "servo-tidy.toml") WPT_MANIFEST_PATH = wpt_path("include.ini") +# Import wptmanifest only when we do have wpt in tree, i.e. we're not +# inside a Firefox checkout. +if os.path.isfile(WPT_MANIFEST_PATH): + sys.path.append(wpt_path("web-platform-tests", "tools", "wptrunner", "wptrunner")) + from wptmanifest import parser, node + # Default configs config = { "skip-check-length": False, @@ -1166,7 +1169,10 @@ def scan(only_changed_files=False, progress=True, stylo=False): # check config file for errors config_errors = check_config_file(CONFIG_FILE_PATH) # check ini directories exist - manifest_errors = check_manifest_dirs(WPT_MANIFEST_PATH) + if os.path.isfile(WPT_MANIFEST_PATH): + manifest_errors = check_manifest_dirs(WPT_MANIFEST_PATH) + else: + manifest_errors = () # check directories contain expected files directory_errors = check_directory_files(config['check_ext']) # standard checks From 27dd77631be8abc10376520d90e0f99df605953f Mon Sep 17 00:00:00 2001 From: Michael Kaply Date: Tue, 6 Mar 2018 16:33:42 -0600 Subject: [PATCH 14/65] Bug 1342288 - Remove PresentationMediaPlayerManager. r=snorp MozReview-Commit-ID: 4H46ahWTntR --HG-- extra : rebase_source : 647b6f702b14bbb13bc44812870069164ccbddfd --- mobile/android/app/build.gradle | 1 - .../org/mozilla/gecko/MediaPlayerManager.java | 7 +- .../gecko/PresentationMediaPlayerManager.java | 153 ------------------ widget/android/fennec/FennecJNINatives.h | 25 --- widget/android/fennec/FennecJNIWrappers.cpp | 14 -- widget/android/fennec/FennecJNIWrappers.h | 69 -------- widget/android/nsWindow.cpp | 106 ------------ widget/android/nsWindow.h | 5 - 8 files changed, 1 insertion(+), 379 deletions(-) delete mode 100644 mobile/android/base/java/org/mozilla/gecko/PresentationMediaPlayerManager.java diff --git a/mobile/android/app/build.gradle b/mobile/android/app/build.gradle index 6d5f0fbc06c1..f18e933a03d2 100644 --- a/mobile/android/app/build.gradle +++ b/mobile/android/app/build.gradle @@ -131,7 +131,6 @@ android { exclude 'org/mozilla/gecko/GeckoMediaPlayer.java' exclude 'org/mozilla/gecko/GeckoPresentationDisplay.java' exclude 'org/mozilla/gecko/MediaPlayerManager.java' - exclude 'org/mozilla/gecko/PresentationMediaPlayerManager.java' exclude 'org/mozilla/gecko/RemotePresentationService.java' } diff --git a/mobile/android/base/java/org/mozilla/gecko/MediaPlayerManager.java b/mobile/android/base/java/org/mozilla/gecko/MediaPlayerManager.java index 252a0dd88001..25a045f50f56 100644 --- a/mobile/android/base/java/org/mozilla/gecko/MediaPlayerManager.java +++ b/mobile/android/base/java/org/mozilla/gecko/MediaPlayerManager.java @@ -43,12 +43,7 @@ public class MediaPlayerManager extends Fragment implements BundleEventListener if (instance != null) { return instance; } - if (Versions.feature17Plus) { - instance = (MediaPlayerManager) new PresentationMediaPlayerManager(); - } else { - instance = new MediaPlayerManager(); - } - return instance; + return new MediaPlayerManager(); } private static final String LOGTAG = "GeckoMediaPlayerManager"; diff --git a/mobile/android/base/java/org/mozilla/gecko/PresentationMediaPlayerManager.java b/mobile/android/base/java/org/mozilla/gecko/PresentationMediaPlayerManager.java deleted file mode 100644 index ef9cd3d10d88..000000000000 --- a/mobile/android/base/java/org/mozilla/gecko/PresentationMediaPlayerManager.java +++ /dev/null @@ -1,153 +0,0 @@ -/* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -package org.mozilla.gecko; - -import android.annotation.TargetApi; -import android.app.Presentation; -import android.content.Context; -import android.os.Bundle; -import android.support.v7.media.MediaRouter; -import android.util.Log; -import android.view.Display; -import android.view.Surface; -import android.view.SurfaceHolder; -import android.view.SurfaceView; -import android.view.ViewGroup; -import android.view.WindowManager; - -import org.mozilla.gecko.AppConstants.Versions; - -import org.mozilla.gecko.annotation.BuildFlag; -import org.mozilla.gecko.annotation.WrapForJNI; -import org.mozilla.geckoview.GeckoSession; -import org.mozilla.geckoview.GeckoView; - -/** - * A MediaPlayerManager with API 17+ Presentation support. - */ -@BuildFlag("MOZ_NATIVE_DEVICES") -@TargetApi(17) -public class PresentationMediaPlayerManager extends MediaPlayerManager { - - private static final String LOGTAG = "Gecko" + PresentationMediaPlayerManager.class.getSimpleName(); - - private GeckoPresentation presentation; - - public PresentationMediaPlayerManager() { - if (!Versions.feature17Plus) { - throw new IllegalStateException(PresentationMediaPlayerManager.class.getSimpleName() + - " does not support < API 17"); - } - } - - @Override - public void onStop() { - super.onStop(); - if (presentation != null) { - presentation.dismiss(); - presentation = null; - } - } - - @Override - protected void updatePresentation() { - if (mediaRouter == null) { - return; - } - - if (isPresentationMode) { - return; - } - - MediaRouter.RouteInfo route = mediaRouter.getSelectedRoute(); - Display display = route != null ? route.getPresentationDisplay() : null; - - if (display != null) { - if ((presentation != null) && (presentation.getDisplay() != display)) { - presentation.dismiss(); - presentation = null; - } - - if (presentation == null) { - final GeckoView geckoView = (GeckoView) getActivity().findViewById(R.id.layer_view); - presentation = new GeckoPresentation(getActivity(), display, geckoView); - - try { - presentation.show(); - } catch (WindowManager.InvalidDisplayException ex) { - Log.w(LOGTAG, "Couldn't show presentation! Display was removed in " - + "the meantime.", ex); - presentation = null; - } - } - } else if (presentation != null) { - presentation.dismiss(); - presentation = null; - } - } - - @WrapForJNI(calledFrom = "ui") - /* protected */ static native void invalidateAndScheduleComposite(GeckoSession session); - - @WrapForJNI(calledFrom = "ui") - /* protected */ static native void addPresentationSurface(GeckoSession session, Surface surface); - - @WrapForJNI(calledFrom = "ui") - /* protected */ static native void removePresentationSurface(); - - private static final class GeckoPresentation extends Presentation { - private SurfaceView mView; - private GeckoView mGeckoView; - - public GeckoPresentation(Context context, Display display, GeckoView geckoView) { - super(context, display); - - mGeckoView = geckoView; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - mView = new SurfaceView(getContext()); - setContentView(mView, new ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT)); - mView.getHolder().addCallback(new SurfaceListener(mGeckoView)); - } - } - - private static final class SurfaceListener implements SurfaceHolder.Callback { - private GeckoView mGeckoView; - - public SurfaceListener(GeckoView geckoView) { - mGeckoView = geckoView; - } - - @Override - public void surfaceChanged(SurfaceHolder holder, int format, int width, - int height) { - // Surface changed so force a composite - if (GeckoThread.isStateAtLeast(GeckoThread.State.PROFILE_READY)) { - invalidateAndScheduleComposite(mGeckoView.getSession()); - } - } - - @Override - public void surfaceCreated(SurfaceHolder holder) { - if (GeckoThread.isStateAtLeast(GeckoThread.State.PROFILE_READY)) { - addPresentationSurface(mGeckoView.getSession(), holder.getSurface()); - } - } - - @Override - public void surfaceDestroyed(SurfaceHolder holder) { - if (GeckoThread.isStateAtLeast(GeckoThread.State.PROFILE_READY)) { - removePresentationSurface(); - } - } - } -} diff --git a/widget/android/fennec/FennecJNINatives.h b/widget/android/fennec/FennecJNINatives.h index 8c5fc9a18757..852ede9ee655 100644 --- a/widget/android/fennec/FennecJNINatives.h +++ b/widget/android/fennec/FennecJNINatives.h @@ -83,31 +83,6 @@ const JNINativeMethod MemoryMonitor::Natives::methods[] = { ::template Wrap<&Impl::DispatchMemoryPressure>) }; -#ifdef MOZ_NATIVE_DEVICES -template -class PresentationMediaPlayerManager::Natives : public mozilla::jni::NativeImpl -{ -public: - static const JNINativeMethod methods[3]; -}; - -template -const JNINativeMethod PresentationMediaPlayerManager::Natives::methods[] = { - - mozilla::jni::MakeNativeMethod( - mozilla::jni::NativeStub - ::template Wrap<&Impl::AddPresentationSurface>), - - mozilla::jni::MakeNativeMethod( - mozilla::jni::NativeStub - ::template Wrap<&Impl::InvalidateAndScheduleComposite>), - - mozilla::jni::MakeNativeMethod( - mozilla::jni::NativeStub - ::template Wrap<&Impl::RemovePresentationSurface>) -}; - -#endif // MOZ_NATIVE_DEVICES template class Telemetry::Natives : public mozilla::jni::NativeImpl { diff --git a/widget/android/fennec/FennecJNIWrappers.cpp b/widget/android/fennec/FennecJNIWrappers.cpp index 54a442627fdf..3dd486abea52 100644 --- a/widget/android/fennec/FennecJNIWrappers.cpp +++ b/widget/android/fennec/FennecJNIWrappers.cpp @@ -174,20 +174,6 @@ const char MemoryMonitor::name[] = constexpr char MemoryMonitor::DispatchMemoryPressure_t::name[]; constexpr char MemoryMonitor::DispatchMemoryPressure_t::signature[]; -#ifdef MOZ_NATIVE_DEVICES -const char PresentationMediaPlayerManager::name[] = - "org/mozilla/gecko/PresentationMediaPlayerManager"; - -constexpr char PresentationMediaPlayerManager::AddPresentationSurface_t::name[]; -constexpr char PresentationMediaPlayerManager::AddPresentationSurface_t::signature[]; - -constexpr char PresentationMediaPlayerManager::InvalidateAndScheduleComposite_t::name[]; -constexpr char PresentationMediaPlayerManager::InvalidateAndScheduleComposite_t::signature[]; - -constexpr char PresentationMediaPlayerManager::RemovePresentationSurface_t::name[]; -constexpr char PresentationMediaPlayerManager::RemovePresentationSurface_t::signature[]; - -#endif // MOZ_NATIVE_DEVICES const char Telemetry::name[] = "org/mozilla/gecko/Telemetry"; diff --git a/widget/android/fennec/FennecJNIWrappers.h b/widget/android/fennec/FennecJNIWrappers.h index c97dd57e39bd..af9a186a7f5d 100644 --- a/widget/android/fennec/FennecJNIWrappers.h +++ b/widget/android/fennec/FennecJNIWrappers.h @@ -518,75 +518,6 @@ public: template class Natives; }; -#ifdef MOZ_NATIVE_DEVICES -class PresentationMediaPlayerManager : public mozilla::jni::ObjectBase -{ -public: - static const char name[]; - - explicit PresentationMediaPlayerManager(const Context& ctx) : ObjectBase(ctx) {} - - struct AddPresentationSurface_t { - typedef PresentationMediaPlayerManager Owner; - typedef void ReturnType; - typedef void SetterType; - typedef mozilla::jni::Args< - mozilla::jni::Object::Param, - mozilla::jni::Object::Param> Args; - static constexpr char name[] = "addPresentationSurface"; - static constexpr char signature[] = - "(Lorg/mozilla/geckoview/GeckoSession;Landroid/view/Surface;)V"; - static const bool isStatic = true; - static const mozilla::jni::ExceptionMode exceptionMode = - mozilla::jni::ExceptionMode::ABORT; - static const mozilla::jni::CallingThread callingThread = - mozilla::jni::CallingThread::UI; - static const mozilla::jni::DispatchTarget dispatchTarget = - mozilla::jni::DispatchTarget::CURRENT; - }; - - struct InvalidateAndScheduleComposite_t { - typedef PresentationMediaPlayerManager Owner; - typedef void ReturnType; - typedef void SetterType; - typedef mozilla::jni::Args< - mozilla::jni::Object::Param> Args; - static constexpr char name[] = "invalidateAndScheduleComposite"; - static constexpr char signature[] = - "(Lorg/mozilla/geckoview/GeckoSession;)V"; - static const bool isStatic = true; - static const mozilla::jni::ExceptionMode exceptionMode = - mozilla::jni::ExceptionMode::ABORT; - static const mozilla::jni::CallingThread callingThread = - mozilla::jni::CallingThread::UI; - static const mozilla::jni::DispatchTarget dispatchTarget = - mozilla::jni::DispatchTarget::CURRENT; - }; - - struct RemovePresentationSurface_t { - typedef PresentationMediaPlayerManager Owner; - typedef void ReturnType; - typedef void SetterType; - typedef mozilla::jni::Args<> Args; - static constexpr char name[] = "removePresentationSurface"; - static constexpr char signature[] = - "()V"; - static const bool isStatic = true; - static const mozilla::jni::ExceptionMode exceptionMode = - mozilla::jni::ExceptionMode::ABORT; - static const mozilla::jni::CallingThread callingThread = - mozilla::jni::CallingThread::UI; - static const mozilla::jni::DispatchTarget dispatchTarget = - mozilla::jni::DispatchTarget::CURRENT; - }; - - static const mozilla::jni::CallingThread callingThread = - mozilla::jni::CallingThread::UI; - - template class Natives; -}; - -#endif // MOZ_NATIVE_DEVICES class Telemetry : public mozilla::jni::ObjectBase { public: diff --git a/widget/android/nsWindow.cpp b/widget/android/nsWindow.cpp index fa662dbd6b6a..cdb2cd50d52f 100644 --- a/widget/android/nsWindow.cpp +++ b/widget/android/nsWindow.cpp @@ -1136,94 +1136,6 @@ public: template<> const char nsWindow::NativePtr::sName[] = "LayerViewSupport"; -#ifdef MOZ_NATIVE_DEVICES -/* PresentationMediaPlayerManager native calls access inner nsWindow functionality so PMPMSupport is a child class of nsWindow */ -class nsWindow::PMPMSupport final - : public PresentationMediaPlayerManager::Natives -{ - PMPMSupport() = delete; - - static LayerViewSupport* GetLayerViewSupport(jni::Object::Param aSession) - { - const auto& session = LayerSession::Ref::From(aSession); - - LayerSession::Compositor::LocalRef compositor = session->GetCompositor(); - if (!compositor) { - return nullptr; - } - - LayerViewSupport* const lvs = LayerViewSupport::FromNative(compositor); - if (!lvs) { - // There is a pending exception whenever FromNative returns nullptr. - compositor.Env()->ExceptionClear(); - } - return lvs; - } - -public: - static ANativeWindow* sWindow; - static EGLSurface sSurface; - - static void InvalidateAndScheduleComposite(jni::Object::Param aSession) - { - LayerViewSupport* const lvs = GetLayerViewSupport(aSession); - if (lvs) { - lvs->SyncInvalidateAndScheduleComposite(); - } - } - - static void AddPresentationSurface(const jni::Class::LocalRef& aCls, - jni::Object::Param aSession, - jni::Object::Param aSurface) - { - RemovePresentationSurface(); - - LayerViewSupport* const lvs = GetLayerViewSupport(aSession); - if (!lvs) { - return; - } - - ANativeWindow* const window = ANativeWindow_fromSurface( - aCls.Env(), aSurface.Get()); - if (!window) { - return; - } - - sWindow = window; - - const bool wasAlreadyPaused = lvs->CompositorPaused(); - if (!wasAlreadyPaused) { - lvs->SyncPauseCompositor(); - } - - if (sSurface) { - // Destroy the EGL surface! The compositor is paused so it should - // be okay to destroy the surface here. - mozilla::gl::GLContextProvider::DestroyEGLSurface(sSurface); - sSurface = nullptr; - } - - if (!wasAlreadyPaused) { - lvs->SyncResumeCompositor(); - } - - lvs->SyncInvalidateAndScheduleComposite(); - } - - static void RemovePresentationSurface() - { - if (sWindow) { - ANativeWindow_release(sWindow); - sWindow = nullptr; - } - } -}; - -ANativeWindow* nsWindow::PMPMSupport::sWindow; -EGLSurface nsWindow::PMPMSupport::sSurface; -#endif - - nsWindow::GeckoViewSupport::~GeckoViewSupport() { // Disassociate our GeckoEditable instance with our native object. @@ -1390,11 +1302,6 @@ nsWindow::InitNatives() nsWindow::GeckoViewSupport::Base::Init(); nsWindow::LayerViewSupport::Init(); nsWindow::NPZCSupport::Init(); -#ifdef MOZ_NATIVE_DEVICES - if (jni::IsFennec()) { - nsWindow::PMPMSupport::Init(); - } -#endif GeckoEditableSupport::Init(); } @@ -2075,14 +1982,6 @@ nsWindow::GetNativeData(uint32_t aDataType) return lvs->GetSurface().Get(); } return nullptr; - -#ifdef MOZ_NATIVE_DEVICES - case NS_PRESENTATION_WINDOW: - return PMPMSupport::sWindow; - - case NS_PRESENTATION_SURFACE: - return PMPMSupport::sSurface; -#endif } return nullptr; @@ -2092,11 +1991,6 @@ void nsWindow::SetNativeData(uint32_t aDataType, uintptr_t aVal) { switch (aDataType) { -#ifdef MOZ_NATIVE_DEVICES - case NS_PRESENTATION_SURFACE: - PMPMSupport::sSurface = reinterpret_cast(aVal); - break; -#endif } } diff --git a/widget/android/nsWindow.h b/widget/android/nsWindow.h index f108de925eb4..919ea67878c3 100644 --- a/widget/android/nsWindow.h +++ b/widget/android/nsWindow.h @@ -193,11 +193,6 @@ private: // keep it last in the list, so its destructor is called first. mozilla::UniquePtr mGeckoViewSupport; -#ifdef MOZ_NATIVE_DEVICES - // Class that implements native PresentationMediaPlayerManager calls. - class PMPMSupport; -#endif - mozilla::Atomic mContentDocumentDisplayed; public: From a1f799ec10d01d718980c37e4facc1e275439f58 Mon Sep 17 00:00:00 2001 From: Gregory Szorc Date: Tue, 6 Mar 2018 20:26:32 -0800 Subject: [PATCH 15/65] Bug 1443712 - Add /d2:-cgsummary to PGO link flags; r=ted This will tell us which functions PGO is spending its time in, which functions are being optimized, and other interesting statistics. The output is a handful of pages of text in our current PGO builds and it seems useful for understanding the PGO black box. MozReview-Commit-ID: HUbAhltQrdL --HG-- extra : rebase_source : eb188ebf84ee9ce6c7fe8bf69b6b156ee9f14956 --- build/moz.configure/toolchain.configure | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure index 597fa9be2cc4..a1e443019748 100755 --- a/build/moz.configure/toolchain.configure +++ b/build/moz.configure/toolchain.configure @@ -1266,7 +1266,10 @@ def pgo_flags(compiler): use_cflags=['-GL', '-wd4624', '-wd4952'], # XXX: should be -LTCG:PGOPTIMIZE, but that fails on libxul. # Probably also a compiler bug, but what can you do? - use_ldflags=['-LTCG:PGUPDATE', cgthreads], + # /d2:-cgsummary prints a summary of what is happening during + # code generation. How long individual functions are optimized, + # which functions are optimized, etc. + use_ldflags=['-LTCG:PGUPDATE', cgthreads, '-d2:-cgsummary'], ) From aa14676e33a2cf5bebb9c963f32dcf333fdb2562 Mon Sep 17 00:00:00 2001 From: Timothy Guan-tin Chien Date: Tue, 6 Mar 2018 11:42:44 -0800 Subject: [PATCH 16/65] Bug 1443604 - Flatten handler bindings r=jaws Removes handler-base binding and switch the markup with JS instead of seperate, handler & hander-selected bindings. MozReview-Commit-ID: 9W8IGNFkUVc --HG-- extra : rebase_source : ac300e1a90e13805dd4d0abc57536d6359f2f676 --- browser/components/preferences/handlers.css | 4 -- browser/components/preferences/handlers.xml | 44 +++++++++------------ 2 files changed, 19 insertions(+), 29 deletions(-) diff --git a/browser/components/preferences/handlers.css b/browser/components/preferences/handlers.css index 6af75a08b243..636fcd4705f2 100644 --- a/browser/components/preferences/handlers.css +++ b/browser/components/preferences/handlers.css @@ -6,10 +6,6 @@ -moz-binding: url("chrome://browser/content/preferences/handlers.xml#handler"); } -#handlersView > richlistitem[selected="true"] { - -moz-binding: url("chrome://browser/content/preferences/handlers.xml#handler-selected"); -} - #containersView > richlistitem { -moz-binding: url("chrome://browser/content/preferences/handlers.xml#container"); } diff --git a/browser/components/preferences/handlers.xml b/browser/components/preferences/handlers.xml index 0d90d24dd8db..cbb749575956 100644 --- a/browser/components/preferences/handlers.xml +++ b/browser/components/preferences/handlers.xml @@ -17,17 +17,30 @@ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:xbl="http://www.mozilla.org/xbl"> - + return this.getAttribute("type"); - - + + + + document.getAnonymousElementByAttribute(this, "anonid", "selected").setAttribute("hidden", !val); + document.getAnonymousElementByAttribute(this, "anonid", "not-selected").setAttribute("hidden", !!val); + + return val; + ]]> + + @@ -35,23 +48,11 @@ xbl:inherits="src=typeIcon" height="16" width="16"/> - + - - - - - - - - - - - - + - - - - gMainPane.rebuildActionsMenu(); - - - From 93ea7b41e10de7d40a26e9054c98a872745454f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Wed, 7 Mar 2018 10:06:05 -0500 Subject: [PATCH 17/65] servo: Merge #20229 - style: Separate the XBL and shadow dom styling bits (from emilio:finally); r=xidorn Bug: 1441022 Reviewed-by: xidorn MozReview-Commit-ID: 2W0BmZ8wWXg Source-Repo: https://github.com/servo/servo Source-Revision: 6272233c50071534ddbab118b64ecdb8fdda7c8a --HG-- extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear extra : subtree_revision : 0ce28863b2082d97c58833aae1c092b1723e1aa9 --- servo/components/layout_thread/dom_wrapper.rs | 8 +++ servo/components/style/data.rs | 12 ++-- servo/components/style/dom.rs | 21 ++++-- servo/components/style/gecko/wrapper.rs | 44 +++++++------ .../element/state_and_attributes.rs | 8 +-- servo/components/style/stylesheet_set.rs | 7 +- servo/components/style/stylist.rs | 64 +++++++++++++------ 7 files changed, 107 insertions(+), 57 deletions(-) diff --git a/servo/components/layout_thread/dom_wrapper.rs b/servo/components/layout_thread/dom_wrapper.rs index 3161de39b004..5cf29e8e159e 100644 --- a/servo/components/layout_thread/dom_wrapper.rs +++ b/servo/components/layout_thread/dom_wrapper.rs @@ -74,6 +74,7 @@ use style::selector_parser::{AttrValue as SelectorAttrValue, NonTSPseudoClass, P use style::selector_parser::{PseudoElement, SelectorImpl, extended_filtering}; use style::shared_lock::{SharedRwLock as StyleSharedRwLock, Locked as StyleLocked}; use style::str::is_whitespace; +use style::stylist::CascadeData; pub unsafe fn drop_style_and_layout_data(data: OpaqueStyleAndLayoutData) { let ptr = data.ptr.as_ptr() as *mut StyleData; @@ -166,6 +167,13 @@ impl<'lr> TShadowRoot for ShadowRoot<'lr> { fn host(&self) -> ServoLayoutElement<'lr> { match self.0 { } } + + fn style_data<'a>(&self) -> &'a CascadeData + where + Self: 'a, + { + match self.0 { } + } } impl<'ln> TNode for ServoLayoutNode<'ln> { diff --git a/servo/components/style/data.rs b/servo/components/style/data.rs index 275c8c4294d3..e1af10308ade 100644 --- a/servo/components/style/data.rs +++ b/servo/components/style/data.rs @@ -260,18 +260,16 @@ impl ElementData { return InvalidationResult::empty(); } - let mut xbl_stylists = SmallVec::<[_; 3]>::new(); - // FIXME(emilio): This is wrong, needs to account for ::slotted rules - // that may apply to elements down the tree. - let cut_off_inheritance = + let mut non_document_styles = SmallVec::<[_; 3]>::new(); + let matches_doc_author_rules = element.each_applicable_non_document_style_rule_data(|data, quirks_mode| { - xbl_stylists.push((data, quirks_mode)) + non_document_styles.push((data, quirks_mode)) }); let mut processor = StateAndAttrInvalidationProcessor::new( shared_context, - &xbl_stylists, - cut_off_inheritance, + &non_document_styles, + matches_doc_author_rules, element, self, nth_index_cache, diff --git a/servo/components/style/dom.rs b/servo/components/style/dom.rs index 9cd6e29feeb9..59c31572c564 100644 --- a/servo/components/style/dom.rs +++ b/servo/components/style/dom.rs @@ -330,6 +330,11 @@ pub trait TShadowRoot : Sized + Copy + Clone { /// Get the shadow host that hosts this ShadowRoot. fn host(&self) -> ::ConcreteElement; + + /// Get the style data for this ShadowRoot. + fn style_data<'a>(&self) -> &'a CascadeData + where + Self: 'a; } /// The element trait, the main abstraction the style crate acts over. @@ -760,7 +765,8 @@ pub trait TElement /// Implements Gecko's `nsBindingManager::WalkRules`. /// - /// Returns whether to cut off the inheritance. + /// Returns whether to cut off the binding inheritance, that is, whether + /// document rules should _not_ apply. fn each_xbl_cascade_data<'a, F>(&self, _: F) -> bool where Self: 'a, @@ -778,15 +784,22 @@ pub trait TElement Self: 'a, F: FnMut(&'a CascadeData, QuirksMode), { - let cut_off_inheritance = self.each_xbl_cascade_data(&mut f); + let mut doc_rules_apply = !self.each_xbl_cascade_data(&mut f); + + if let Some(shadow) = self.containing_shadow() { + doc_rules_apply = false; + f(shadow.style_data(), self.as_node().owner_doc().quirks_mode()); + } let mut current = self.assigned_slot(); while let Some(slot) = current { - slot.each_xbl_cascade_data(&mut f); + // Slots can only have assigned nodes when in a shadow tree. + let data = slot.containing_shadow().unwrap().style_data(); + f(data, self.as_node().owner_doc().quirks_mode()); current = slot.assigned_slot(); } - cut_off_inheritance + doc_rules_apply } /// Does a rough (and cheap) check for whether or not transitions might need to be updated that diff --git a/servo/components/style/gecko/wrapper.rs b/servo/components/style/gecko/wrapper.rs index 34310df5522d..f3e609701739 100644 --- a/servo/components/style/gecko/wrapper.rs +++ b/servo/components/style/gecko/wrapper.rs @@ -147,6 +147,30 @@ impl<'lr> TShadowRoot for GeckoShadowRoot<'lr> { fn host(&self) -> GeckoElement<'lr> { GeckoElement(unsafe { &*self.0._base.mHost.mRawPtr }) } + + #[inline] + fn style_data<'a>(&self) -> &'a CascadeData + where + Self: 'a, + { + debug_assert!(!self.0.mServoStyles.mPtr.is_null()); + + let author_styles = unsafe { + &*(self.0.mServoStyles.mPtr + as *const structs::RawServoAuthorStyles + as *const bindings::RawServoAuthorStyles) + }; + + let author_styles = + AuthorStyles::::from_ffi(author_styles); + + debug_assert!( + author_styles.quirks_mode == self.as_node().owner_doc().quirks_mode() || + author_styles.stylesheets.is_empty() + ); + + &author_styles.data + } } /// A simple wrapper over a non-null Gecko node (`nsINode`) pointer. @@ -1457,26 +1481,6 @@ impl<'le> TElement for GeckoElement<'le> { // rule_hash_target, that is, our originating element. let mut current = Some(self.rule_hash_target()); while let Some(element) = current { - // TODO(emilio): Deal with Shadow DOM separately than with XBL - // (right now we still rely on get_xbl_binding_parent()). - // - // That will allow to clean up a bunch in - // push_applicable_declarations. - if let Some(shadow) = element.shadow_root() { - debug_assert!(!shadow.0.mServoStyles.mPtr.is_null()); - let author_styles = unsafe { - &*(shadow.0.mServoStyles.mPtr - as *const structs::RawServoAuthorStyles - as *const bindings::RawServoAuthorStyles) - }; - - let author_styles: &'a _ = AuthorStyles::::from_ffi(author_styles); - f(&author_styles.data, author_styles.quirks_mode); - if element != *self { - break; - } - } - if let Some(binding) = element.xbl_binding() { binding.each_xbl_cascade_data(&mut f); diff --git a/servo/components/style/invalidation/element/state_and_attributes.rs b/servo/components/style/invalidation/element/state_and_attributes.rs index 10a7f07aef4d..0c0bba24e899 100644 --- a/servo/components/style/invalidation/element/state_and_attributes.rs +++ b/servo/components/style/invalidation/element/state_and_attributes.rs @@ -57,7 +57,7 @@ where pub struct StateAndAttrInvalidationProcessor<'a, 'b: 'a, E: TElement> { shared_context: &'a SharedStyleContext<'b>, shadow_rule_datas: &'a [(&'b CascadeData, QuirksMode)], - cut_off_inheritance: bool, + matches_document_author_rules: bool, element: E, data: &'a mut ElementData, matching_context: MatchingContext<'a, E::Impl>, @@ -68,7 +68,7 @@ impl<'a, 'b: 'a, E: TElement> StateAndAttrInvalidationProcessor<'a, 'b, E> { pub fn new( shared_context: &'a SharedStyleContext<'b>, shadow_rule_datas: &'a [(&'b CascadeData, QuirksMode)], - cut_off_inheritance: bool, + matches_document_author_rules: bool, element: E, data: &'a mut ElementData, nth_index_cache: &'a mut NthIndexCache, @@ -84,7 +84,7 @@ impl<'a, 'b: 'a, E: TElement> StateAndAttrInvalidationProcessor<'a, 'b, E> { Self { shared_context, shadow_rule_datas, - cut_off_inheritance, + matches_document_author_rules, element, data, matching_context, @@ -248,7 +248,7 @@ where invalidates_self: false, }; - let document_origins = if self.cut_off_inheritance { + let document_origins = if !self.matches_document_author_rules { Origin::UserAgent.into() } else { OriginSet::all() diff --git a/servo/components/style/stylesheet_set.rs b/servo/components/style/stylesheet_set.rs index 56a384353bf2..fbff5501882f 100644 --- a/servo/components/style/stylesheet_set.rs +++ b/servo/components/style/stylesheet_set.rs @@ -263,7 +263,7 @@ where Self { entries: vec![], data_validity: DataValidity::Valid, - dirty: false, + dirty: true, } } } @@ -597,6 +597,11 @@ where self.collection.dirty } + /// Whether the collection is empty. + pub fn is_empty(&self) -> bool { + self.collection.len() == 0 + } + fn collection_for( &mut self, _sheet: &S, diff --git a/servo/components/style/stylist.rs b/servo/components/style/stylist.rs index cd4ff265009f..b5cb97b67190 100644 --- a/servo/components/style/stylist.rs +++ b/servo/components/style/stylist.rs @@ -7,7 +7,7 @@ use {Atom, LocalName, Namespace, WeakAtom}; use applicable_declarations::{ApplicableDeclarationBlock, ApplicableDeclarationList}; use context::{CascadeInputs, QuirksMode}; -use dom::TElement; +use dom::{TElement, TShadowRoot}; use element_state::{DocumentState, ElementState}; use font_metrics::FontMetricsProvider; #[cfg(feature = "gecko")] @@ -599,11 +599,12 @@ impl Stylist { let mut maybe = false; - let cut_off = element.each_applicable_non_document_style_rule_data(|data, quirks_mode| { - maybe = maybe || f(&*data, quirks_mode); - }); + let doc_author_rules_apply = + element.each_applicable_non_document_style_rule_data(|data, quirks_mode| { + maybe = maybe || f(&*data, quirks_mode); + }); - if maybe || cut_off { + if maybe || !doc_author_rules_apply { return maybe; } @@ -1251,6 +1252,8 @@ impl Stylist { } } + let mut match_document_author_rules = matches_author_rules; + // XBL / Shadow DOM rules, which are author rules too. // // TODO(emilio): Cascade order here is wrong for Shadow DOM. In @@ -1268,26 +1271,43 @@ impl Stylist { } for slot in slots.iter().rev() { - slot.each_xbl_cascade_data(|cascade_data, _quirks_mode| { - if let Some(map) = cascade_data.slotted_rules(pseudo_element) { - map.get_all_matching_rules( - element, - rule_hash_target, - applicable_declarations, - context, - flags_setter, - CascadeLevel::AuthorNormal - ); - } - }); + let styles = slot.containing_shadow().unwrap().style_data(); + if let Some(map) = styles.slotted_rules(pseudo_element) { + map.get_all_matching_rules( + element, + rule_hash_target, + applicable_declarations, + context, + flags_setter, + CascadeLevel::AuthorNormal, + ); + } + } + + // TODO(emilio): We need to look up :host rules if the element is a + // shadow host, when we implement that. + if let Some(containing_shadow) = rule_hash_target.containing_shadow() { + let cascade_data = containing_shadow.style_data(); + if let Some(map) = cascade_data.normal_rules(pseudo_element) { + map.get_all_matching_rules( + element, + rule_hash_target, + applicable_declarations, + context, + flags_setter, + CascadeLevel::AuthorNormal, + ); + } + + match_document_author_rules = false; } } - // FIXME(emilio): It looks very wrong to match XBL / Shadow DOM rules - // even for getDefaultComputedStyle! + // FIXME(emilio): It looks very wrong to match XBL rules even for + // getDefaultComputedStyle! // // Also, this doesn't account for the author_styles_enabled stuff. - let cut_off_inheritance = element.each_xbl_cascade_data(|cascade_data, quirks_mode| { + let cut_xbl_binding_inheritance = element.each_xbl_cascade_data(|cascade_data, quirks_mode| { if let Some(map) = cascade_data.normal_rules(pseudo_element) { // NOTE(emilio): This is needed because the XBL stylist may // think it has a different quirks mode than the document. @@ -1314,7 +1334,9 @@ impl Stylist { } }); - if matches_author_rules && !only_default_rules && !cut_off_inheritance { + match_document_author_rules &= !cut_xbl_binding_inheritance; + + if match_document_author_rules && !only_default_rules { // Author normal rules. if let Some(map) = self.cascade_data.author.normal_rules(pseudo_element) { map.get_all_matching_rules( From e4f04ff4cc6c47e6c8cfa88c6c7ca37cae1c2482 Mon Sep 17 00:00:00 2001 From: Jared Hirsch Date: Tue, 6 Mar 2018 14:24:03 -0800 Subject: [PATCH 18/65] Bug 1443648 - Restore high DPI scaling for most downloaded or copied shots; r=_6a68 * Don't overwrite correctly-scaled canvas dimensions when generating a shot async * Pass the shot type to downloadShot and copyShot, so that non-fullpage shots will be correctly scaled. Note that fullpage shots are always low DPI. MozReview-Commit-ID: 5SAnoJrJ88S --HG-- extra : rebase_source : 16e2ea24d027ebee7baaa0e0fed270e2f2bd3d3b --- .../screenshots/webextension/selector/shooter.js | 12 +++++------- .../screenshots/webextension/selector/uicontrol.js | 4 ++-- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/browser/extensions/screenshots/webextension/selector/shooter.js b/browser/extensions/screenshots/webextension/selector/shooter.js index 7e6b5bfa4cbe..7652ca562bcf 100644 --- a/browser/extensions/screenshots/webextension/selector/shooter.js +++ b/browser/extensions/screenshots/webextension/selector/shooter.js @@ -84,9 +84,7 @@ this.shooter = (function() { // eslint-disable-line no-unused-vars } const canvas = captureToCanvas(selectedPos, captureType); ui.iframe.showLoader(); - const width = selectedPos.right - selectedPos.left; - const height = selectedPos.bottom - selectedPos.top; - const imageData = canvas.getContext("2d").getImageData(0, 0, width, height); + const imageData = canvas.getContext("2d").getImageData(0, 0, canvas.width, canvas.height); return callBackground("canvasToDataURL", imageData); } @@ -180,8 +178,8 @@ this.shooter = (function() { // eslint-disable-line no-unused-vars })); }; - exports.downloadShot = function(selectedPos, previewDataUrl) { - const shotPromise = previewDataUrl ? Promise.resolve(previewDataUrl) : screenshotPageAsync(selectedPos, "fullPage"); + exports.downloadShot = function(selectedPos, previewDataUrl, type) { + const shotPromise = previewDataUrl ? Promise.resolve(previewDataUrl) : screenshotPageAsync(selectedPos, type); catcher.watchPromise(shotPromise.then(dataUrl => { let promise = Promise.resolve(dataUrl); if (!dataUrl) { @@ -214,7 +212,7 @@ this.shooter = (function() { // eslint-disable-line no-unused-vars }; let copyInProgress = null; - exports.copyShot = function(selectedPos, previewDataUrl) { + exports.copyShot = function(selectedPos, previewDataUrl, type) { // This is pretty slow. We'll ignore additional user triggered copy events // while it is in progress. if (copyInProgress) { @@ -231,7 +229,7 @@ this.shooter = (function() { // eslint-disable-line no-unused-vars copyInProgress = null; } } - const shotPromise = previewDataUrl ? Promise.resolve(previewDataUrl) : screenshotPageAsync(selectedPos, "fullPage"); + const shotPromise = previewDataUrl ? Promise.resolve(previewDataUrl) : screenshotPageAsync(selectedPos, type); catcher.watchPromise(shotPromise.then(dataUrl => { const blob = blobConverters.dataUrlToBlob(dataUrl); catcher.watchPromise(callBackground("copyShotToClipboard", blob).then(() => { diff --git a/browser/extensions/screenshots/webextension/selector/uicontrol.js b/browser/extensions/screenshots/webextension/selector/uicontrol.js index e5ba8aafcb7d..200ae22578b5 100644 --- a/browser/extensions/screenshots/webextension/selector/uicontrol.js +++ b/browser/extensions/screenshots/webextension/selector/uicontrol.js @@ -99,14 +99,14 @@ this.uicontrol = (function() { const previewDataUrl = (captureType === "fullPageTruncated") ? null : dataUrl; // Downloaded shots don't have dimension limits removeDimensionLimitsOnFullPageShot(); - shooter.downloadShot(selectedPos, previewDataUrl); + shooter.downloadShot(selectedPos, previewDataUrl, captureType); } function copyShot() { const previewDataUrl = (captureType === "fullPageTruncated") ? null : dataUrl; // Copied shots don't have dimension limits removeDimensionLimitsOnFullPageShot(); - shooter.copyShot(selectedPos, previewDataUrl); + shooter.copyShot(selectedPos, previewDataUrl, captureType); } /** ********************************************* From dc797492f3f76f24209f98a61ab2fb2ec9d6c396 Mon Sep 17 00:00:00 2001 From: Andreea Pavel Date: Wed, 7 Mar 2018 18:19:29 +0200 Subject: [PATCH 19/65] Backed out changeset 8a29a154e88d (bug 1435155) for browser chrome leakchecks (APZEventState, ActiveElementManager, Array, AsyncFreeSnowWhite, AsyncLatencyLogger, ...) on a CLOSED TREE --- dom/payments/PaymentRequest.cpp | 17 +++--------- dom/payments/PaymentRequest.h | 4 +-- dom/payments/test/ShowPaymentChromeScript.js | 4 +-- dom/payments/test/test_showPayment.html | 28 +++----------------- 4 files changed, 11 insertions(+), 42 deletions(-) diff --git a/dom/payments/PaymentRequest.cpp b/dom/payments/PaymentRequest.cpp index 7b0213dca9ad..1233ec9e311c 100644 --- a/dom/payments/PaymentRequest.cpp +++ b/dom/payments/PaymentRequest.cpp @@ -743,14 +743,9 @@ PaymentRequest::RespondShowPayment(const nsAString& aMethodName, return; } - // When the user agent has opted to redact the shipping address - // in earlier steps, the spec doesn't update the request with - // the unredacted address at this point. Maybe, to reduce the - // number of footguns, it should (without an event). - RefPtr paymentResponse = new PaymentResponse(GetOwner(), mInternalId, mId, aMethodName, - mShippingOption, mFullShippingAddress, aDetails, + mShippingOption, mShippingAddress, aDetails, aPayerName, aPayerEmail, aPayerPhone); mResponse = paymentResponse; mAcceptPromise->MaybeResolve(paymentResponse); @@ -945,15 +940,11 @@ PaymentRequest::UpdateShippingAddress(const nsAString& aCountry, const nsAString& aRecipient, const nsAString& aPhone) { - nsTArray emptyArray; - mShippingAddress = new PaymentAddress(GetOwner(), aCountry, emptyArray, + mShippingAddress = new PaymentAddress(GetOwner(), aCountry, aAddressLine, aRegion, aCity, aDependentLocality, aPostalCode, aSortingCode, aLanguageCode, - EmptyString(), EmptyString(), EmptyString()); - mFullShippingAddress = new PaymentAddress(GetOwner(), aCountry, aAddressLine, - aRegion, aCity, aDependentLocality, - aPostalCode, aSortingCode, aLanguageCode, - aOrganization, aRecipient, aPhone); + aOrganization, aRecipient, aPhone); + // Fire shippingaddresschange event return DispatchUpdateEvent(NS_LITERAL_STRING("shippingaddresschange")); } diff --git a/dom/payments/PaymentRequest.h b/dom/payments/PaymentRequest.h index 2d94ff4a61fa..475198a79fbd 100644 --- a/dom/payments/PaymentRequest.h +++ b/dom/payments/PaymentRequest.h @@ -161,10 +161,8 @@ protected: RefPtr mAbortPromise; // Resolve mAcceptPromise with mResponse if user accepts the request. RefPtr mResponse; - // The redacted shipping address. + // It is populated when the user provides a shipping address. RefPtr mShippingAddress; - // The full shipping address to be used in the response upon payment. - RefPtr mFullShippingAddress; // It is populated when the user chooses a shipping option. nsString mShippingOption; diff --git a/dom/payments/test/ShowPaymentChromeScript.js b/dom/payments/test/ShowPaymentChromeScript.js index cb533acf7065..8ddb1f7791fa 100644 --- a/dom/payments/test/ShowPaymentChromeScript.js +++ b/dom/payments/test/ShowPaymentChromeScript.js @@ -21,11 +21,11 @@ shippingAddress.init("USA", // country addressLine, // address line "CA", // region "San Bruno", // city - "Test locality", // dependent locality + "", // dependent locality "94066", // postal code "123456", // sorting code "en", // language code - "Testing Org", // organization + "", // organization "Bill A. Pacheco", // recipient "+1-434-441-3879"); // phone diff --git a/dom/payments/test/test_showPayment.html b/dom/payments/test/test_showPayment.html index db88a865b544..b1f7cc333ade 100644 --- a/dom/payments/test/test_showPayment.html +++ b/dom/payments/test/test_showPayment.html @@ -23,7 +23,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1345366 const defaultMethods = [{ supportedMethods: "basic-card", - data: { + data: { supportedNetworks: ['unionpay', 'visa', 'mastercard', 'amex', 'discover', 'diners', 'jcb', 'mir', ], @@ -160,16 +160,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1345366 return new Promise((resolve, reject) => { const payRequest = new PaymentRequest(defaultMethods, defaultDetails, defaultOptions); payRequest.addEventListener("shippingaddresschange", event => { - is(payRequest.shippingAddress.country, "USA", "payRequest.shippingAddress.country should be 'USA' from event."); - is(payRequest.shippingAddress.addressLine.length, 0, "payRequest.shippingAddress.addressLine.length should be 0 from event."); - is(payRequest.shippingAddress.region, "CA", "payRequest.shippingAddress.region should be 'CA' from event."); - is(payRequest.shippingAddress.city, "San Bruno", "payRequest.shippingAddress.city should be 'San Bruno' from event."); - is(payRequest.shippingAddress.dependentLocality, "Test locality", "payRequest.shippingAddress.dependentLocality should be 'Test locality' from event."); - is(payRequest.shippingAddress.postalCode, "94066", "payRequest.shippingAddress.postalCode should be '94066' from event."); - is(payRequest.shippingAddress.sortingCode, "123456", "payRequest.shippingAddress.sortingCode should be '123456' from event."); - is(payRequest.shippingAddress.organization, "", "payRequest.shippingAddress.organization should be empty from event."); - is(payRequest.shippingAddress.recipient, "", "payRequest.shippingAddress.recipient should be empty from event."); - is(payRequest.shippingAddress.phone, "", "payRequest.shippingAddress.phone should be empty from event."); event.updateWith(updateWithShippingAddress()); }); payRequest.addEventListener("shippingoptionchange", event => { @@ -184,26 +174,16 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1345366 is(response.shippingAddress.addressLine[0], "Easton Ave", "response.shippingAddress.addressLine[0] should be 'Easton Ave'."); is(response.shippingAddress.region, "CA", "response.shippingAddress.region should be 'CA'."); is(response.shippingAddress.city, "San Bruno", "response.shippingAddress.city should be 'San Bruno'."); - is(response.shippingAddress.dependentLocality, "Test locality", "response.shippingAddress.dependentLocality should be 'Test locality'."); + is(response.shippingAddress.dependentLocality, "", "response.shippingAddress.dependentLocality should be empty."); is(response.shippingAddress.postalCode, "94066", "response.shippingAddress.postalCode should be '94066'."); is(response.shippingAddress.sortingCode, "123456", "response.shippingAddress.sortingCode should be '123456'."); - is(response.shippingAddress.organization, "Testing Org", "response.shippingAddress.organization should be 'Testing Org'."); + is(response.shippingAddress.organization, "", "response.shippingAddress.organization should be empty."); is(response.shippingAddress.recipient, "Bill A. Pacheco", "response.shippingAddress.recipient should be 'Bill A. Pacheco'."); is(response.shippingAddress.phone, "+1-434-441-3879", "response.shippingAddress.phone should be '+1-434-441-3879'."); is(response.shippingOption, "FastShipping", "response.shippingOption should be 'FastShipping'."); is(response.payerName, "Bill A. Pacheco", "response.payerName should be 'Bill A. Pacheco'."); - ok(!response.payerEmail, "response.payerEmail should be empty"); + ok(!response.payerEamil, "response.payerEmail should be empty"); ok(!response.payerPhone, "response.payerPhone should be empty"); - is(payRequest.shippingAddress.country, "USA", "payRequest.shippingAddress.country should be 'USA' from promise."); - is(payRequest.shippingAddress.addressLine.length, 0, "payRequest.shippingAddress.addressLine.length should be 0 from promise."); - is(payRequest.shippingAddress.region, "CA", "payRequest.shippingAddress.region should be 'CA' from promise."); - is(payRequest.shippingAddress.city, "San Bruno", "payRequest.shippingAddress.city should be 'San Bruno' from promise."); - is(payRequest.shippingAddress.dependentLocality, "Test locality", "payRequest.shippingAddress.dependentLocality should be 'Test locality' from promise."); - is(payRequest.shippingAddress.postalCode, "94066", "payRequest.shippingAddress.postalCode should be '94066' from promise."); - is(payRequest.shippingAddress.sortingCode, "123456", "payRequest.shippingAddress.sortingCode should be '123456' from promise."); - is(payRequest.shippingAddress.organization, "", "payRequest.shippingAddress.organization should be empty from promise."); - is(payRequest.shippingAddress.recipient, "", "payRequest.shippingAddress.recipient should be empty from promise."); - is(payRequest.shippingAddress.phone, "", "payRequest.shippingAddress.phone should be empty from promise."); response.complete("success").then(() =>{ resolve(); }).catch(e => { From 4f22af99ae86bf6830a7d84f47d3103d14493ebd Mon Sep 17 00:00:00 2001 From: Jan Odvarko Date: Wed, 7 Mar 2018 13:33:19 +0100 Subject: [PATCH 20/65] Bug 1434855 - Refactor HAR builder options; r=ochameau MozReview-Commit-ID: A6wd5LvD19J --HG-- extra : rebase_source : d55b93b9713cb3b32c0e534e0e0414721ea781bc --- devtools/client/netmonitor/initializer.js | 19 ++-------------- .../client/netmonitor/src/har/har-exporter.js | 22 +++++++++++++++++-- .../src/widgets/RequestListContextMenu.js | 13 +---------- 3 files changed, 23 insertions(+), 31 deletions(-) diff --git a/devtools/client/netmonitor/initializer.js b/devtools/client/netmonitor/initializer.js index c6b4d02815d8..0b422f5fa966 100644 --- a/devtools/client/netmonitor/initializer.js +++ b/devtools/client/netmonitor/initializer.js @@ -105,21 +105,11 @@ window.Netmonitor = { */ getHar() { let { HarExporter } = require("devtools/client/netmonitor/src/har/har-exporter"); - let { - getLongString, - getTabTarget, - getTimingMarker, - requestData, - } = connector; - let { form: { title, url } } = getTabTarget(); let state = store.getState(); let options = { - getString: getLongString, + connector, items: getSortedRequests(state), - requestData, - getTimingMarker, - title: title || url, }; return HarExporter.getHar(options); @@ -136,13 +126,8 @@ window.Netmonitor = { } let { HarExporter } = require("devtools/client/netmonitor/src/har/har-exporter"); - let { getLongString, getTabTarget, requestData } = connector; - let { form: { title, url } } = getTabTarget(); - let options = { - getString: getLongString, - requestData, - title: title || url, + connector, includeResponseBodies: false, items: [getDisplayedRequestById(store.getState(), requestId)], }; diff --git a/devtools/client/netmonitor/src/har/har-exporter.js b/devtools/client/netmonitor/src/har/har-exporter.js index cf95fd74cdf0..dd15d6c5a218 100644 --- a/devtools/client/netmonitor/src/har/har-exporter.js +++ b/devtools/client/netmonitor/src/har/har-exporter.js @@ -186,10 +186,28 @@ const HarExporter = { * since it can involve additional RDP communication (e.g. resolving * long strings). */ - buildHarData: function (options) { + buildHarData: async function (options) { + let { connector } = options; + let { + getTabTarget, + } = connector; + let { + form: { title, url } + } = getTabTarget(); + + options = { + ...options, + title: title || url, + getString: connector.getLongString, + getTimingMarker: connector.getTimingMarker, + requestData: connector.requestData, + }; + // Build HAR object from collected data. let builder = new HarBuilder(options); - return builder.build(); + let result = await builder.build(); + + return result; }, /** diff --git a/devtools/client/netmonitor/src/widgets/RequestListContextMenu.js b/devtools/client/netmonitor/src/widgets/RequestListContextMenu.js index be953a86516e..85191c5f2b46 100644 --- a/devtools/client/netmonitor/src/widgets/RequestListContextMenu.js +++ b/devtools/client/netmonitor/src/widgets/RequestListContextMenu.js @@ -409,20 +409,9 @@ class RequestListContextMenu { } getDefaultHarOptions(sortedRequests) { - let { - getLongString, - getTabTarget, - requestData, - getTimingMarker, - } = this.props.connector; - let { form: { title, url } } = getTabTarget(); - return { - getString: getLongString, + connector: this.props.connector, items: sortedRequests, - requestData, - getTimingMarker, - title: title || url, }; } } From de47c2a2d79b32ea89f26792295912ab70243274 Mon Sep 17 00:00:00 2001 From: Jan Odvarko Date: Wed, 7 Mar 2018 17:29:34 +0100 Subject: [PATCH 21/65] Bug 1434855 - Improve performance of HAR export; r=ochameau MozReview-Commit-ID: 6H6P6wYmdQL --HG-- extra : rebase_source : 9a6192630ff2641a07f187bcf55c365fe8f66ab9 --- .../src/connector/chrome-connector.js | 4 ++++ .../src/connector/firefox-connector.js | 4 ++++ .../src/connector/firefox-data-provider.js | 18 ++++++++++++++---- .../client/netmonitor/src/connector/index.js | 4 ++++ .../client/netmonitor/src/har/har-exporter.js | 6 ++++++ 5 files changed, 32 insertions(+), 4 deletions(-) diff --git a/devtools/client/netmonitor/src/connector/chrome-connector.js b/devtools/client/netmonitor/src/connector/chrome-connector.js index ce42303d1a64..4e18ddff6172 100644 --- a/devtools/client/netmonitor/src/connector/chrome-connector.js +++ b/devtools/client/netmonitor/src/connector/chrome-connector.js @@ -43,6 +43,10 @@ class ChromeConnector { this.setup(); } + enableActions(enable) { + // TODO : implement. + } + /** * currently all events are about "navigation" is not support on CDP */ diff --git a/devtools/client/netmonitor/src/connector/firefox-connector.js b/devtools/client/netmonitor/src/connector/firefox-connector.js index bde1baf68e8e..f82ea666e72c 100644 --- a/devtools/client/netmonitor/src/connector/firefox-connector.js +++ b/devtools/client/netmonitor/src/connector/firefox-connector.js @@ -127,6 +127,10 @@ class FirefoxConnector { } } + enableActions(enable) { + this.dataProvider.enableActions(enable); + } + willNavigate() { if (!Services.prefs.getBoolPref("devtools.netmonitor.persistlog")) { this.actions.batchReset(); diff --git a/devtools/client/netmonitor/src/connector/firefox-data-provider.js b/devtools/client/netmonitor/src/connector/firefox-data-provider.js index 49a5dbc2c176..9cdff170b872 100644 --- a/devtools/client/netmonitor/src/connector/firefox-data-provider.js +++ b/devtools/client/netmonitor/src/connector/firefox-data-provider.js @@ -22,6 +22,7 @@ class FirefoxDataProvider { // Options this.webConsoleClient = webConsoleClient; this.actions = actions; + this.actionsEnabled = true; // Internal properties this.payloadQueue = new Map(); @@ -38,6 +39,15 @@ class FirefoxDataProvider { this.onNetworkEventUpdate = this.onNetworkEventUpdate.bind(this); } + /** + * Enable/disable firing redux actions (enabled by default). + * + * @param {boolean} enable Set to true to fire actions. + */ + enableActions(enable) { + this.actionsEnabled = enable; + } + /** * Add a new network request to application state. * @@ -55,7 +65,7 @@ class FirefoxDataProvider { fromServiceWorker, } = data; - if (this.actions.addRequest) { + if (this.actionsEnabled && this.actions.addRequest) { await this.actions.addRequest(id, { // Convert the received date/time string to a unix timestamp. startedMillis: Date.parse(startedDateTime), @@ -120,7 +130,7 @@ class FirefoxDataProvider { responseCookiesObj ); - if (this.actions.updateRequest) { + if (this.actionsEnabled && this.actions.updateRequest) { await this.actions.updateRequest(id, payload, true); } @@ -377,7 +387,7 @@ class FirefoxDataProvider { this.payloadQueue.delete(actor); - if (this.actions.updateRequest) { + if (this.actionsEnabled && this.actions.updateRequest) { await this.actions.updateRequest(actor, payload, true); } @@ -414,7 +424,7 @@ class FirefoxDataProvider { // data again. this.lazyRequestData.delete(key); - if (this.actions.updateRequest) { + if (this.actionsEnabled && this.actions.updateRequest) { await this.actions.updateRequest(actor, { ...payload, // Lockdown *Available property once we fetch data from back-end. diff --git a/devtools/client/netmonitor/src/connector/index.js b/devtools/client/netmonitor/src/connector/index.js index b4bdac9b09fa..7c748ad7b47f 100644 --- a/devtools/client/netmonitor/src/connector/index.js +++ b/devtools/client/netmonitor/src/connector/index.js @@ -71,6 +71,10 @@ class Connector { return this.connector.resume(); } + enableActions() { + this.connector.enableActions(...arguments); + } + // Public API getLongString() { diff --git a/devtools/client/netmonitor/src/har/har-exporter.js b/devtools/client/netmonitor/src/har/har-exporter.js index dd15d6c5a218..3428fb0e5473 100644 --- a/devtools/client/netmonitor/src/har/har-exporter.js +++ b/devtools/client/netmonitor/src/har/har-exporter.js @@ -195,6 +195,9 @@ const HarExporter = { form: { title, url } } = getTabTarget(); + // Disconnect from redux actions/store. + connector.enableActions(false); + options = { ...options, title: title || url, @@ -207,6 +210,9 @@ const HarExporter = { let builder = new HarBuilder(options); let result = await builder.build(); + // Connect to redux actions again. + connector.enableActions(true); + return result; }, From 0c4bf8d6ce5949cc8394c972b1f1198a1ab311b7 Mon Sep 17 00:00:00 2001 From: Timothy Guan-tin Chien Date: Fri, 2 Mar 2018 17:03:13 -0800 Subject: [PATCH 22/65] Bug 1442795 - Remove scale-thumb and scale-slider bindings r=enndeakin+6102 Both bindings contain no content to be styled, and their own styles are applied by import from the scale binding. This patch also moves the binding rules from minimal-xul.css to xul.css, given that while is used in , HTML documents containing
diff --git a/toolkit/components/payments/res/debugging.js b/toolkit/components/payments/res/debugging.js index b70d6ca65a03..413aedc83c8c 100644 --- a/toolkit/components/payments/res/debugging.js +++ b/toolkit/components/payments/res/debugging.js @@ -305,6 +305,12 @@ let buttonActions = { completionState: "fail", }); }, + + setStateUnknown() { + requestStore.setState({ + completionState: "unknown", + }); + }, }; window.addEventListener("click", function onButtonClick(evt) { diff --git a/toolkit/components/payments/res/paymentRequest.css b/toolkit/components/payments/res/paymentRequest.css index 25fe35f59cff..d607499ebfd8 100644 --- a/toolkit/components/payments/res/paymentRequest.css +++ b/toolkit/components/payments/res/paymentRequest.css @@ -83,6 +83,7 @@ payment-dialog > footer { } payment-dialog[changes-prevented][completion-state="fail"] #pay, +payment-dialog[changes-prevented][completion-state="unknown"] #pay, payment-dialog[changes-prevented][completion-state="processing"] #pay, payment-dialog[changes-prevented][completion-state="success"] #pay { /* Show the pay button above #disabled-overlay */ diff --git a/toolkit/components/payments/res/paymentRequest.xhtml b/toolkit/components/payments/res/paymentRequest.xhtml index ede856fc6c04..99ce00995cdb 100644 --- a/toolkit/components/payments/res/paymentRequest.xhtml +++ b/toolkit/components/payments/res/paymentRequest.xhtml @@ -15,6 +15,7 @@ + ]> @@ -91,6 +92,7 @@ data-initial-label="&approvePaymentButton.label;" data-processing-label="&processingPaymentButton.label;" data-fail-label="&failPaymentButton.label;" + data-unknown-label="&unknownPaymentButton.label;" data-success-label="&successPaymentButton.label;"> diff --git a/toolkit/components/payments/test/mochitest/test_payment_dialog.html b/toolkit/components/payments/test/mochitest/test_payment_dialog.html index 5101eb397020..986b5b31f404 100644 --- a/toolkit/components/payments/test/mochitest/test_payment_dialog.html +++ b/toolkit/components/payments/test/mochitest/test_payment_dialog.html @@ -40,6 +40,7 @@ let completionStates = [ ["processing", "Processing"], ["success", "Done"], ["fail", "Fail"], + ["unknown", "Unknown"], ]; /* test that: From 1944da9fb8638299494f19621233088f8459dd0e Mon Sep 17 00:00:00 2001 From: Jared Wein Date: Wed, 28 Feb 2018 14:57:54 -0500 Subject: [PATCH 41/65] Bug 1429213 - Time out the payment dialog after the user clicks 'Pay', closing the dialog if response.complete() is not called. r=MattN MozReview-Commit-ID: 8IswziomlHF --HG-- extra : rebase_source : 2d69269b895a1703a1b3ed2886ac033ddce9ce12 --- modules/libpref/init/all.js | 1 + .../payments/content/paymentDialogWrapper.js | 6 +++ .../components/payments/paymentUIService.js | 4 ++ .../payments/test/browser/browser.ini | 1 + .../test/browser/browser_show_dialog.js | 45 +++++++++++++++++++ 5 files changed, 57 insertions(+) diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index a152e4944e95..4e0591fd9b9e 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -5965,6 +5965,7 @@ pref("dom.timeout.max_consecutive_callbacks_ms", 4); // Use this preference to house "Payment Request API" during development pref("dom.payments.request.enabled", false); pref("dom.payments.loglevel", "Warn"); +pref("dom.payments.unknownTimeoutMS", 5000); #ifdef FUZZING pref("fuzzing.enabled", false); diff --git a/toolkit/components/payments/content/paymentDialogWrapper.js b/toolkit/components/payments/content/paymentDialogWrapper.js index 707fa9058def..ec167b8cf0b0 100644 --- a/toolkit/components/payments/content/paymentDialogWrapper.js +++ b/toolkit/components/payments/content/paymentDialogWrapper.js @@ -411,6 +411,12 @@ var paymentDialogWrapper = { }); paymentSrv.respondPayment(showResponse); this.sendMessageToContent("responseSent"); + + // If the merchant has not called response.complete() within unknownTimeoutMS + // then we will close the dialog, treating it the same as if the merchant + // passed "unknown" to response.complete(). + const timeoutMS = Services.prefs.getIntPref("dom.payments.unknownTimeoutMS"); + window.unknownTimeoutId = window.setTimeout(window.close, timeoutMS); }, async onChangeShippingAddress({shippingAddressGUID}) { diff --git a/toolkit/components/payments/paymentUIService.js b/toolkit/components/payments/paymentUIService.js index e9d57d1f99cb..ba87e7d86496 100644 --- a/toolkit/components/payments/paymentUIService.js +++ b/toolkit/components/payments/paymentUIService.js @@ -69,6 +69,10 @@ PaymentUIService.prototype = { completePayment(requestId) { this.log.debug("completePayment:", requestId); + let dialog = this.findDialog(requestId); + if (dialog && dialog.unknownTimeoutId) { + dialog.clearTimeout(dialog.unknownTimeoutId); + } let closed = this.closeDialog(requestId); let responseCode = closed ? Ci.nsIPaymentActionResponse.COMPLETE_SUCCEEDED : diff --git a/toolkit/components/payments/test/browser/browser.ini b/toolkit/components/payments/test/browser/browser.ini index 1d19113ed09e..867c24c9569c 100644 --- a/toolkit/components/payments/test/browser/browser.ini +++ b/toolkit/components/payments/test/browser/browser.ini @@ -2,6 +2,7 @@ head = head.js prefs = dom.payments.request.enabled=true + dom.payments.unknownTimeoutMS=0 skip-if = !e10s # Bug 1365964 - Payment Request isn't implemented for non-e10s support-files = blank_page.html diff --git a/toolkit/components/payments/test/browser/browser_show_dialog.js b/toolkit/components/payments/test/browser/browser_show_dialog.js index 8e3c07309f0d..7360365a7ac9 100644 --- a/toolkit/components/payments/test/browser/browser_show_dialog.js +++ b/toolkit/components/payments/test/browser/browser_show_dialog.js @@ -161,3 +161,48 @@ add_task(async function test_show_completePayment() { await BrowserTestUtils.waitForCondition(() => win.closed, "dialog should be closed"); }); }); + +add_task(async function test_complete_called_dialog_closed() { + await BrowserTestUtils.withNewTab({ + gBrowser, + url: BLANK_PAGE_URL, + }, async browser => { + let {win, frame} = + await setupPaymentDialog(browser, { + methodData, + details, + merchantTaskFn: PTU.ContentTasks.createAndShowRequest, + } + ); + + info("clicking pay"); + spawnPaymentDialogTask(frame, PTU.DialogContentTasks.completePayment); + + // Add a handler to complete the payment above. + info("acknowledging the completion from the merchant page"); + await ContentTask.spawn(browser, {}, PTU.ContentTasks.addCompletionHandler); + + await BrowserTestUtils.waitForCondition(() => win.closed, "dialog should be closed"); + }); +}); + +add_task(async function test_complete_not_called_dialog_autoclosed() { + await BrowserTestUtils.withNewTab({ + gBrowser, + url: BLANK_PAGE_URL, + }, async browser => { + let {win, frame} = + await setupPaymentDialog(browser, { + methodData, + details, + merchantTaskFn: PTU.ContentTasks.createAndShowRequest, + } + ); + + info("clicking pay"); + spawnPaymentDialogTask(frame, PTU.DialogContentTasks.completePayment); + + // Not calling response.complete() should cause the dialog to timeout and autoclose. + await BrowserTestUtils.waitForCondition(() => win.closed, "dialog should be closed"); + }); +}); From 93e46d9a9bd01591f652bcce25f8362560d1c1b4 Mon Sep 17 00:00:00 2001 From: Daniel Holbert Date: Tue, 6 Mar 2018 15:59:36 -0800 Subject: [PATCH 42/65] Bug 1443672: Adjust a few .cpp files in layout to #include their own header first. r=emilio MozReview-Commit-ID: L4ZSDT5Akhi --HG-- extra : rebase_source : 4795c4eaf84957639f446471788697956fe2bf17 --- layout/base/nsBidiPresUtils.cpp | 3 ++- layout/base/nsFrameManager.cpp | 3 ++- layout/base/nsFrameTraversal.cpp | 4 +++- layout/base/nsPresContext.cpp | 3 ++- layout/base/nsRefreshDriver.cpp | 3 ++- layout/generic/ScrollSnap.cpp | 3 ++- layout/generic/nsInlineFrame.cpp | 3 ++- 7 files changed, 15 insertions(+), 7 deletions(-) diff --git a/layout/base/nsBidiPresUtils.cpp b/layout/base/nsBidiPresUtils.cpp index ce7fa21c951e..7fc96d69277c 100644 --- a/layout/base/nsBidiPresUtils.cpp +++ b/layout/base/nsBidiPresUtils.cpp @@ -4,11 +4,12 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include "nsBidiPresUtils.h" + #include "mozilla/IntegerRange.h" #include "gfxContext.h" #include "nsAutoPtr.h" -#include "nsBidiPresUtils.h" #include "nsFontMetrics.h" #include "nsGkAtoms.h" #include "nsPresContext.h" diff --git a/layout/base/nsFrameManager.cpp b/layout/base/nsFrameManager.cpp index e7292b49df55..a965debcf7c6 100644 --- a/layout/base/nsFrameManager.cpp +++ b/layout/base/nsFrameManager.cpp @@ -6,6 +6,8 @@ /* storage of the frame tree and information about it */ +#include "nsFrameManager.h" + #include "nscore.h" #include "nsIPresShell.h" #include "nsStyleContext.h" @@ -25,7 +27,6 @@ #include "nsAbsoluteContainingBlock.h" #include "ChildIterator.h" -#include "nsFrameManager.h" #include "GeckoProfiler.h" #include "nsIStatefulFrame.h" #include "nsContainerFrame.h" diff --git a/layout/base/nsFrameTraversal.cpp b/layout/base/nsFrameTraversal.cpp index 2b500eb4ec1a..c9112a396a28 100644 --- a/layout/base/nsFrameTraversal.cpp +++ b/layout/base/nsFrameTraversal.cpp @@ -3,10 +3,12 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsFrameTraversal.h" + #include "nsCOMPtr.h" #include "nsGkAtoms.h" -#include "nsFrameTraversal.h" #include "nsFrameList.h" #include "nsPlaceholderFrame.h" #include "nsContainerFrame.h" diff --git a/layout/base/nsPresContext.cpp b/layout/base/nsPresContext.cpp index 40bfb5fe4293..96c03d443a32 100644 --- a/layout/base/nsPresContext.cpp +++ b/layout/base/nsPresContext.cpp @@ -6,6 +6,8 @@ /* a presentation of a document, part 1 */ +#include "nsPresContext.h" + #include "mozilla/ArrayUtils.h" #include "mozilla/DebugOnly.h" #include "mozilla/Encoding.h" @@ -16,7 +18,6 @@ #include "nsCOMPtr.h" #include "nsCSSFrameConstructor.h" -#include "nsPresContext.h" #include "nsIPresShell.h" #include "nsIPresShellInlines.h" #include "nsDocShell.h" diff --git a/layout/base/nsRefreshDriver.cpp b/layout/base/nsRefreshDriver.cpp index f46eee8ab36f..025806f045d2 100644 --- a/layout/base/nsRefreshDriver.cpp +++ b/layout/base/nsRefreshDriver.cpp @@ -17,6 +17,8 @@ * implement things like blocking on vsync. */ +#include "nsRefreshDriver.h" + #ifdef XP_WIN #include // mmsystem isn't part of WIN32_LEAN_AND_MEAN, so we have @@ -30,7 +32,6 @@ #include "mozilla/AutoRestore.h" #include "mozilla/IntegerRange.h" #include "nsHostObjectProtocolHandler.h" -#include "nsRefreshDriver.h" #include "nsITimer.h" #include "nsLayoutUtils.h" #include "nsPresContext.h" diff --git a/layout/generic/ScrollSnap.cpp b/layout/generic/ScrollSnap.cpp index 73d25cb30d1d..60712a7fee20 100644 --- a/layout/generic/ScrollSnap.cpp +++ b/layout/generic/ScrollSnap.cpp @@ -4,8 +4,9 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#include "FrameMetrics.h" #include "ScrollSnap.h" + +#include "FrameMetrics.h" #include "gfxPrefs.h" #include "mozilla/Maybe.h" #include "mozilla/Preferences.h" diff --git a/layout/generic/nsInlineFrame.cpp b/layout/generic/nsInlineFrame.cpp index c6fd93d830a0..6ee2ddc58def 100644 --- a/layout/generic/nsInlineFrame.cpp +++ b/layout/generic/nsInlineFrame.cpp @@ -6,8 +6,9 @@ /* rendering object for CSS display:inline objects */ -#include "gfxContext.h" #include "nsInlineFrame.h" + +#include "gfxContext.h" #include "nsLineLayout.h" #include "nsBlockFrame.h" #include "nsPlaceholderFrame.h" From cd3acbd1c35e13c3a1065048c4f2adccf91d13f9 Mon Sep 17 00:00:00 2001 From: Timothy Guan-tin Chien Date: Tue, 6 Mar 2018 14:05:03 -0800 Subject: [PATCH 43/65] Bug 1443635 - Remove the custom XUL tag r=Paolo Restore it to be s so that nsAccessibilityService can produce correct accessibles. MozReview-Commit-ID: 1QiGyKPNifZ --HG-- extra : rebase_source : 32f3c636d7c7baa7e6a4be8b1a019e4ff32e50b4 --- toolkit/mozapps/update/content/history.js | 4 +++- toolkit/mozapps/update/content/updates.css | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/toolkit/mozapps/update/content/history.js b/toolkit/mozapps/update/content/history.js index 1b32035ff544..dcf6dcb7a6a9 100644 --- a/toolkit/mozapps/update/content/history.js +++ b/toolkit/mozapps/update/content/history.js @@ -26,6 +26,7 @@ var gUpdateHistory = { for (var i = 0; i < uc; ++i) { var update = um.getUpdateAt(i); + if (!update || !update.name) continue; @@ -34,7 +35,8 @@ var gUpdateHistory = { if (!update.statusText) continue; - var element = document.createElementNS(NS_XUL, "update"); + var element = document.createElementNS(NS_XUL, "richlistitem"); + element.className = "update"; this._view.appendChild(element); element.name = bundle.getFormattedString("updateFullName", [update.name, update.buildID]); diff --git a/toolkit/mozapps/update/content/updates.css b/toolkit/mozapps/update/content/updates.css index e83c3be03a26..7930e344aac4 100644 --- a/toolkit/mozapps/update/content/updates.css +++ b/toolkit/mozapps/update/content/updates.css @@ -4,7 +4,7 @@ display: none; } -/* Hide the wizard's header so the size of the billboard can size the window +/* Hide the wizard's header so the size of the billboard can size the window on creation. A custom header will be used in its place when a header is needed. */ .wizard-header { @@ -26,7 +26,7 @@ updateheader { } /* Update History Window */ -update { +richlistitem.update { -moz-binding: url("chrome://mozapps/content/update/updates.xml#update"); display: -moz-box; -moz-box-orient: vertical; From 2062223489b029df9d6d69c5c30395c4404335b5 Mon Sep 17 00:00:00 2001 From: Noemi Erli Date: Wed, 7 Mar 2018 20:55:26 +0200 Subject: [PATCH 44/65] Backed out changeset 04fecea9eaf0 (bug 1443672) as per dholbert's request on a CLOSED TREE --- layout/base/nsBidiPresUtils.cpp | 3 +-- layout/base/nsFrameManager.cpp | 3 +-- layout/base/nsFrameTraversal.cpp | 4 +--- layout/base/nsPresContext.cpp | 3 +-- layout/base/nsRefreshDriver.cpp | 3 +-- layout/generic/ScrollSnap.cpp | 3 +-- layout/generic/nsInlineFrame.cpp | 3 +-- 7 files changed, 7 insertions(+), 15 deletions(-) diff --git a/layout/base/nsBidiPresUtils.cpp b/layout/base/nsBidiPresUtils.cpp index 7fc96d69277c..ce7fa21c951e 100644 --- a/layout/base/nsBidiPresUtils.cpp +++ b/layout/base/nsBidiPresUtils.cpp @@ -4,12 +4,11 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#include "nsBidiPresUtils.h" - #include "mozilla/IntegerRange.h" #include "gfxContext.h" #include "nsAutoPtr.h" +#include "nsBidiPresUtils.h" #include "nsFontMetrics.h" #include "nsGkAtoms.h" #include "nsPresContext.h" diff --git a/layout/base/nsFrameManager.cpp b/layout/base/nsFrameManager.cpp index a965debcf7c6..e7292b49df55 100644 --- a/layout/base/nsFrameManager.cpp +++ b/layout/base/nsFrameManager.cpp @@ -6,8 +6,6 @@ /* storage of the frame tree and information about it */ -#include "nsFrameManager.h" - #include "nscore.h" #include "nsIPresShell.h" #include "nsStyleContext.h" @@ -27,6 +25,7 @@ #include "nsAbsoluteContainingBlock.h" #include "ChildIterator.h" +#include "nsFrameManager.h" #include "GeckoProfiler.h" #include "nsIStatefulFrame.h" #include "nsContainerFrame.h" diff --git a/layout/base/nsFrameTraversal.cpp b/layout/base/nsFrameTraversal.cpp index c9112a396a28..2b500eb4ec1a 100644 --- a/layout/base/nsFrameTraversal.cpp +++ b/layout/base/nsFrameTraversal.cpp @@ -3,12 +3,10 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "nsFrameTraversal.h" - #include "nsCOMPtr.h" #include "nsGkAtoms.h" +#include "nsFrameTraversal.h" #include "nsFrameList.h" #include "nsPlaceholderFrame.h" #include "nsContainerFrame.h" diff --git a/layout/base/nsPresContext.cpp b/layout/base/nsPresContext.cpp index 96c03d443a32..40bfb5fe4293 100644 --- a/layout/base/nsPresContext.cpp +++ b/layout/base/nsPresContext.cpp @@ -6,8 +6,6 @@ /* a presentation of a document, part 1 */ -#include "nsPresContext.h" - #include "mozilla/ArrayUtils.h" #include "mozilla/DebugOnly.h" #include "mozilla/Encoding.h" @@ -18,6 +16,7 @@ #include "nsCOMPtr.h" #include "nsCSSFrameConstructor.h" +#include "nsPresContext.h" #include "nsIPresShell.h" #include "nsIPresShellInlines.h" #include "nsDocShell.h" diff --git a/layout/base/nsRefreshDriver.cpp b/layout/base/nsRefreshDriver.cpp index 025806f045d2..f46eee8ab36f 100644 --- a/layout/base/nsRefreshDriver.cpp +++ b/layout/base/nsRefreshDriver.cpp @@ -17,8 +17,6 @@ * implement things like blocking on vsync. */ -#include "nsRefreshDriver.h" - #ifdef XP_WIN #include // mmsystem isn't part of WIN32_LEAN_AND_MEAN, so we have @@ -32,6 +30,7 @@ #include "mozilla/AutoRestore.h" #include "mozilla/IntegerRange.h" #include "nsHostObjectProtocolHandler.h" +#include "nsRefreshDriver.h" #include "nsITimer.h" #include "nsLayoutUtils.h" #include "nsPresContext.h" diff --git a/layout/generic/ScrollSnap.cpp b/layout/generic/ScrollSnap.cpp index 60712a7fee20..73d25cb30d1d 100644 --- a/layout/generic/ScrollSnap.cpp +++ b/layout/generic/ScrollSnap.cpp @@ -4,9 +4,8 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#include "ScrollSnap.h" - #include "FrameMetrics.h" +#include "ScrollSnap.h" #include "gfxPrefs.h" #include "mozilla/Maybe.h" #include "mozilla/Preferences.h" diff --git a/layout/generic/nsInlineFrame.cpp b/layout/generic/nsInlineFrame.cpp index 6ee2ddc58def..c6fd93d830a0 100644 --- a/layout/generic/nsInlineFrame.cpp +++ b/layout/generic/nsInlineFrame.cpp @@ -6,9 +6,8 @@ /* rendering object for CSS display:inline objects */ -#include "nsInlineFrame.h" - #include "gfxContext.h" +#include "nsInlineFrame.h" #include "nsLineLayout.h" #include "nsBlockFrame.h" #include "nsPlaceholderFrame.h" From 8de88149ccd1b31e7e9e8f69a8f02ddeb8e9327e Mon Sep 17 00:00:00 2001 From: Andreas Pehrson Date: Tue, 6 Mar 2018 19:22:51 +0100 Subject: [PATCH 45/65] Bug 1443585 - Remove fake:true from test_pc_trackDisabling.html. r=jib MozReview-Commit-ID: K8KMF7sYoul --HG-- extra : rebase_source : 08cb4d08daae7e5c05624c6beb048976678e929d --- .../mochitest/test_peerConnection_trackDisabling.html | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/dom/media/tests/mochitest/test_peerConnection_trackDisabling.html b/dom/media/tests/mochitest/test_peerConnection_trackDisabling.html index 8fd90c6aa18c..86ff20619350 100644 --- a/dom/media/tests/mochitest/test_peerConnection_trackDisabling.html +++ b/dom/media/tests/mochitest/test_peerConnection_trackDisabling.html @@ -21,9 +21,7 @@ runNetworkTest(async () => { ["media.getusermedia.microphone.stop_on_disable.enabled", true], ["media.getusermedia.microphone.stop_on_disable.delay_ms", 0]); - // Always use fake tracks since we depend on video to be somewhat green and - // audio to have a large 1000Hz component (or 440Hz if using fake devices). - test.setMediaConstraints([{audio: true, video: true, fake: true}], []); + test.setMediaConstraints([{audio: true, video: true}], []); test.chain.append([ function CHECK_ASSUMPTIONS() { is(test.pcLocal.localMediaElements.length, 2, @@ -78,11 +76,11 @@ runNetworkTest(async () => { var checkAudio = (analyser, fun) => analyser.waitForAnalysisSuccess(fun); - var freq1k = localAnalyser.binIndexForFrequency(1000); + var freq = localAnalyser.binIndexForFrequency(TEST_AUDIO_FREQ); var checkAudioEnabled = analyser => - checkAudio(analyser, array => array[freq1k] > 200); + checkAudio(analyser, array => array[freq] > 200); var checkAudioDisabled = analyser => - checkAudio(analyser, array => array[freq1k] < 50); + checkAudio(analyser, array => array[freq] < 50); info("Checking local audio enabled"); await checkAudioEnabled(localAnalyser); From 86d6c7f7307416a002ee5cebbb5c9d94663aa735 Mon Sep 17 00:00:00 2001 From: Andreas Pehrson Date: Tue, 6 Mar 2018 19:25:09 +0100 Subject: [PATCH 46/65] Bug 1443585 - Remove fake:true from test_pc_trackDisabling_clones.html. r=jib MozReview-Commit-ID: A0sI1HvEzpf --HG-- extra : rebase_source : c7d351685fbd5283965319f47f7746c9d5df2bd4 --- .../test_peerConnection_trackDisabling_clones.html | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/dom/media/tests/mochitest/test_peerConnection_trackDisabling_clones.html b/dom/media/tests/mochitest/test_peerConnection_trackDisabling_clones.html index f0e9d9fabb5d..bc4c40b986fd 100644 --- a/dom/media/tests/mochitest/test_peerConnection_trackDisabling_clones.html +++ b/dom/media/tests/mochitest/test_peerConnection_trackDisabling_clones.html @@ -24,9 +24,7 @@ runNetworkTest(async () => { var originalStream; var localVideoOriginal; - // Always use fake tracks since we depend on audio to have a large 1000Hz - // component. - test.setMediaConstraints([{audio: true, video: true, fake: true}], []); + test.setMediaConstraints([{audio: true, video: true}], []); test.chain.replace("PC_LOCAL_GUM", [ function PC_LOCAL_GUM_CLONE() { return getUserMedia(test.pcLocal.constraints[0]).then(stream => { @@ -112,11 +110,11 @@ runNetworkTest(async () => { var remoteAnalyserClone = new AudioStreamAnalyser(ac, test.pcRemote._pc.getRemoteStreams()[0]); - var freq1k = localAnalyserOriginal.binIndexForFrequency(1000); + var freq = localAnalyserOriginal.binIndexForFrequency(TEST_AUDIO_FREQ); var checkAudioEnabled = analyser => - analyser.waitForAnalysisSuccess(array => array[freq1k] > 200); + analyser.waitForAnalysisSuccess(array => array[freq] > 200); var checkAudioDisabled = analyser => - analyser.waitForAnalysisSuccess(array => array[freq1k] < 50); + analyser.waitForAnalysisSuccess(array => array[freq] < 50); info("Checking local original enabled"); await checkAudioEnabled(localAnalyserOriginal); From 8f261eb09b9b2750280500e4087b08c3a215072b Mon Sep 17 00:00:00 2001 From: Gijs Kruitbosch Date: Tue, 6 Mar 2018 16:31:24 +0000 Subject: [PATCH 47/65] Bug 1439519 - fetch plugin information lazily in TelemetryEnvironment.jsm, r=chutten,florian MozReview-Commit-ID: 9eUwq3lMdZD --HG-- extra : rebase_source : 58963ad2dfe4450c66e920441b381bd8d073f667 --- .../telemetry/TelemetryEnvironment.jsm | 49 ++++++++++++++++++- .../telemetry/docs/data/environment.rst | 12 ++++- .../mozapps/extensions/nsBlocklistService.js | 22 ++++++--- .../extensions/nsBlocklistServiceContent.js | 5 ++ .../test/xpcshell/test_asyncBlocklistLoad.js | 8 +-- xpcom/system/nsIBlocklistService.idl | 5 ++ 6 files changed, 87 insertions(+), 14 deletions(-) diff --git a/toolkit/components/telemetry/TelemetryEnvironment.jsm b/toolkit/components/telemetry/TelemetryEnvironment.jsm index 7d83a796c65f..9ec579174cc9 100644 --- a/toolkit/components/telemetry/TelemetryEnvironment.jsm +++ b/toolkit/components/telemetry/TelemetryEnvironment.jsm @@ -283,6 +283,7 @@ const SEARCH_ENGINE_MODIFIED_TOPIC = "browser-search-engine-modified"; const SEARCH_SERVICE_TOPIC = "browser-search-service"; const SESSIONSTORE_WINDOWS_RESTORED_TOPIC = "sessionstore-windows-restored"; const PREF_CHANGED_TOPIC = "nsPref:changed"; +const BLOCKLIST_LOADED_TOPIC = "blocklist-loaded"; /** * Enforces the parameter to a boolean value. @@ -489,6 +490,10 @@ function EnvironmentAddonBuilder(environment) { // or a change load. this._pendingTask = null; + // Have we added an observer to listen for blocklist changes that still needs to be + // removed: + this._blocklistObserverAdded = false; + // Set to true once initial load is complete and we're watching for changes. this._loaded = false; } @@ -570,7 +575,21 @@ EnvironmentAddonBuilder.prototype = { // nsIObserver observe(aSubject, aTopic, aData) { this._environment._log.trace("observe - Topic " + aTopic); - this._checkForChanges("experiment-changed"); + if (aTopic == "experiment-changed") { + this._checkForChanges("experiment-changed"); + } else if (aTopic == BLOCKLIST_LOADED_TOPIC) { + Services.obs.removeObserver(this, BLOCKLIST_LOADED_TOPIC); + this._blocklistObserverAdded = false; + let plugins = this._getActivePlugins(); + let gmpPluginsPromise = this._getActiveGMPlugins(); + gmpPluginsPromise.then(gmpPlugins => { + let {addons} = this._environment._currentEnvironment; + addons.activePlugins = plugins; + addons.activeGMPlugins = gmpPlugins; + }, err => { + this._environment._log.error("blocklist observe: Error collecting plugins", err); + }); + } }, _checkForChanges(changeReason) { @@ -596,6 +615,9 @@ EnvironmentAddonBuilder.prototype = { if (this._loaded) { AddonManager.removeAddonListener(this); Services.obs.removeObserver(this, EXPERIMENTS_CHANGED_TOPIC); + if (this._blocklistObserverAdded) { + Services.obs.removeObserver(this, BLOCKLIST_LOADED_TOPIC); + } } // At startup, _pendingTask is set to a Promise that does not resolve @@ -739,6 +761,20 @@ EnvironmentAddonBuilder.prototype = { * @return Object containing the plugins data. */ _getActivePlugins() { + // If we haven't yet loaded the blocklist, pass back dummy data for now, + // and add an observer to update this data as soon as we get it. + if (!Services.blocklist.isLoaded) { + if (!this._blocklistObserverAdded) { + Services.obs.addObserver(this, BLOCKLIST_LOADED_TOPIC); + this._blocklistObserverAdded = true; + } + return [{ + name: "dummy", version: "0.1", description: "Blocklist unavailable", + blocklisted: false, disabled: true, clicktoplay: false, + mimeTypes: ["text/there.is.only.blocklist"], + updateDay: Utils.millisecondsToDays(Date.now()), + }]; + } let pluginTags = Cc["@mozilla.org/plugin/host;1"].getService(Ci.nsIPluginHost).getPluginTags({}); @@ -780,6 +816,17 @@ EnvironmentAddonBuilder.prototype = { * running this during addon manager shutdown. */ async _getActiveGMPlugins() { + // If we haven't yet loaded the blocklist, pass back dummy data for now, + // and add an observer to update this data as soon as we get it. + if (!Services.blocklist.isLoaded) { + if (!this._blocklistObserverAdded) { + Services.obs.addObserver(this, BLOCKLIST_LOADED_TOPIC); + this._blocklistObserverAdded = true; + } + return { + "dummy-gmp": {version: "0.1", userDisabled: false, applyBackgroundUpdates: true} + }; + } // Request plugins, asynchronously. let allPlugins = await AddonManager.getAddonsByTypes(["plugin"]); diff --git a/toolkit/components/telemetry/docs/data/environment.rst b/toolkit/components/telemetry/docs/data/environment.rst index 8c342c4ae587..0a7006881baa 100644 --- a/toolkit/components/telemetry/docs/data/environment.rst +++ b/toolkit/components/telemetry/docs/data/environment.rst @@ -403,7 +403,17 @@ activeAddons Starting from Firefox 44, the length of the following string fields: ``name``, ``description`` and ``version`` is limited to 100 characters. The same limitation applies to the same fields in ``theme`` and ``activePlugins``. -Some of the fields in the record for each add-on are not available during startup. The fields that will always be present are ``id``, ``version``, ``type``, ``updateDate``, ``scope``, ``isSystem``, ``isWebExtension``, and ``multiprocessCompatible``. All the other fields documented above become present shortly after the ``sessionstore-windows-restored`` event is dispatched. +Some of the fields in the record for each add-on are not available during startup. The fields that will always be present are ``id``, ``version``, ``type``, ``updateDate``, ``scope``, ``isSystem``, ``isWebExtension``, and ``multiprocessCompatible``. All the other fields documented above become present shortly after the ``sessionstore-windows-restored`` observer topic is notified. + +activePlugins +~~~~~~~~~~~~~ + +Just like activeAddons, up-to-date information is not available immediately during startup. The field will be populated with dummy information until the blocklist is loaded. At the latest, this will happen just after the ``sessionstore-windows-restored`` observer topic is notified. + +activeGMPPlugins +~~~~~~~~~~~~~~~~ + +Just like activePlugins, this will report dummy values until the blocklist is loaded. experiments ----------- diff --git a/toolkit/mozapps/extensions/nsBlocklistService.js b/toolkit/mozapps/extensions/nsBlocklistService.js index 6da15643ee29..601822884750 100644 --- a/toolkit/mozapps/extensions/nsBlocklistService.js +++ b/toolkit/mozapps/extensions/nsBlocklistService.js @@ -315,7 +315,7 @@ Blocklist.prototype = { /* See nsIBlocklistService */ getAddonBlocklistState(addon, appVersion, toolkitVersion) { - if (!this._isBlocklistLoaded()) + if (!this.isLoaded) this._loadBlocklist(); return this._getAddonBlocklistState(addon, this._addonEntries, appVersion, toolkitVersion); @@ -371,7 +371,7 @@ Blocklist.prototype = { }, getAddonBlocklistEntry(addon, appVersion, toolkitVersion) { - if (!this._isBlocklistLoaded()) + if (!this.isLoaded) this._loadBlocklist(); return this._getAddonBlocklistEntry(addon, this._addonEntries, appVersion, toolkitVersion); @@ -455,7 +455,7 @@ Blocklist.prototype = { /* See nsIBlocklistService */ getAddonBlocklistURL(addon, appVersion, toolkitVersion) { - if (!this._isBlocklistLoaded()) + if (!this.isLoaded) this._loadBlocklist(); let entry = this._getAddonBlocklistEntry(addon, this._addonEntries); @@ -584,7 +584,7 @@ Blocklist.prototype = { // When the blocklist loads we need to compare it to the current copy so // make sure we have loaded it. - if (!this._isBlocklistLoaded()) + if (!this.isLoaded) this._loadBlocklist(); // If blocklist update via Kinto is enabled, poll for changes and sync. @@ -802,7 +802,7 @@ Blocklist.prototype = { this._loadBlocklistFromString(text); }, - _isBlocklistLoaded() { + get isLoaded() { return this._addonEntries != null && this._gfxEntries != null && this._pluginEntries != null; }, @@ -905,6 +905,12 @@ Blocklist.prototype = { } catch (e) { LOG("Blocklist::_loadBlocklistFromXML: Error constructing blocklist " + e); } + // Dispatch to mainthread because consumers may try to construct nsIPluginHost + // again based on this notification, while we were called from nsIPluginHost + // anyway, leading to re-entrancy. + Services.tm.dispatchToMainThread(function() { + Services.obs.notifyObservers(null, "blocklist-loaded"); + }); }, _processItemNodes(itemNodes, itemName, handler) { @@ -1089,7 +1095,7 @@ Blocklist.prototype = { if (AppConstants.platform == "android") { return Ci.nsIBlocklistService.STATE_NOT_BLOCKED; } - if (!this._isBlocklistLoaded()) + if (!this.isLoaded) this._loadBlocklist(); return this._getPluginBlocklistState(plugin, this._pluginEntries, appVersion, toolkitVersion); @@ -1198,7 +1204,7 @@ Blocklist.prototype = { /* See nsIBlocklistService */ getPluginBlocklistURL(plugin) { - if (!this._isBlocklistLoaded()) + if (!this.isLoaded) this._loadBlocklist(); let r = this._getPluginBlocklistEntry(plugin, this._pluginEntries); @@ -1215,7 +1221,7 @@ Blocklist.prototype = { /* See nsIBlocklistService */ getPluginInfoURL(plugin) { - if (!this._isBlocklistLoaded()) + if (!this.isLoaded) this._loadBlocklist(); let r = this._getPluginBlocklistEntry(plugin, this._pluginEntries); diff --git a/toolkit/mozapps/extensions/nsBlocklistServiceContent.js b/toolkit/mozapps/extensions/nsBlocklistServiceContent.js index 0010a540f0ff..42255079004c 100644 --- a/toolkit/mozapps/extensions/nsBlocklistServiceContent.js +++ b/toolkit/mozapps/extensions/nsBlocklistServiceContent.js @@ -84,6 +84,11 @@ Blocklist.prototype = { return Ci.nsIBlocklistService.STATE_BLOCKED; }, + get isLoaded() { + // Lie until we fix bug 1443870. + return true; + }, + // There are a few callers in layout that rely on this. getPluginBlocklistState(aPluginTag, aAppVersion, aToolkitVersion) { return Services.cpmm.sendSyncMessage("Blocklist:getPluginBlocklistState", { diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_asyncBlocklistLoad.js b/toolkit/mozapps/extensions/test/xpcshell/test_asyncBlocklistLoad.js index a6c3696b9146..93f50d0e61d4 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_asyncBlocklistLoad.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_asyncBlocklistLoad.js @@ -9,17 +9,17 @@ add_task(async function() { // sync -> async blocklist._loadBlocklist(); - Assert.ok(blocklist._isBlocklistLoaded()); + Assert.ok(blocklist.isLoaded); await blocklist._preloadBlocklist(); Assert.ok(!blocklist._isBlocklistPreloaded()); blocklist._clear(); // async -> sync await blocklist._preloadBlocklist(); - Assert.ok(!blocklist._isBlocklistLoaded()); + Assert.ok(!blocklist.isLoaded); Assert.ok(blocklist._isBlocklistPreloaded()); blocklist._loadBlocklist(); - Assert.ok(blocklist._isBlocklistLoaded()); + Assert.ok(blocklist.isLoaded); Assert.ok(!blocklist._isBlocklistPreloaded()); blocklist._clear(); @@ -35,6 +35,6 @@ add_task(async function() { }; await blocklist._preloadBlocklist(); - Assert.ok(blocklist._isBlocklistLoaded()); + Assert.ok(blocklist.isLoaded); Assert.ok(!blocklist._isBlocklistPreloaded()); }); diff --git a/xpcom/system/nsIBlocklistService.idl b/xpcom/system/nsIBlocklistService.idl index 5db4868d2d27..5591003c5855 100644 --- a/xpcom/system/nsIBlocklistService.idl +++ b/xpcom/system/nsIBlocklistService.idl @@ -128,6 +128,11 @@ interface nsIBlocklistService : nsISupports * it is not available. */ AString getPluginInfoURL(in nsIPluginTag plugin); + + /** + * Whether or not we've finished loading the blocklist. + */ + readonly attribute boolean isLoaded; }; /** From 2209797ba5008a828fea85786405b819d02e14f9 Mon Sep 17 00:00:00 2001 From: Rob Wu Date: Wed, 7 Mar 2018 10:21:50 +0100 Subject: [PATCH 48/65] Bug 1433030 - Initialize nsTransferable::mPrivateData with false r=jdm Initialize mPrivateData to false by default again, because the change that changed the default value from true to false, i.e. https://hg.mozilla.org/mozilla-central/rev/9e19b58d6494 prevented the clipboard from being backed by the filesystem, as shown at https://bugzilla.mozilla.org/show_bug.cgi?id=1433030#c7 MozReview-Commit-ID: DEw5ETVqab8 --HG-- extra : rebase_source : 0d15a91c28ae3dee9c7e767a5b2c959574610b0f --- widget/nsTransferable.cpp | 2 +- widget/tests/test_bug1123480.xul | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/widget/nsTransferable.cpp b/widget/nsTransferable.cpp index 365ad6ebfa8f..8ee47a36fb46 100644 --- a/widget/nsTransferable.cpp +++ b/widget/nsTransferable.cpp @@ -194,7 +194,7 @@ DataStruct::ReadCache(nsISupports** aData, uint32_t* aDataLen) // //------------------------------------------------------------------------- nsTransferable::nsTransferable() - : mPrivateData(true) + : mPrivateData(false) , mContentPolicyType(nsIContentPolicy::TYPE_OTHER) #ifdef DEBUG , mInitialized(false) diff --git a/widget/tests/test_bug1123480.xul b/widget/tests/test_bug1123480.xul index 84c8162690e9..f725a30d37a9 100644 --- a/widget/tests/test_bug1123480.xul +++ b/widget/tests/test_bug1123480.xul @@ -83,8 +83,11 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1123480 // Overflow a nsTransferable region by using the clipboard helper gClipboardHelper.copyString(Ipsum); - // Undefined private browsing mode should not cache to disk - is(getClipboardCacheFDCount(), initialFdCount, "should avoid caching to disk when PBM is undefined"); + // gClipboardHelper.copyString also puts the data on the selection + // clipboard if the platform supports it. + var expectedFdDelta = Services.clipboard.supportsSelectionClipboard() ? 2 : 1; + // Undefined private browsing mode should cache to disk + is(getClipboardCacheFDCount(), initialFdCount + expectedFdDelta, "should cache to disk when PBM is undefined"); // Sanitize environment again. gClipboardHelper.copyString(SHORT_STRING_NO_CACHE); From 3d577d8685a99e66524ea43e191c6c95febb9e0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A3o=20Gottwald?= Date: Wed, 7 Mar 2018 11:35:57 +0100 Subject: [PATCH 49/65] Bug 1442582 - Remove the tabbrowser-tabpanels binding. r=mconley MozReview-Commit-ID: GBOzGTZFBcJ --HG-- extra : rebase_source : 1955bf18ce22371fecaf4c56800346640051647b --- browser/base/content/tabbrowser.css | 4 -- browser/base/content/tabbrowser.js | 63 ++++++++++++++--------------- browser/base/content/tabbrowser.xml | 39 ------------------ testing/mochitest/browser-test.js | 6 ++- 4 files changed, 34 insertions(+), 78 deletions(-) diff --git a/browser/base/content/tabbrowser.css b/browser/base/content/tabbrowser.css index 10b158eeac2e..266309836332 100644 --- a/browser/base/content/tabbrowser.css +++ b/browser/base/content/tabbrowser.css @@ -2,10 +2,6 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -.tabbrowser-tabpanels { - -moz-binding: url("chrome://browser/content/tabbrowser.xml#tabbrowser-tabpanels"); -} - .tabbrowser-arrowscrollbox { -moz-binding: url("chrome://browser/content/tabbrowser.xml#tabbrowser-arrowscrollbox"); } diff --git a/browser/base/content/tabbrowser.js b/browser/base/content/tabbrowser.js index 382e2d1f3ead..98ab7c3d317e 100644 --- a/browser/base/content/tabbrowser.js +++ b/browser/base/content/tabbrowser.js @@ -204,20 +204,11 @@ window._gBrowser = { } let messageManager = window.getGroupMessageManager("browsers"); - - let remote = window.QueryInterface(Ci.nsIInterfaceRequestor) - .getInterface(Ci.nsIWebNavigation) - .QueryInterface(Ci.nsILoadContext) - .useRemoteTabs; - if (remote) { + if (gMultiProcessBrowser) { messageManager.addMessageListener("DOMTitleChanged", this); messageManager.addMessageListener("DOMWindowClose", this); window.messageManager.addMessageListener("contextmenu", this); messageManager.addMessageListener("Browser:Init", this); - - // If this window has remote tabs, switch to our tabpanels fork - // which does asynchronous tab switching. - this.mPanelContainer.classList.add("tabbrowser-tabpanels"); } else { this._outerWindowIDBrowserMap.set(this.mCurrentBrowser.outerWindowID, this.mCurrentBrowser); @@ -895,11 +886,17 @@ window._gBrowser = { }, updateCurrentBrowser(aForceUpdate) { - var newBrowser = this.getBrowserAtIndex(this.tabContainer.selectedIndex); + let newBrowser = this.getBrowserAtIndex(this.tabContainer.selectedIndex); if (this.mCurrentBrowser == newBrowser && !aForceUpdate) return; + let newTab = this.getTabForBrowser(newBrowser); + if (!aForceUpdate) { + if (gMultiProcessBrowser) { + this._getSwitcher().requestTab(newTab); + } + document.commandDispatcher.lock(); TelemetryStopwatch.start("FX_TAB_SWITCH_UPDATE_MS"); @@ -928,7 +925,7 @@ window._gBrowser = { } } - var oldTab = this.mCurrentTab; + let oldTab = this.mCurrentTab; // Preview mode should not reset the owner if (!this._previewMode && !oldTab.selected) @@ -941,7 +938,7 @@ window._gBrowser = { } this._lastRelatedTabMap = new WeakMap(); - var oldBrowser = this.mCurrentBrowser; + let oldBrowser = this.mCurrentBrowser; if (!gMultiProcessBrowser) { oldBrowser.removeAttribute("primary"); @@ -958,8 +955,8 @@ window._gBrowser = { updateBlockedPopups = true; this.mCurrentBrowser = newBrowser; - this.mCurrentTab = this.tabContainer.selectedItem; - this.showTab(this.mCurrentTab); + this.mCurrentTab = newTab; + this.showTab(newTab); gURLBar.setAttribute("switchingtabs", "true"); window.addEventListener("MozAfterPaint", function() { @@ -969,13 +966,13 @@ window._gBrowser = { this._appendStatusPanel(); if (updateBlockedPopups) - this.mCurrentBrowser.updateBlockedPopups(); + newBrowser.updateBlockedPopups(); // Update the URL bar. - var loc = this.mCurrentBrowser.currentURI; + let loc = newBrowser.currentURI; - var webProgress = this.mCurrentBrowser.webProgress; - var securityUI = this.mCurrentBrowser.securityUI; + let webProgress = newBrowser.webProgress; + let securityUI = newBrowser.securityUI; this._callProgressListeners(null, "onLocationChange", [webProgress, null, loc, 0], @@ -989,7 +986,7 @@ window._gBrowser = { true, false); } - var listener = this._tabListeners.get(this.mCurrentTab); + let listener = this._tabListeners.get(newTab); if (listener && listener.mStateFlags) { this._callProgressListeners(null, "onUpdateCurrentBrowser", [listener.mStateFlags, listener.mStatus, @@ -998,8 +995,8 @@ window._gBrowser = { } if (!this._previewMode) { - this.mCurrentTab.updateLastAccessed(); - this.mCurrentTab.removeAttribute("unread"); + newTab.updateLastAccessed(); + newTab.removeAttribute("unread"); oldTab.updateLastAccessed(); let oldFindBar = oldTab._findBar; @@ -1010,22 +1007,22 @@ window._gBrowser = { this.updateTitlebar(); - this.mCurrentTab.removeAttribute("titlechanged"); - this.mCurrentTab.removeAttribute("attention"); + newTab.removeAttribute("titlechanged"); + newTab.removeAttribute("attention"); // The tab has been selected, it's not unselected anymore. // (1) Call the current tab's finishUnselectedTabHoverTimer() // to save a telemetry record. // (2) Call the current browser's unselectedTabHover() with false // to dispatch an event. - this.mCurrentTab.finishUnselectedTabHoverTimer(); - this.mCurrentBrowser.unselectedTabHover(false); + newTab.finishUnselectedTabHoverTimer(); + newBrowser.unselectedTabHover(false); } // If the new tab is busy, and our current state is not busy, then // we need to fire a start to all progress listeners. const nsIWebProgressListener = Ci.nsIWebProgressListener; - if (this.mCurrentTab.hasAttribute("busy") && !this.mIsBusy) { + if (newTab.hasAttribute("busy") && !this.mIsBusy) { this.mIsBusy = true; this._callProgressListeners(null, "onStateChange", [webProgress, null, @@ -1036,7 +1033,7 @@ window._gBrowser = { // If the new tab is not busy, and our current state is busy, then // we need to fire a stop to all progress listeners. - if (!this.mCurrentTab.hasAttribute("busy") && this.mIsBusy) { + if (!newTab.hasAttribute("busy") && this.mIsBusy) { this.mIsBusy = false; this._callProgressListeners(null, "onStateChange", [webProgress, null, @@ -1057,10 +1054,10 @@ window._gBrowser = { previousTab: oldTab } }); - this.mCurrentTab.dispatchEvent(event); + newTab.dispatchEvent(event); this._tabAttrModified(oldTab, ["selected"]); - this._tabAttrModified(this.mCurrentTab, ["selected"]); + this._tabAttrModified(newTab, ["selected"]); if (oldBrowser != newBrowser && oldBrowser.getInPermitUnload) { @@ -1089,8 +1086,8 @@ window._gBrowser = { } if (!gMultiProcessBrowser) { - this._adjustFocusBeforeTabSwitch(oldTab, this.mCurrentTab); - this._adjustFocusAfterTabSwitch(this.mCurrentTab); + this._adjustFocusBeforeTabSwitch(oldTab, newTab); + this._adjustFocusAfterTabSwitch(newTab); } } @@ -1103,7 +1100,7 @@ window._gBrowser = { // session to allow the user to easily drag the selected tab. // This is currently only supported on Windows. oldTab.removeAttribute("touchdownstartsdrag"); - this.mCurrentTab.setAttribute("touchdownstartsdrag", "true"); + newTab.setAttribute("touchdownstartsdrag", "true"); if (!gMultiProcessBrowser) { document.commandDispatcher.unlock(); diff --git a/browser/base/content/tabbrowser.xml b/browser/base/content/tabbrowser.xml index 158e93fecfeb..55c6bd721b9a 100644 --- a/browser/base/content/tabbrowser.xml +++ b/browser/base/content/tabbrowser.xml @@ -2337,45 +2337,6 @@ - - - 0 - - - - - - - - = this.childNodes.length) - return val; - - let toTab = this.getRelatedElement(this.childNodes[val]); - - gBrowser._getSwitcher().requestTab(toTab); - - var panel = this._selectedPanel; - var newPanel = this.childNodes[val]; - this._selectedPanel = newPanel; - if (this._selectedPanel != panel) { - var event = document.createEvent("Events"); - event.initEvent("select", true, true); - this.dispatchEvent(event); - - this._selectedIndex = val; - } - - return val; - ]]> - - - - - diff --git a/testing/mochitest/browser-test.js b/testing/mochitest/browser-test.js index 5ecf1b8729dc..748663371418 100644 --- a/testing/mochitest/browser-test.js +++ b/testing/mochitest/browser-test.js @@ -241,8 +241,10 @@ function takeInstrumentation() { // The selector for just this element function immediateSelector(element) { - if (element.localName == "notificationbox" && element.parentNode && - element.parentNode.classList.contains("tabbrowser-tabpanels")) { + if (element.localName == "notificationbox" && + element.parentNode && + element.parentNode.parentNode && + element.parentNode.parentNode.classList.contains("tabbrowser-tabbox")) { // Don't do a full selector for a tabpanel's notificationbox return element.localName; } From bdad54c522a9ade990cf0739b1b3c187e39283bc Mon Sep 17 00:00:00 2001 From: Timothy Guan-tin Chien Date: Tue, 6 Mar 2018 13:47:43 -0800 Subject: [PATCH 50/65] Bug 1442800 - Let New_Accessible take Element instead of nsIContent r=surkov The passed nsIContent is always an Element. MozReview-Commit-ID: IMvWuK6MIra --HG-- extra : rebase_source : 520c6ea9d3bd90e480224315e0fc0ce7e5b7db27 --- accessible/base/XULMap.h | 94 +++++++-------- accessible/base/nsAccessibilityService.cpp | 132 ++++++++++----------- accessible/base/nsAccessibilityService.h | 2 +- 3 files changed, 106 insertions(+), 122 deletions(-) diff --git a/accessible/base/XULMap.h b/accessible/base/XULMap.h index 0105d5e3d3ae..b81584817949 100644 --- a/accessible/base/XULMap.h +++ b/accessible/base/XULMap.h @@ -44,11 +44,10 @@ XULMAP_TYPE(tooltip, XULTooltipAccessible) XULMAP( colorpicker, - [](nsIContent* aContent, Accessible* aContext) -> Accessible* { - if (aContent->IsElement() && - aContent->AsElement()->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, - nsGkAtoms::button, eIgnoreCase)) { - return new XULColorPickerAccessible(aContent, aContext->Document()); + [](Element* aElement, Accessible* aContext) -> Accessible* { + if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, + nsGkAtoms::button, eIgnoreCase)) { + return new XULColorPickerAccessible(aElement, aContext->Document()); } return nullptr; } @@ -56,52 +55,47 @@ XULMAP( XULMAP( label, - [](nsIContent* aContent, Accessible* aContext) -> Accessible* { - if (aContent->IsElement() && - aContent->AsElement()->ClassList()->Contains(NS_LITERAL_STRING("text-link"))) { - return new XULLinkAccessible(aContent, aContext->Document()); + [](Element* aElement, Accessible* aContext) -> Accessible* { + if (aElement->ClassList()->Contains(NS_LITERAL_STRING("text-link"))) { + return new XULLinkAccessible(aElement, aContext->Document()); } - return new XULLabelAccessible(aContent, aContext->Document()); + return new XULLabelAccessible(aElement, aContext->Document()); } ) XULMAP( image, - [](nsIContent* aContent, Accessible* aContext) -> Accessible* { - if (!aContent->IsElement()) { - return nullptr; + [](Element* aElement, Accessible* aContext) -> Accessible* { + if (aElement->HasAttr(kNameSpaceID_None, nsGkAtoms::onclick)) { + return new XULToolbarButtonAccessible(aElement, aContext->Document()); } - if (aContent->AsElement()->HasAttr(kNameSpaceID_None, nsGkAtoms::onclick)) { - return new XULToolbarButtonAccessible(aContent, aContext->Document()); - } - - if (aContent->AsElement()->ClassList()->Contains(NS_LITERAL_STRING("colorpickertile"))) { - return new XULColorPickerTileAccessible(aContent, aContext->Document()); + if (aElement->ClassList()->Contains(NS_LITERAL_STRING("colorpickertile"))) { + return new XULColorPickerTileAccessible(aElement, aContext->Document()); } // Don't include nameless images in accessible tree. - if (!aContent->AsElement()->HasAttr(kNameSpaceID_None, nsGkAtoms::tooltiptext)) { + if (!aElement->HasAttr(kNameSpaceID_None, nsGkAtoms::tooltiptext)) { return nullptr; } - return new ImageAccessibleWrap(aContent, aContext->Document()); + return new ImageAccessibleWrap(aElement, aContext->Document()); } ) XULMAP( listcell, - [](nsIContent* aContent, Accessible* aContext) -> Accessible* { + [](Element* aElement, Accessible* aContext) -> Accessible* { // Only create cells if there's more than one per row. - nsIContent* listItem = aContent->GetParent(); + nsIContent* listItem = aElement->GetParent(); if (!listItem) { return nullptr; } for (nsIContent* child = listItem->GetFirstChild(); child; child = child->GetNextSibling()) { - if (child->IsXULElement(nsGkAtoms::listcell) && child != aContent) { - return new XULListCellAccessibleWrap(aContent, aContext->Document()); + if (child->IsXULElement(nsGkAtoms::listcell) && child != aElement) { + return new XULListCellAccessibleWrap(aElement, aContext->Document()); } } @@ -111,59 +105,55 @@ XULMAP( XULMAP( menupopup, - [](nsIContent* aContent, Accessible* aContext) { - return CreateMenupopupAccessible(aContent, aContext); + [](Element* aElement, Accessible* aContext) { + return CreateMenupopupAccessible(aElement, aContext); } ) XULMAP( panel, - [](nsIContent* aContent, Accessible* aContext) -> Accessible* { + [](Element* aElement, Accessible* aContext) -> Accessible* { static const Element::AttrValuesArray sIgnoreTypeVals[] = { &nsGkAtoms::autocomplete_richlistbox, &nsGkAtoms::autocomplete, nullptr }; - if (!aContent->IsElement() || - aContent->AsElement()->FindAttrValueIn(kNameSpaceID_None, nsGkAtoms::type, - sIgnoreTypeVals, eIgnoreCase) >= 0) { + if (aElement->FindAttrValueIn(kNameSpaceID_None, nsGkAtoms::type, + sIgnoreTypeVals, eIgnoreCase) >= 0) { return nullptr; } - if (aContent->AsElement()->AttrValueIs(kNameSpaceID_None, - nsGkAtoms::noautofocus, - nsGkAtoms::_true, eCaseMatters)) { - return new XULAlertAccessible(aContent, aContext->Document()); + if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::noautofocus, + nsGkAtoms::_true, eCaseMatters)) { + return new XULAlertAccessible(aElement, aContext->Document()); } - return new EnumRoleAccessible(aContent, aContext->Document()); + return new EnumRoleAccessible(aElement, aContext->Document()); } ) XULMAP( popup, - [](nsIContent* aContent, Accessible* aContext) { - return CreateMenupopupAccessible(aContent, aContext); + [](Element* aElement, Accessible* aContext) { + return CreateMenupopupAccessible(aElement, aContext); } ) XULMAP( textbox, - [](nsIContent* aContent, Accessible* aContext) -> Accessible* { - if (aContent->IsElement() && - aContent->AsElement()->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, - nsGkAtoms::autocomplete, eIgnoreCase)) { - return new XULComboboxAccessible(aContent, aContext->Document()); + [](Element* aElement, Accessible* aContext) -> Accessible* { + if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, + nsGkAtoms::autocomplete, eIgnoreCase)) { + return new XULComboboxAccessible(aElement, aContext->Document()); } - return new EnumRoleAccessible(aContent, aContext->Document()); + return new EnumRoleAccessible(aElement, aContext->Document()); } ) XULMAP( thumb, - [](nsIContent* aContent, Accessible* aContext) -> Accessible* { - if (aContent->IsElement() && - aContent->AsElement()->ClassList()->Contains(NS_LITERAL_STRING("scale-thumb"))) { - return new XULThumbAccessible(aContent, aContext->Document()); + [](Element* aElement, Accessible* aContext) -> Accessible* { + if (aElement->ClassList()->Contains(NS_LITERAL_STRING("scale-thumb"))) { + return new XULThumbAccessible(aElement, aContext->Document()); } return nullptr; } @@ -171,8 +161,8 @@ XULMAP( XULMAP( tree, - [](nsIContent* aContent, Accessible* aContext) -> Accessible* { - nsIContent* child = nsTreeUtils::GetDescendantChild(aContent, + [](Element* aElement, Accessible* aContext) -> Accessible* { + nsIContent* child = nsTreeUtils::GetDescendantChild(aElement, nsGkAtoms::treechildren); if (!child) return nullptr; @@ -187,10 +177,10 @@ XULMAP( // Outline of list accessible. if (count == 1) { - return new XULTreeAccessible(aContent, aContext->Document(), treeFrame); + return new XULTreeAccessible(aElement, aContext->Document(), treeFrame); } // Table or tree table accessible. - return new XULTreeGridAccessibleWrap(aContent, aContext->Document(), treeFrame); + return new XULTreeGridAccessibleWrap(aElement, aContext->Document(), treeFrame); } ) diff --git a/accessible/base/nsAccessibilityService.cpp b/accessible/base/nsAccessibilityService.cpp index e40a1df372f1..2142e414447d 100644 --- a/accessible/base/nsAccessibilityService.cpp +++ b/accessible/base/nsAccessibilityService.cpp @@ -149,7 +149,7 @@ MustBeAccessible(nsIContent* aContent, DocAccessible* aDocument) */ #ifdef MOZ_XUL Accessible* -CreateMenupopupAccessible(nsIContent* aContent, Accessible* aContext) +CreateMenupopupAccessible(Element* aElement, Accessible* aContext) { #ifdef MOZ_ACCESSIBILITY_ATK // ATK considers this node to be redundant when within menubars, and it makes menu @@ -157,12 +157,12 @@ CreateMenupopupAccessible(nsIContent* aContent, Accessible* aContext) // XXX In the future we will should this for consistency across the nsIAccessible // implementations on each platform for a consistent scripting environment, but // then strip out redundant accessibles in the AccessibleWrap class for each platform. - nsIContent *parent = aContent->GetParent(); + nsIContent *parent = aElement->GetParent(); if (parent && parent->IsXULElement(nsGkAtoms::menu)) return nullptr; #endif - return new XULMenupopupAccessible(aContent, aContext->Document()); + return new XULMenupopupAccessible(aElement, aContext->Document()); } #endif @@ -170,128 +170,122 @@ CreateMenupopupAccessible(nsIContent* aContent, Accessible* aContext) // Accessible constructors static Accessible* -New_HTMLLink(nsIContent* aContent, Accessible* aContext) +New_HTMLLink(Element* aElement, Accessible* aContext) { // Only some roles truly enjoy life as HTMLLinkAccessibles, for details // see closed bug 494807. - const nsRoleMapEntry* roleMapEntry = aria::GetRoleMap(aContent->AsElement()); + const nsRoleMapEntry* roleMapEntry = aria::GetRoleMap(aElement); if (roleMapEntry && roleMapEntry->role != roles::NOTHING && roleMapEntry->role != roles::LINK) { - return new HyperTextAccessibleWrap(aContent, aContext->Document()); + return new HyperTextAccessibleWrap(aElement, aContext->Document()); } - return new HTMLLinkAccessible(aContent, aContext->Document()); + return new HTMLLinkAccessible(aElement, aContext->Document()); } -static Accessible* New_HyperText(nsIContent* aContent, Accessible* aContext) - { return new HyperTextAccessibleWrap(aContent, aContext->Document()); } +static Accessible* New_HyperText(Element* aElement, Accessible* aContext) + { return new HyperTextAccessibleWrap(aElement, aContext->Document()); } -static Accessible* New_HTMLFigcaption(nsIContent* aContent, Accessible* aContext) - { return new HTMLFigcaptionAccessible(aContent, aContext->Document()); } +static Accessible* New_HTMLFigcaption(Element* aElement, Accessible* aContext) + { return new HTMLFigcaptionAccessible(aElement, aContext->Document()); } -static Accessible* New_HTMLFigure(nsIContent* aContent, Accessible* aContext) - { return new HTMLFigureAccessible(aContent, aContext->Document()); } +static Accessible* New_HTMLFigure(Element* aElement, Accessible* aContext) + { return new HTMLFigureAccessible(aElement, aContext->Document()); } -static Accessible* New_HTMLHeaderOrFooter(nsIContent* aContent, Accessible* aContext) - { return new HTMLHeaderOrFooterAccessible(aContent, aContext->Document()); } +static Accessible* New_HTMLHeaderOrFooter(Element* aElement, Accessible* aContext) + { return new HTMLHeaderOrFooterAccessible(aElement, aContext->Document()); } -static Accessible* New_HTMLLegend(nsIContent* aContent, Accessible* aContext) - { return new HTMLLegendAccessible(aContent, aContext->Document()); } +static Accessible* New_HTMLLegend(Element* aElement, Accessible* aContext) + { return new HTMLLegendAccessible(aElement, aContext->Document()); } -static Accessible* New_HTMLOption(nsIContent* aContent, Accessible* aContext) - { return new HTMLSelectOptionAccessible(aContent, aContext->Document()); } +static Accessible* New_HTMLOption(Element* aElement, Accessible* aContext) + { return new HTMLSelectOptionAccessible(aElement, aContext->Document()); } -static Accessible* New_HTMLOptgroup(nsIContent* aContent, Accessible* aContext) - { return new HTMLSelectOptGroupAccessible(aContent, aContext->Document()); } +static Accessible* New_HTMLOptgroup(Element* aElement, Accessible* aContext) + { return new HTMLSelectOptGroupAccessible(aElement, aContext->Document()); } -static Accessible* New_HTMLList(nsIContent* aContent, Accessible* aContext) - { return new HTMLListAccessible(aContent, aContext->Document()); } +static Accessible* New_HTMLList(Element* aElement, Accessible* aContext) + { return new HTMLListAccessible(aElement, aContext->Document()); } static Accessible* -New_HTMLListitem(nsIContent* aContent, Accessible* aContext) +New_HTMLListitem(Element* aElement, Accessible* aContext) { // If list item is a child of accessible list then create an accessible for // it unconditionally by tag name. nsBlockFrame creates the list item // accessible for other elements styled as list items. - if (aContext->IsList() && aContext->GetContent() == aContent->GetParent()) - return new HTMLLIAccessible(aContent, aContext->Document()); + if (aContext->IsList() && aContext->GetContent() == aElement->GetParent()) + return new HTMLLIAccessible(aElement, aContext->Document()); return nullptr; } static Accessible* -New_HTMLDefinition(nsIContent* aContent, Accessible* aContext) +New_HTMLDefinition(Element* aElement, Accessible* aContext) { if (aContext->IsList()) - return new HyperTextAccessibleWrap(aContent, aContext->Document()); + return new HyperTextAccessibleWrap(aElement, aContext->Document()); return nullptr; } -static Accessible* New_HTMLLabel(nsIContent* aContent, Accessible* aContext) - { return new HTMLLabelAccessible(aContent, aContext->Document()); } +static Accessible* New_HTMLLabel(Element* aElement, Accessible* aContext) + { return new HTMLLabelAccessible(aElement, aContext->Document()); } -static Accessible* New_HTMLInput(nsIContent* aContent, Accessible* aContext) +static Accessible* New_HTMLInput(Element* aElement, Accessible* aContext) { - if (!aContent->IsElement()) { - return nullptr; - } - - Element* element = aContent->AsElement(); - if (element->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, + if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, nsGkAtoms::checkbox, eIgnoreCase)) { - return new HTMLCheckboxAccessible(aContent, aContext->Document()); + return new HTMLCheckboxAccessible(aElement, aContext->Document()); } - if (element->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, + if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, nsGkAtoms::radio, eIgnoreCase)) { - return new HTMLRadioButtonAccessible(aContent, aContext->Document()); + return new HTMLRadioButtonAccessible(aElement, aContext->Document()); } - if (element->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, + if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, nsGkAtoms::time, eIgnoreCase)) { - return new EnumRoleAccessible(aContent, aContext->Document()); + return new EnumRoleAccessible(aElement, aContext->Document()); } - if (element->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, + if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, nsGkAtoms::date, eIgnoreCase)) { - return new EnumRoleAccessible(aContent, aContext->Document()); + return new EnumRoleAccessible(aElement, aContext->Document()); } return nullptr; } -static Accessible* New_HTMLOutput(nsIContent* aContent, Accessible* aContext) - { return new HTMLOutputAccessible(aContent, aContext->Document()); } +static Accessible* New_HTMLOutput(Element* aElement, Accessible* aContext) + { return new HTMLOutputAccessible(aElement, aContext->Document()); } -static Accessible* New_HTMLProgress(nsIContent* aContent, Accessible* aContext) - { return new HTMLProgressMeterAccessible(aContent, aContext->Document()); } +static Accessible* New_HTMLProgress(Element* aElement, Accessible* aContext) + { return new HTMLProgressMeterAccessible(aElement, aContext->Document()); } -static Accessible* New_HTMLSummary(nsIContent* aContent, Accessible* aContext) - { return new HTMLSummaryAccessible(aContent, aContext->Document()); } +static Accessible* New_HTMLSummary(Element* aElement, Accessible* aContext) + { return new HTMLSummaryAccessible(aElement, aContext->Document()); } static Accessible* -New_HTMLTableAccessible(nsIContent* aContent, Accessible* aContext) - { return new HTMLTableAccessible(aContent, aContext->Document()); } +New_HTMLTableAccessible(Element* aElement, Accessible* aContext) + { return new HTMLTableAccessible(aElement, aContext->Document()); } static Accessible* -New_HTMLTableRowAccessible(nsIContent* aContent, Accessible* aContext) - { return new HTMLTableRowAccessible(aContent, aContext->Document()); } +New_HTMLTableRowAccessible(Element* aElement, Accessible* aContext) + { return new HTMLTableRowAccessible(aElement, aContext->Document()); } static Accessible* -New_HTMLTableCellAccessible(nsIContent* aContent, Accessible* aContext) - { return new HTMLTableCellAccessible(aContent, aContext->Document()); } +New_HTMLTableCellAccessible(Element* aElement, Accessible* aContext) + { return new HTMLTableCellAccessible(aElement, aContext->Document()); } static Accessible* -New_HTMLTableHeaderCell(nsIContent* aContent, Accessible* aContext) +New_HTMLTableHeaderCell(Element* aElement, Accessible* aContext) { - if (aContext->IsTableRow() && aContext->GetContent() == aContent->GetParent()) - return new HTMLTableHeaderCellAccessibleWrap(aContent, aContext->Document()); + if (aContext->IsTableRow() && aContext->GetContent() == aElement->GetParent()) + return new HTMLTableHeaderCellAccessibleWrap(aElement, aContext->Document()); return nullptr; } static Accessible* -New_HTMLTableHeaderCellIfScope(nsIContent* aContent, Accessible* aContext) +New_HTMLTableHeaderCellIfScope(Element* aElement, Accessible* aContext) { - if (aContext->IsTableRow() && aContext->GetContent() == aContent->GetParent() && - aContent->IsElement() && - aContent->AsElement()->HasAttr(kNameSpaceID_None, nsGkAtoms::scope)) - return new HTMLTableHeaderCellAccessibleWrap(aContent, aContext->Document()); + if (aContext->IsTableRow() && aContext->GetContent() == aElement->GetParent() && + aElement->HasAttr(kNameSpaceID_None, nsGkAtoms::scope)) + return new HTMLTableHeaderCellAccessibleWrap(aElement, aContext->Document()); return nullptr; } @@ -328,8 +322,8 @@ static const HTMLMarkupMapInfo sHTMLMarkupMapList[] = { #define XULMAP_TYPE(atom, new_type) \ XULMAP( \ atom, \ - [](nsIContent* aContent, Accessible* aContext) -> Accessible* { \ - return new new_type(aContent, aContext->Document()); \ + [](Element* aElement, Accessible* aContext) -> Accessible* { \ + return new new_type(aElement, aContext->Document()); \ } \ ) @@ -1178,7 +1172,7 @@ nsAccessibilityService::CreateAccessible(nsINode* aNode, const HTMLMarkupMapInfo* markupMap = mHTMLMarkupMap.Get(content->NodeInfo()->NameAtom()); if (markupMap && markupMap->new_func) - newAcc = markupMap->new_func(content, aContext); + newAcc = markupMap->new_func(content->AsElement(), aContext); if (!newAcc) // try by frame accessible type. newAcc = CreateAccessibleByFrameType(frame, content, aContext); @@ -1241,7 +1235,7 @@ nsAccessibilityService::CreateAccessible(nsINode* aNode, const XULMarkupMapInfo* xulMap = mXULMarkupMap.Get(content->NodeInfo()->NameAtom()); if (xulMap && xulMap->new_func) { - newAcc = xulMap->new_func(content, aContext); + newAcc = xulMap->new_func(content->AsElement(), aContext); } #endif @@ -1273,7 +1267,7 @@ nsAccessibilityService::CreateAccessible(nsINode* aNode, const HTMLMarkupMapInfo* markupMap = mHTMLMarkupMap.Get(content->NodeInfo()->NameAtom()); if (markupMap && markupMap->new_func) - newAcc = markupMap->new_func(content, aContext); + newAcc = markupMap->new_func(content->AsElement(), aContext); // Fall back to text when encountering Content MathML. if (!newAcc && !content->IsAnyOfMathMLElements(nsGkAtoms::annotation_, diff --git a/accessible/base/nsAccessibilityService.h b/accessible/base/nsAccessibilityService.h index b7377bba9f36..876cbfd1ad1d 100644 --- a/accessible/base/nsAccessibilityService.h +++ b/accessible/base/nsAccessibilityService.h @@ -51,7 +51,7 @@ SelectionManager* SelectionMgr(); ApplicationAccessible* ApplicationAcc(); xpcAccessibleApplication* XPCApplicationAcc(); -typedef Accessible* (New_Accessible)(nsIContent* aContent, Accessible* aContext); +typedef Accessible* (New_Accessible)(Element* aElement, Accessible* aContext); struct MarkupAttrInfo { nsStaticAtom** name; From 0bc675f6579ea15ed2a54217461902ae3c16e73d Mon Sep 17 00:00:00 2001 From: Cosmin Sabou Date: Wed, 7 Mar 2018 22:04:35 +0200 Subject: [PATCH 51/65] Backed out 4 changesets (bug 1436187) for mochitest devtools failures at browser_se_editors-error-gutter.js on a CLOSED TREE Backed out changeset 253f74e28723 (bug 1436187) Backed out changeset 9875771c9967 (bug 1436187) Backed out changeset b2d808aa8c2e (bug 1436187) Backed out changeset e747480f3cd2 (bug 1436187) --HG-- rename : devtools/client/shared/test/shared-head.js => devtools/client/framework/test/shared-head.js rename : devtools/client/shared/test/shared-redux-head.js => devtools/client/framework/test/shared-redux-head.js rename : devtools/client/shared/test/frame-script-utils.js => devtools/client/shared/frame-script-utils.js --- browser/installer/allowed-dupes.mn | 2 + .../client/aboutdebugging/test/browser.ini | 2 +- devtools/client/aboutdebugging/test/head.js | 4 +- .../animationinspector/test/browser.ini | 3 +- ...ion_refresh_when_active_after_mutations.js | 3 +- .../client/animationinspector/test/head.js | 4 +- .../client/canvasdebugger/test/browser.ini | 2 - .../test/browser_canvas-actor-test-10.js | 2 +- .../test/browser_canvas-actor-test-12.js | 2 +- .../test/browser_canvas-frontend-record-04.js | 2 +- devtools/client/canvasdebugger/test/head.js | 147 +++++++++++++++-- .../debugger/new/test/mochitest/browser.ini | 2 +- .../debugger/new/test/mochitest/head.js | 2 +- .../debugger/test/mochitest/browser.ini | 2 +- .../debugger/test/mochitest/browser2.ini | 2 +- .../client/debugger/test/mochitest/head.js | 9 +- devtools/client/dom/test/browser.ini | 3 +- devtools/client/dom/test/head.js | 11 +- devtools/client/framework/moz.build | 3 + devtools/client/framework/test/browser.ini | 5 +- .../framework/test/browser_target_events.js | 2 +- ...x_options_enable_serviceworkers_testing.js | 4 +- .../browser_toolbox_window_reload_target.js | 2 +- devtools/client/framework/test/head.js | 10 +- .../framework/test/helper_disable_cache.js | 2 +- .../{shared => framework}/test/shared-head.js | 28 ++-- .../test/shared-redux-head.js | 0 .../inspector/animation/test/browser.ini | 3 +- .../client/inspector/animation/test/head.js | 4 +- .../inspector/boxmodel/test/browser.ini | 2 +- .../client/inspector/boxmodel/test/head.js | 2 +- .../inspector/computed/test/browser.ini | 2 +- .../inspector/extensions/test/browser.ini | 2 +- .../client/inspector/fonts/test/browser.ini | 2 +- .../client/inspector/grids/test/browser.ini | 4 +- devtools/client/inspector/grids/test/head.js | 4 +- .../client/inspector/markup/test/browser.ini | 2 +- .../client/inspector/rules/test/browser.ini | 2 +- .../client/inspector/shared/test/browser.ini | 2 +- devtools/client/inspector/test/browser.ini | 2 +- devtools/client/inspector/test/head.js | 4 +- devtools/client/inspector/test/shared-head.js | 2 +- devtools/client/jar.mn | 1 + devtools/client/jsonview/test/browser.ini | 3 +- devtools/client/jsonview/test/head.js | 8 +- .../client/memory/test/browser/browser.ini | 4 +- devtools/client/memory/test/browser/head.js | 4 +- devtools/client/memory/test/unit/xpcshell.ini | 2 +- .../netmonitor/src/har/test/browser.ini | 2 +- devtools/client/netmonitor/test/browser.ini | 3 +- .../netmonitor/test/browser_net_filter-01.js | 2 +- .../netmonitor/test/browser_net_filter-02.js | 2 +- .../netmonitor/test/browser_net_filter-03.js | 2 +- .../netmonitor/test/browser_net_filter-04.js | 2 +- .../test/browser_net_filter-autocomplete.js | 2 +- .../test/browser_net_filter-flags.js | 2 +- .../netmonitor/test/browser_net_sort-01.js | 2 +- .../netmonitor/test/browser_net_sort-02.js | 2 +- devtools/client/netmonitor/test/head.js | 23 ++- devtools/client/performance/test/browser.ini | 1 - .../test/helpers/profiler-mm-utils.js | 2 +- .../responsive.html/test/browser/browser.ini | 4 +- .../responsive.html/test/browser/head.js | 8 +- .../responsive.html/test/unit/xpcshell.ini | 2 +- devtools/client/shadereditor/test/browser.ini | 2 - devtools/client/shadereditor/test/head.js | 94 +++++++++-- .../components/test/browser/browser.ini | 2 +- .../browser/browser_notification_box_basic.js | 4 +- .../shared/{test => }/frame-script-utils.js | 0 devtools/client/shared/moz.build | 3 - devtools/client/shared/test/browser.ini | 4 +- devtools/client/shared/test/head.js | 4 +- devtools/client/shared/webgl-utils.js | 2 +- devtools/client/sourceeditor/test/browser.ini | 2 +- devtools/client/sourceeditor/test/head.js | 4 +- devtools/client/storage/test/browser.ini | 2 +- .../test/browser_storage_cache_delete.js | 2 +- .../browser_storage_cookies_delete_all.js | 2 +- .../test/browser_storage_cookies_domain.js | 2 +- .../browser_storage_cookies_domain_port.js | 2 +- .../test/browser_storage_cookies_samesite.js | 2 +- .../storage/test/browser_storage_delete.js | 2 +- .../test/browser_storage_delete_all.js | 2 +- .../test/browser_storage_delete_tree.js | 2 +- .../browser_storage_delete_usercontextid.js | 2 +- .../browser_storage_dom_cache_disabled.js | 2 +- .../test/browser_storage_indexeddb_delete.js | 2 +- ...rowser_storage_indexeddb_delete_blocked.js | 2 +- devtools/client/storage/test/head.js | 4 +- devtools/client/styleeditor/test/browser.ini | 2 +- .../client/webaudioeditor/test/browser.ini | 2 - .../browser_audionode-actor-get-params-01.js | 2 +- .../browser_audionode-actor-get-params-02.js | 2 +- .../test/browser_callwatcher-02.js | 2 +- .../browser_wa_properties-view-media-nodes.js | 2 +- .../test/browser_wa_properties-view-params.js | 2 +- devtools/client/webaudioeditor/test/head.js | 151 +++++++++++++++++- .../webconsole/net/test/mochitest/browser.ini | 3 +- .../webconsole/net/test/mochitest/head.js | 12 +- .../test/fixtures/stub-generators/browser.ini | 2 +- .../test/fixtures/stub-generators/head.js | 4 +- .../test/mochitest/browser.ini | 2 +- .../new-console-output/test/mochitest/head.js | 4 +- devtools/client/webconsole/test/browser.ini | 2 +- devtools/client/webconsole/test/head.js | 4 +- devtools/docs/tests/writing-tests.md | 4 +- devtools/server/tests/browser/browser.ini | 2 +- devtools/server/tests/browser/head.js | 4 +- 108 files changed, 543 insertions(+), 198 deletions(-) rename devtools/client/{shared => framework}/test/shared-head.js (97%) rename devtools/client/{shared => framework}/test/shared-redux-head.js (100%) rename devtools/client/shared/{test => }/frame-script-utils.js (100%) diff --git a/browser/installer/allowed-dupes.mn b/browser/installer/allowed-dupes.mn index 238623f08907..d4996e3f553e 100644 --- a/browser/installer/allowed-dupes.mn +++ b/browser/installer/allowed-dupes.mn @@ -31,6 +31,7 @@ browser/chrome/devtools/content/inspector/fonts/fonts.js browser/chrome/devtools/content/inspector/inspector.xhtml browser/chrome/devtools/content/memory/initializer.js browser/chrome/devtools/content/projecteditor/lib/helpers/readdir.js +browser/chrome/devtools/content/shared/frame-script-utils.js browser/chrome/devtools/content/shared/theme-switching.js browser/chrome/devtools/modules/devtools/client/dom/content/dom-view.css browser/chrome/devtools/modules/devtools/client/dom/dom.html @@ -42,6 +43,7 @@ browser/chrome/devtools/modules/devtools/client/jsonview/css/controls.png browser/chrome/devtools/modules/devtools/client/jsonview/css/controls@2x.png browser/chrome/devtools/modules/devtools/client/memory/initializer.js browser/chrome/devtools/modules/devtools/client/projecteditor/lib/helpers/readdir.js +browser/chrome/devtools/modules/devtools/client/shared/frame-script-utils.js browser/chrome/devtools/modules/devtools/client/shared/theme-switching.js browser/chrome/devtools/modules/devtools/client/themes/common.css browser/chrome/devtools/modules/devtools/client/themes/toolbars.css diff --git a/devtools/client/aboutdebugging/test/browser.ini b/devtools/client/aboutdebugging/test/browser.ini index e553ff9db6bf..822ba8e16d5d 100644 --- a/devtools/client/aboutdebugging/test/browser.ini +++ b/devtools/client/aboutdebugging/test/browser.ini @@ -19,7 +19,7 @@ support-files = service-workers/fetch-sw.js service-workers/push-sw.html service-workers/push-sw.js - !/devtools/client/shared/test/shared-head.js + !/devtools/client/framework/test/shared-head.js [browser_addons_debug_bootstrapped.js] skip-if = coverage # Bug 1387827 diff --git a/devtools/client/aboutdebugging/test/head.js b/devtools/client/aboutdebugging/test/head.js index 1f3873f46ff9..9a4d52d3f489 100644 --- a/devtools/client/aboutdebugging/test/head.js +++ b/devtools/client/aboutdebugging/test/head.js @@ -3,13 +3,13 @@ /* eslint-env browser */ /* eslint no-unused-vars: [2, {"vars": "local"}] */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ "use strict"; // Load the shared-head file first. Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", + "chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js", this); const { AddonManager } = ChromeUtils.import("resource://gre/modules/AddonManager.jsm", {}); diff --git a/devtools/client/animationinspector/test/browser.ini b/devtools/client/animationinspector/test/browser.ini index 78be9c666eba..6783e9c5ff93 100644 --- a/devtools/client/animationinspector/test/browser.ini +++ b/devtools/client/animationinspector/test/browser.ini @@ -20,10 +20,9 @@ support-files = doc_timing_combination_animation.html head.js !/devtools/client/commandline/test/helpers.js + !/devtools/client/framework/test/shared-head.js !/devtools/client/inspector/test/head.js !/devtools/client/inspector/test/shared-head.js - !/devtools/client/shared/test/frame-script-utils.js - !/devtools/client/shared/test/shared-head.js !/devtools/client/shared/test/test-actor-registry.js !/devtools/client/shared/test/test-actor.js diff --git a/devtools/client/animationinspector/test/browser_animation_refresh_when_active_after_mutations.js b/devtools/client/animationinspector/test/browser_animation_refresh_when_active_after_mutations.js index 909967318d12..125680fcd148 100644 --- a/devtools/client/animationinspector/test/browser_animation_refresh_when_active_after_mutations.js +++ b/devtools/client/animationinspector/test/browser_animation_refresh_when_active_after_mutations.js @@ -29,7 +29,8 @@ add_task(function* () { }); info("Make animation by eval in content"); - yield evalInDebuggee(`document.querySelector('#target').animate( + yield evalInDebuggee(gBrowser.selectedBrowser.messageManager, + `document.querySelector('#target').animate( { transform: 'translate(100px)' }, { duration: 100000, easing: 'steps(2)' });`); info("Wait for animation mutations event"); diff --git a/devtools/client/animationinspector/test/head.js b/devtools/client/animationinspector/test/head.js index 2cc8f9acf0e9..0440879de685 100644 --- a/devtools/client/animationinspector/test/head.js +++ b/devtools/client/animationinspector/test/head.js @@ -12,6 +12,7 @@ Services.scriptloader.loadSubScript( this); const FRAME_SCRIPT_URL = CHROME_URL_ROOT + "doc_frame_script.js"; +const COMMON_FRAME_SCRIPT_URL = "chrome://devtools/content/shared/frame-script-utils.js"; const TAB_NAME = "animationinspector"; const ANIMATION_L10N = new LocalizationHelper("devtools/client/locales/animationinspector.properties"); @@ -55,7 +56,8 @@ addTab = function (url) { let browser = tab.linkedBrowser; info("Loading the helper frame script " + FRAME_SCRIPT_URL); browser.messageManager.loadFrameScript(FRAME_SCRIPT_URL, false); - loadFrameScriptUtils(browser); + info("Loading the helper frame script " + COMMON_FRAME_SCRIPT_URL); + browser.messageManager.loadFrameScript(COMMON_FRAME_SCRIPT_URL, false); return tab; }); }; diff --git a/devtools/client/canvasdebugger/test/browser.ini b/devtools/client/canvasdebugger/test/browser.ini index 6ae0351b942a..39e976214ab8 100644 --- a/devtools/client/canvasdebugger/test/browser.ini +++ b/devtools/client/canvasdebugger/test/browser.ini @@ -15,8 +15,6 @@ support-files = doc_webgl-drawArrays.html doc_webgl-drawElements.html head.js - !/devtools/client/shared/test/frame-script-utils.js - !/devtools/client/shared/test/shared-head.js [browser_canvas-actor-test-01.js] [browser_canvas-actor-test-02.js] diff --git a/devtools/client/canvasdebugger/test/browser_canvas-actor-test-10.js b/devtools/client/canvasdebugger/test/browser_canvas-actor-test-10.js index 35cefc515444..672ef9662763 100644 --- a/devtools/client/canvasdebugger/test/browser_canvas-actor-test-10.js +++ b/devtools/client/canvasdebugger/test/browser_canvas-actor-test-10.js @@ -8,7 +8,7 @@ function* ifTestingSupported() { let { target, front } = yield initCanvasDebuggerBackend(WEBGL_BINDINGS_URL); - loadFrameScriptUtils(); + loadFrameScripts(); let navigated = once(target, "navigate"); diff --git a/devtools/client/canvasdebugger/test/browser_canvas-actor-test-12.js b/devtools/client/canvasdebugger/test/browser_canvas-actor-test-12.js index 2b8daa215c80..86e51931ea80 100644 --- a/devtools/client/canvasdebugger/test/browser_canvas-actor-test-12.js +++ b/devtools/client/canvasdebugger/test/browser_canvas-actor-test-12.js @@ -8,7 +8,7 @@ function* ifTestingSupported() { let { target, front } = yield initCanvasDebuggerBackend(NO_CANVAS_URL); - loadFrameScriptUtils(); + loadFrameScripts(); let navigated = once(target, "navigate"); diff --git a/devtools/client/canvasdebugger/test/browser_canvas-frontend-record-04.js b/devtools/client/canvasdebugger/test/browser_canvas-frontend-record-04.js index 0985267e6617..fde8501e667b 100644 --- a/devtools/client/canvasdebugger/test/browser_canvas-frontend-record-04.js +++ b/devtools/client/canvasdebugger/test/browser_canvas-frontend-record-04.js @@ -11,7 +11,7 @@ function* ifTestingSupported() { let { target, panel } = yield initCanvasDebuggerFrontend(RAF_BEGIN_URL); let { window, EVENTS, gFront, SnapshotsListView } = panel.panelWin; - loadFrameScriptUtils(); + loadFrameScripts(); yield reload(target); diff --git a/devtools/client/canvasdebugger/test/head.js b/devtools/client/canvasdebugger/test/head.js index edcadc3a1437..afe2e3a0376f 100644 --- a/devtools/client/canvasdebugger/test/head.js +++ b/devtools/client/canvasdebugger/test/head.js @@ -1,25 +1,26 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ - -/* eslint no-unused-vars: [2, {"vars": "local"}] */ -/* import-globals-from ../../shared/test/shared-head.js */ - "use strict"; -// Load the shared-head file first. -Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", - this); - var { generateUUID } = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator); +var { require } = ChromeUtils.import("resource://devtools/shared/Loader.jsm", {}); +var Services = require("Services"); +var promise = require("promise"); +const defer = require("devtools/shared/defer"); +var { gDevTools } = require("devtools/client/framework/devtools"); var { DebuggerClient } = require("devtools/shared/client/debugger-client"); var { DebuggerServer } = require("devtools/server/main"); var { CallWatcherFront } = require("devtools/shared/fronts/call-watcher"); var { CanvasFront } = require("devtools/shared/fronts/canvas"); +var DevToolsUtils = require("devtools/shared/DevToolsUtils"); +var flags = require("devtools/shared/flags"); +var { TargetFactory } = require("devtools/client/framework/target"); var { Toolbox } = require("devtools/client/framework/toolbox"); var { isWebGLSupported } = require("devtools/client/shared/webgl-utils"); +var mm = null; +const FRAME_SCRIPT_UTILS_URL = "chrome://devtools/content/shared/frame-script-utils.js"; const EXAMPLE_URL = "http://example.com/browser/devtools/client/canvasdebugger/test/"; const SET_TIMEOUT_URL = EXAMPLE_URL + "doc_settimeout.html"; const NO_CANVAS_URL = EXAMPLE_URL + "doc_no-canvas.html"; @@ -39,9 +40,16 @@ const RAF_BEGIN_URL = EXAMPLE_URL + "doc_raf-begin.html"; var gEnableLogging = Services.prefs.getBoolPref("devtools.debugger.log"); Services.prefs.setBoolPref("devtools.debugger.log", false); +// All tests are asynchronous. +waitForExplicitFinish(); + var gToolEnabled = Services.prefs.getBoolPref("devtools.canvasdebugger.enabled"); +flags.testing = true; + registerCleanupFunction(() => { + info("finish() was called, cleaning up..."); + flags.testing = false; Services.prefs.setBoolPref("devtools.debugger.log", gEnableLogging); Services.prefs.setBoolPref("devtools.canvasdebugger.enabled", gToolEnabled); @@ -51,6 +59,52 @@ registerCleanupFunction(() => { Cu.forceGC(); }); +/** + * Call manually in tests that use frame script utils after initializing + * the shader editor. Call after init but before navigating to different pages. + */ +function loadFrameScripts() { + mm = gBrowser.selectedBrowser.messageManager; + mm.loadFrameScript(FRAME_SCRIPT_UTILS_URL, false); +} + +function addTab(aUrl, aWindow) { + info("Adding tab: " + aUrl); + + let deferred = defer(); + let targetWindow = aWindow || window; + let targetBrowser = targetWindow.gBrowser; + + targetWindow.focus(); + let tab = targetBrowser.selectedTab = targetBrowser.addTab(aUrl); + let linkedBrowser = tab.linkedBrowser; + + BrowserTestUtils.browserLoaded(linkedBrowser) + .then(function () { + info("Tab added and finished loading: " + aUrl); + deferred.resolve(tab); + }); + + return deferred.promise; +} + +function removeTab(aTab, aWindow) { + info("Removing tab."); + + let deferred = defer(); + let targetWindow = aWindow || window; + let targetBrowser = targetWindow.gBrowser; + let tabContainer = targetBrowser.tabContainer; + + tabContainer.addEventListener("TabClose", function (aEvent) { + info("Tab removed and finished closing."); + deferred.resolve(); + }, {once: true}); + + targetBrowser.removeTab(aTab); + return deferred.promise; +} + function handleError(aError) { ok(false, "Got an error: " + aError.message + "\n" + aError.stack); finish(); @@ -90,6 +144,35 @@ function isTestingSupported() { return supported; } +function once(aTarget, aEventName, aUseCapture = false) { + info("Waiting for event: '" + aEventName + "' on " + aTarget + "."); + + let deferred = defer(); + + for (let [add, remove] of [ + ["on", "off"], // Use event emitter before DOM events for consistency + ["addEventListener", "removeEventListener"], + ["addListener", "removeListener"] + ]) { + if ((add in aTarget) && (remove in aTarget)) { + aTarget[add](aEventName, function onEvent(...aArgs) { + info("Got event: '" + aEventName + "' on " + aTarget + "."); + aTarget[remove](aEventName, onEvent, aUseCapture); + deferred.resolve(...aArgs); + }, aUseCapture); + break; + } + } + + return deferred.promise; +} + +function waitForTick() { + let deferred = defer(); + executeSoon(deferred.resolve); + return deferred.promise; +} + function navigateInHistory(aTarget, aDirection, aWaitForTargetEvent = "navigate") { executeSoon(() => content.history[aDirection]()); return once(aTarget, aWaitForTargetEvent); @@ -165,7 +248,53 @@ function teardown({target}) { }); } +/** + * Takes a string `script` and evaluates it directly in the content + * in potentially a different process. + */ +function evalInDebuggee(script) { + let deferred = defer(); + + if (!mm) { + throw new Error("`loadFrameScripts()` must be called when using MessageManager."); + } + + let id = generateUUID().toString(); + mm.sendAsyncMessage("devtools:test:eval", { script: script, id: id }); + mm.addMessageListener("devtools:test:eval:response", handler); + + function handler({ data }) { + if (id !== data.id) { + return; + } + + mm.removeMessageListener("devtools:test:eval:response", handler); + deferred.resolve(data.value); + } + + return deferred.promise; +} + function getSourceActor(aSources, aURL) { let item = aSources.getItemForAttachment(a => a.source.url === aURL); return item ? item.value : null; } + +/** + * Waits until a predicate returns true. + * + * @param function predicate + * Invoked once in a while until it returns true. + * @param number interval [optional] + * How often the predicate is invoked, in milliseconds. + */ +function* waitUntil(predicate, interval = 10) { + if (yield predicate()) { + return Promise.resolve(true); + } + let deferred = defer(); + setTimeout(function () { + waitUntil(predicate).then(() => deferred.resolve(true)); + }, interval); + return deferred.promise; +} diff --git a/devtools/client/debugger/new/test/mochitest/browser.ini b/devtools/client/debugger/new/test/mochitest/browser.ini index 2d5219c44c55..c48528659143 100644 --- a/devtools/client/debugger/new/test/mochitest/browser.ini +++ b/devtools/client/debugger/new/test/mochitest/browser.ini @@ -5,7 +5,7 @@ skip-if = (os == 'linux' && debug && bits == 32) support-files = head.js !/devtools/client/commandline/test/helpers.js - !/devtools/client/shared/test/shared-head.js + !/devtools/client/framework/test/shared-head.js examples/babel/polyfill-bundle.js examples/babel/fixtures/for-of/output.js examples/babel/fixtures/for-of/output.js.map diff --git a/devtools/client/debugger/new/test/mochitest/head.js b/devtools/client/debugger/new/test/mochitest/head.js index 89517be3c1f2..cae2a2d39e76 100644 --- a/devtools/client/debugger/new/test/mochitest/head.js +++ b/devtools/client/debugger/new/test/mochitest/head.js @@ -34,7 +34,7 @@ // shared-head.js handles imports, constants, and utility functions Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", + "chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js", this ); var { Toolbox } = require("devtools/client/framework/toolbox"); diff --git a/devtools/client/debugger/test/mochitest/browser.ini b/devtools/client/debugger/test/mochitest/browser.ini index 3fd89246db0b..88f68a85cac2 100644 --- a/devtools/client/debugger/test/mochitest/browser.ini +++ b/devtools/client/debugger/test/mochitest/browser.ini @@ -131,7 +131,7 @@ support-files = sjs_random-javascript.sjs testactors.js !/devtools/client/commandline/test/helpers.js - !/devtools/client/shared/test/shared-head.js + !/devtools/client/framework/test/shared-head.js [browser_dbg_aaa_run_first_leaktest.js] skip-if = e10s && debug diff --git a/devtools/client/debugger/test/mochitest/browser2.ini b/devtools/client/debugger/test/mochitest/browser2.ini index a3f63ce77496..74bfdf9053f0 100644 --- a/devtools/client/debugger/test/mochitest/browser2.ini +++ b/devtools/client/debugger/test/mochitest/browser2.ini @@ -131,7 +131,7 @@ support-files = sjs_random-javascript.sjs testactors.js !/devtools/client/commandline/test/helpers.js - !/devtools/client/shared/test/shared-head.js + !/devtools/client/framework/test/shared-head.js [browser_dbg_no-dangling-breakpoints.js] skip-if = e10s && debug diff --git a/devtools/client/debugger/test/mochitest/head.js b/devtools/client/debugger/test/mochitest/head.js index b06ca42ef1c8..429136cf1dd1 100644 --- a/devtools/client/debugger/test/mochitest/head.js +++ b/devtools/client/debugger/test/mochitest/head.js @@ -6,7 +6,7 @@ "use strict"; // shared-head.js handles imports, constants, and utility functions -Services.scriptloader.loadSubScript("chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", this); +Services.scriptloader.loadSubScript("chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js", this); // Disable logging for faster test runs. Set this pref to true if you want to // debug a test in your try runs. Both the debugger server and frontend will @@ -208,10 +208,7 @@ function attachThreadActorForUrl(aClient, aUrl) { return deferred.promise; } -// Override once from shared-head, as some tests depend on trying native DOM listeners -// before EventEmitter. Since this directory is deprecated, there's little value in -// resolving the descrepency here. -this.once = function (aTarget, aEventName, aUseCapture = false) { +function once(aTarget, aEventName, aUseCapture = false) { info("Waiting for event: '" + aEventName + "' on " + aTarget + "."); let deferred = promise.defer(); @@ -231,7 +228,7 @@ this.once = function (aTarget, aEventName, aUseCapture = false) { } return deferred.promise; -}; +} function waitForTick() { let deferred = promise.defer(); diff --git a/devtools/client/dom/test/browser.ini b/devtools/client/dom/test/browser.ini index 66c4ae680d53..e8e35b32b7e4 100644 --- a/devtools/client/dom/test/browser.ini +++ b/devtools/client/dom/test/browser.ini @@ -5,8 +5,7 @@ support-files = head.js page_array.html page_basic.html - !/devtools/client/shared/test/frame-script-utils.js - !/devtools/client/shared/test/shared-head.js + !/devtools/client/framework/test/shared-head.js [browser_dom_array.js] [browser_dom_basic.js] diff --git a/devtools/client/dom/test/head.js b/devtools/client/dom/test/head.js index 781441b065d4..4486d103c3b5 100644 --- a/devtools/client/dom/test/head.js +++ b/devtools/client/dom/test/head.js @@ -2,13 +2,16 @@ /* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ /* eslint no-unused-vars: [2, {"vars": "local", "args": "none"}] */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ "use strict"; +const FRAME_SCRIPT_UTILS_URL = + "chrome://devtools/content/shared/frame-script-utils.js"; + // shared-head.js handles imports, constants, and utility functions Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", this); + "chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js", this); // DOM panel actions. const constants = require("devtools/client/dom/content/constants"); @@ -37,8 +40,8 @@ function addTestTab(url) { return new Promise(resolve => { addTab(url).then(tab => { - // Load devtools/shared/test/frame-script-utils.js - loadFrameScriptUtils(); + // Load devtools/shared/frame-script-utils.js + getFrameScript(); // Select the DOM panel and wait till it's initialized. initDOMPanel(tab).then(panel => { diff --git a/devtools/client/framework/moz.build b/devtools/client/framework/moz.build index 986a6d8dda8d..1ac470303144 100644 --- a/devtools/client/framework/moz.build +++ b/devtools/client/framework/moz.build @@ -5,6 +5,9 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. BROWSER_CHROME_MANIFESTS += ['test/browser.ini'] +TEST_HARNESS_FILES.xpcshell.devtools.client.framework.test += [ + 'test/shared-redux-head.js', +] DIRS += [ 'components', diff --git a/devtools/client/framework/test/browser.ini b/devtools/client/framework/test/browser.ini index 7a5e6c1d9955..5fe79f4e8e4b 100644 --- a/devtools/client/framework/test/browser.ini +++ b/devtools/client/framework/test/browser.ini @@ -34,6 +34,8 @@ support-files = doc_empty-tab-01.html doc_reload.html head.js + shared-head.js + shared-redux-head.js helper_disable_cache.js doc_theme.css doc_viewsource.html @@ -44,9 +46,6 @@ support-files = sjs_code_bundle_reload_map.sjs test_browser_toolbox_debugger.js !/devtools/client/debugger/new/test/mochitest/head.js - !/devtools/client/shared/test/frame-script-utils.js - !/devtools/client/shared/test/shared-head.js - !/devtools/client/shared/test/shared-redux-head.js [browser_browser_toolbox.js] skip-if = coverage # Bug 1387827 diff --git a/devtools/client/framework/test/browser_target_events.js b/devtools/client/framework/test/browser_target_events.js index 8d192d89fe41..eb9cee0bafd4 100644 --- a/devtools/client/framework/test/browser_target_events.js +++ b/devtools/client/framework/test/browser_target_events.js @@ -31,7 +31,7 @@ function onHidden() { function onVisible() { ok(true, "Visible event received"); target.once("will-navigate", onWillNavigate); - let mm = loadFrameScriptUtils(); + let mm = getFrameScript(); mm.sendAsyncMessage("devtools:test:navigate", { location: "data:text/html,test navigation" }); } diff --git a/devtools/client/framework/test/browser_toolbox_options_enable_serviceworkers_testing.js b/devtools/client/framework/test/browser_toolbox_options_enable_serviceworkers_testing.js index 7ba4c4b99bc3..5d9b0e2cb010 100644 --- a/devtools/client/framework/test/browser_toolbox_options_enable_serviceworkers_testing.js +++ b/devtools/client/framework/test/browser_toolbox_options_enable_serviceworkers_testing.js @@ -6,6 +6,8 @@ // Test that enabling Service Workers testing option enables the // mServiceWorkersTestingEnabled attribute added to nsPIDOMWindow. +const COMMON_FRAME_SCRIPT_URL = + "chrome://devtools/content/shared/frame-script-utils.js"; const ROOT_TEST_DIR = getRootDirectory(gTestPath); const FRAME_SCRIPT_URL = @@ -33,7 +35,7 @@ function init() { let target = TargetFactory.forTab(tab); let linkedBrowser = tab.linkedBrowser; - loadFrameScriptUtils(linkedBrowser); + linkedBrowser.messageManager.loadFrameScript(COMMON_FRAME_SCRIPT_URL, false); linkedBrowser.messageManager.loadFrameScript(FRAME_SCRIPT_URL, false); gDevTools.showToolbox(target).then(testSelectTool); diff --git a/devtools/client/framework/test/browser_toolbox_window_reload_target.js b/devtools/client/framework/test/browser_toolbox_window_reload_target.js index dff3a78f7158..9f3339728b91 100644 --- a/devtools/client/framework/test/browser_toolbox_window_reload_target.js +++ b/devtools/client/framework/test/browser_toolbox_window_reload_target.js @@ -31,7 +31,7 @@ function test() { } function startReloadTest(aToolbox) { - loadFrameScriptUtils(); // causes frame-script-utils to be loaded into the child. + getFrameScript(); // causes frame-script-utils to be loaded into the child. toolbox = aToolbox; reloadsSent = 0; diff --git a/devtools/client/framework/test/head.js b/devtools/client/framework/test/head.js index 9f66e6204484..9e4f4cf988ef 100644 --- a/devtools/client/framework/test/head.js +++ b/devtools/client/framework/test/head.js @@ -3,10 +3,10 @@ /* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from shared-head.js */ // shared-head.js handles imports, constants, and utility functions -Services.scriptloader.loadSubScript("chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", this); +Services.scriptloader.loadSubScript("chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js", this); const EventEmitter = require("devtools/shared/old-event-emitter"); @@ -156,16 +156,14 @@ function checkHostType(toolbox, hostType, previousHostType) { */ function createScript(url) { info(`Creating script: ${url}`); - // This is not ideal if called multiple times, as it loads the frame script - // separately each time. See bug 1443680. - loadFrameScriptUtils(); + let mm = getFrameScript(); let command = ` let script = document.createElement("script"); script.setAttribute("src", "${url}"); document.body.appendChild(script); null; `; - return evalInDebuggee(command); + return evalInDebuggee(mm, command); } /** diff --git a/devtools/client/framework/test/helper_disable_cache.js b/devtools/client/framework/test/helper_disable_cache.js index 54fc12afc944..5e2feef8f2ec 100644 --- a/devtools/client/framework/test/helper_disable_cache.js +++ b/devtools/client/framework/test/helper_disable_cache.js @@ -97,7 +97,7 @@ function reloadTab(tabX) { }); info("Reloading tab " + tabX.title); - let mm = loadFrameScriptUtils(); + let mm = getFrameScript(); mm.sendAsyncMessage("devtools:test:reload"); return def.promise; diff --git a/devtools/client/shared/test/shared-head.js b/devtools/client/framework/test/shared-head.js similarity index 97% rename from devtools/client/shared/test/shared-head.js rename to devtools/client/framework/test/shared-head.js index a1ffa9014fe5..dce0e563030e 100644 --- a/devtools/client/shared/test/shared-head.js +++ b/devtools/client/framework/test/shared-head.js @@ -84,7 +84,7 @@ registerCleanupFunction(function () { const ConsoleObserver = { QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]), - observe: function (subject) { + observe: function (subject, topic, data) { let message = subject.wrappedJSObject.arguments[0]; if (message && /Failed propType/.test(message.toString())) { @@ -117,10 +117,9 @@ if (DEBUG_ALLOCATIONS) { var waitForTime = DevToolsUtils.waitForTime; -function loadFrameScriptUtils(browser = gBrowser.selectedBrowser) { - let mm = browser.messageManager; - let frameURL = "chrome://mochitests/content/browser/devtools/client/shared/test/frame-script-utils.js"; - info("Loading the helper frame script " + frameURL); +function getFrameScript() { + let mm = gBrowser.selectedBrowser.messageManager; + let frameURL = "chrome://devtools/content/shared/frame-script-utils.js"; mm.loadFrameScript(frameURL, false); SimpleTest.registerCleanupFunction(() => { mm = null; @@ -279,9 +278,9 @@ function waitForNEvents(target, eventName, numTimes, useCapture = false) { let count = 0; for (let [add, remove] of [ - ["on", "off"], ["addEventListener", "removeEventListener"], ["addListener", "removeListener"], + ["on", "off"] ]) { if ((add in target) && (remove in target)) { target[add](eventName, function onEvent(...aArgs) { @@ -383,10 +382,7 @@ function waitForTick() { * @return A promise that resolves when the time is passed */ function wait(ms) { - return new Promise(resolve => { - setTimeout(resolve, ms); - info("Waiting " + ms / 1000 + " seconds."); - }); + return new promise(resolve => setTimeout(resolve, ms)); } /** @@ -443,12 +439,12 @@ var openNewTabAndToolbox = Task.async(function* (url, toolId, hostType) { * closed. */ var closeTabAndToolbox = Task.async(function* (tab = gBrowser.selectedTab) { - let target = TargetFactory.forTab(tab); + let target = TargetFactory.forTab(gBrowser.selectedTab); if (target) { yield gDevTools.closeToolbox(target); } - yield removeTab(tab); + yield removeTab(gBrowser.selectedTab); }); /** @@ -486,10 +482,9 @@ function waitUntil(predicate, interval = 10) { * in potentially a different process. */ let MM_INC_ID = 0; -function evalInDebuggee(script, browser = gBrowser.selectedBrowser) { - return new Promise(resolve => { +function evalInDebuggee(mm, script) { + return new Promise(function (resolve, reject) { let id = MM_INC_ID++; - let mm = browser.messageManager; mm.sendAsyncMessage("devtools:test:eval", { script, id }); mm.addMessageListener("devtools:test:eval:response", handler); @@ -658,7 +653,8 @@ function stopRecordingTelemetryLogs(Telemetry) { * Windows (see Bug 666254). */ function emptyClipboard() { - let clipboard = Services.clipboard; + let clipboard = Cc["@mozilla.org/widget/clipboard;1"] + .getService(SpecialPowers.Ci.nsIClipboard); clipboard.emptyClipboard(clipboard.kGlobalClipboard); } diff --git a/devtools/client/shared/test/shared-redux-head.js b/devtools/client/framework/test/shared-redux-head.js similarity index 100% rename from devtools/client/shared/test/shared-redux-head.js rename to devtools/client/framework/test/shared-redux-head.js diff --git a/devtools/client/inspector/animation/test/browser.ini b/devtools/client/inspector/animation/test/browser.ini index 3c88432d97e4..d484cbdc3133 100644 --- a/devtools/client/inspector/animation/test/browser.ini +++ b/devtools/client/inspector/animation/test/browser.ini @@ -7,10 +7,9 @@ support-files = doc_multi_timings.html doc_simple_animation.html head.js + !/devtools/client/framework/test/shared-head.js !/devtools/client/inspector/test/head.js !/devtools/client/inspector/test/shared-head.js - !/devtools/client/shared/test/frame-script-utils.js - !/devtools/client/shared/test/shared-head.js !/devtools/client/shared/test/test-actor-registry.js !/devtools/client/shared/test/test-actor.js diff --git a/devtools/client/inspector/animation/test/head.js b/devtools/client/inspector/animation/test/head.js index 9c0804a50f13..93b89d783965 100644 --- a/devtools/client/inspector/animation/test/head.js +++ b/devtools/client/inspector/animation/test/head.js @@ -9,6 +9,7 @@ Services.scriptloader.loadSubScript( "chrome://mochitests/content/browser/devtools/client/inspector/test/head.js", this); +const COMMON_FRAME_SCRIPT_URL = "chrome://devtools/content/shared/frame-script-utils.js"; const FRAME_SCRIPT_URL = CHROME_URL_ROOT + "doc_frame_script.js"; const TAB_NAME = "newanimationinspector"; @@ -80,7 +81,8 @@ addTab = async function (url) { const browser = tab.linkedBrowser; info("Loading the helper frame script " + FRAME_SCRIPT_URL); browser.messageManager.loadFrameScript(FRAME_SCRIPT_URL, false); - loadFrameScriptUtils(browser); + info("Loading the helper frame script " + COMMON_FRAME_SCRIPT_URL); + browser.messageManager.loadFrameScript(COMMON_FRAME_SCRIPT_URL, false); return tab; }; diff --git a/devtools/client/inspector/boxmodel/test/browser.ini b/devtools/client/inspector/boxmodel/test/browser.ini index e3174ed0159a..da8ecc32426d 100644 --- a/devtools/client/inspector/boxmodel/test/browser.ini +++ b/devtools/client/inspector/boxmodel/test/browser.ini @@ -6,9 +6,9 @@ support-files = doc_boxmodel_iframe2.html head.js !/devtools/client/commandline/test/helpers.js + !/devtools/client/framework/test/shared-head.js !/devtools/client/inspector/test/head.js !/devtools/client/inspector/test/shared-head.js - !/devtools/client/shared/test/shared-head.js !/devtools/client/shared/test/test-actor.js !/devtools/client/shared/test/test-actor-registry.js diff --git a/devtools/client/inspector/boxmodel/test/head.js b/devtools/client/inspector/boxmodel/test/head.js index 73999b32da4e..618f62aecb7e 100644 --- a/devtools/client/inspector/boxmodel/test/head.js +++ b/devtools/client/inspector/boxmodel/test/head.js @@ -2,7 +2,7 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ /* eslint no-unused-vars: [2, {"vars": "local"}] */ -/* import-globals-from ../../../shared/test/shared-head.js */ +/* import-globals-from ../../../framework/test/shared-head.js */ /* import-globals-from ../../test/head.js */ "use strict"; diff --git a/devtools/client/inspector/computed/test/browser.ini b/devtools/client/inspector/computed/test/browser.ini index 4dfd33827a58..251152482b19 100644 --- a/devtools/client/inspector/computed/test/browser.ini +++ b/devtools/client/inspector/computed/test/browser.ini @@ -11,9 +11,9 @@ support-files = doc_sourcemaps.scss head.js !/devtools/client/commandline/test/helpers.js + !/devtools/client/framework/test/shared-head.js !/devtools/client/inspector/test/head.js !/devtools/client/inspector/test/shared-head.js - !/devtools/client/shared/test/shared-head.js !/devtools/client/shared/test/test-actor.js !/devtools/client/shared/test/test-actor-registry.js diff --git a/devtools/client/inspector/extensions/test/browser.ini b/devtools/client/inspector/extensions/test/browser.ini index 6b55fbfb3069..c28910f0e755 100644 --- a/devtools/client/inspector/extensions/test/browser.ini +++ b/devtools/client/inspector/extensions/test/browser.ini @@ -5,9 +5,9 @@ support-files = head.js head_devtools_inspector_sidebar.js !/devtools/client/commandline/test/helpers.js + !/devtools/client/framework/test/shared-head.js !/devtools/client/inspector/test/head.js !/devtools/client/inspector/test/shared-head.js - !/devtools/client/shared/test/shared-head.js !/devtools/client/shared/test/test-actor.js !/devtools/client/shared/test/test-actor-registry.js diff --git a/devtools/client/inspector/fonts/test/browser.ini b/devtools/client/inspector/fonts/test/browser.ini index 45a6b0d66a15..7b3696397d3b 100644 --- a/devtools/client/inspector/fonts/test/browser.ini +++ b/devtools/client/inspector/fonts/test/browser.ini @@ -8,9 +8,9 @@ support-files = ostrich-regular.ttf head.js !/devtools/client/commandline/test/helpers.js + !/devtools/client/framework/test/shared-head.js !/devtools/client/inspector/test/head.js !/devtools/client/inspector/test/shared-head.js - !/devtools/client/shared/test/shared-head.js !/devtools/client/shared/test/test-actor.js !/devtools/client/shared/test/test-actor-registry.js diff --git a/devtools/client/inspector/grids/test/browser.ini b/devtools/client/inspector/grids/test/browser.ini index 0f49725aad74..ec72d52f8e7a 100644 --- a/devtools/client/inspector/grids/test/browser.ini +++ b/devtools/client/inspector/grids/test/browser.ini @@ -5,12 +5,12 @@ support-files = doc_iframe_reloaded.html head.js !/devtools/client/commandline/test/helpers.js + !/devtools/client/framework/test/shared-head.js !/devtools/client/inspector/test/head.js !/devtools/client/inspector/test/shared-head.js - !/devtools/client/shared/test/shared-head.js - !/devtools/client/shared/test/shared-redux-head.js !/devtools/client/shared/test/test-actor.js !/devtools/client/shared/test/test-actor-registry.js + !/devtools/client/framework/test/shared-redux-head.js [browser_grids_accordion-state.js] [browser_grids_color-in-rules-grid-toggle.js] diff --git a/devtools/client/inspector/grids/test/head.js b/devtools/client/inspector/grids/test/head.js index cfe66898fcd6..460f2df0ba2c 100644 --- a/devtools/client/inspector/grids/test/head.js +++ b/devtools/client/inspector/grids/test/head.js @@ -2,7 +2,7 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ /* eslint no-unused-vars: [2, {"vars": "local"}] */ -/* import-globals-from ../../../shared/test/shared-head.js */ +/* import-globals-from ../../../framework/test/shared-head.js */ /* import-globals-from ../../test/head.js */ "use strict"; @@ -13,7 +13,7 @@ Services.scriptloader.loadSubScript( // Load the shared Redux helpers into this compartment. Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-redux-head.js", + "chrome://mochitests/content/browser/devtools/client/framework/test/shared-redux-head.js", this); Services.prefs.setIntPref("devtools.toolbox.footer.height", 350); diff --git a/devtools/client/inspector/markup/test/browser.ini b/devtools/client/inspector/markup/test/browser.ini index eac12174eed8..0e5371b91d38 100644 --- a/devtools/client/inspector/markup/test/browser.ini +++ b/devtools/client/inspector/markup/test/browser.ini @@ -70,9 +70,9 @@ support-files = lib_react_with_addons_15.4.1.js react_external_listeners.js !/devtools/client/commandline/test/helpers.js + !/devtools/client/framework/test/shared-head.js !/devtools/client/inspector/test/head.js !/devtools/client/inspector/test/shared-head.js - !/devtools/client/shared/test/shared-head.js !/devtools/client/shared/test/test-actor.js !/devtools/client/shared/test/test-actor-registry.js diff --git a/devtools/client/inspector/rules/test/browser.ini b/devtools/client/inspector/rules/test/browser.ini index 0b190e986444..e924b0ea88c0 100644 --- a/devtools/client/inspector/rules/test/browser.ini +++ b/devtools/client/inspector/rules/test/browser.ini @@ -40,9 +40,9 @@ support-files = doc_variables_2.html head.js !/devtools/client/commandline/test/helpers.js + !/devtools/client/framework/test/shared-head.js !/devtools/client/inspector/test/head.js !/devtools/client/inspector/test/shared-head.js - !/devtools/client/shared/test/shared-head.js !/devtools/client/shared/test/test-actor.js !/devtools/client/shared/test/test-actor-registry.js diff --git a/devtools/client/inspector/shared/test/browser.ini b/devtools/client/inspector/shared/test/browser.ini index a95baaad68e7..36fd20064169 100644 --- a/devtools/client/inspector/shared/test/browser.ini +++ b/devtools/client/inspector/shared/test/browser.ini @@ -13,9 +13,9 @@ support-files = doc_frame_script.js head.js !/devtools/client/commandline/test/helpers.js + !/devtools/client/framework/test/shared-head.js !/devtools/client/inspector/test/head.js !/devtools/client/inspector/test/shared-head.js - !/devtools/client/shared/test/shared-head.js !/devtools/client/shared/test/test-actor.js !/devtools/client/shared/test/test-actor-registry.js diff --git a/devtools/client/inspector/test/browser.ini b/devtools/client/inspector/test/browser.ini index 2af827fd13c3..cebed4e126fb 100644 --- a/devtools/client/inspector/test/browser.ini +++ b/devtools/client/inspector/test/browser.ini @@ -44,7 +44,7 @@ support-files = img_browser_inspector_highlighter-eyedropper-image.png shared-head.js !/devtools/client/commandline/test/helpers.js - !/devtools/client/shared/test/shared-head.js + !/devtools/client/framework/test/shared-head.js !/devtools/client/shared/test/test-actor.js !/devtools/client/shared/test/test-actor-registry.js diff --git a/devtools/client/inspector/test/head.js b/devtools/client/inspector/test/head.js index 1ec255a8f66d..088ee499b911 100644 --- a/devtools/client/inspector/test/head.js +++ b/devtools/client/inspector/test/head.js @@ -3,14 +3,14 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* eslint no-unused-vars: [2, {"vars": "local"}] */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ /* import-globals-from ../../shared/test/test-actor-registry.js */ /* import-globals-from ../../inspector/test/shared-head.js */ "use strict"; // Load the shared-head file first. Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", + "chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js", this); // Services.prefs.setBoolPref("devtools.debugger.log", true); diff --git a/devtools/client/inspector/test/shared-head.js b/devtools/client/inspector/test/shared-head.js index 99c0864cac21..e64b276e4aaa 100644 --- a/devtools/client/inspector/test/shared-head.js +++ b/devtools/client/inspector/test/shared-head.js @@ -6,7 +6,7 @@ /* eslint no-unused-vars: [2, {"vars": "local"}] */ /* globals registerTestActor, getTestActor, Task, openToolboxForTab, gBrowser */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ var {getInplaceEditorForSpan: inplaceEditor} = require("devtools/client/shared/inplace-editor"); diff --git a/devtools/client/jar.mn b/devtools/client/jar.mn index 628a9eb25bf4..975f0e7c34e2 100644 --- a/devtools/client/jar.mn +++ b/devtools/client/jar.mn @@ -15,6 +15,7 @@ devtools.jar: content/scratchpad/scratchpad.js (scratchpad/scratchpad.js) content/shared/splitview.css (shared/splitview.css) content/shared/theme-switching.js (shared/theme-switching.js) + content/shared/frame-script-utils.js (shared/frame-script-utils.js) * content/styleeditor/styleeditor.xul (styleeditor/styleeditor.xul) * content/storage/storage.xul (storage/storage.xul) content/inspector/inspector.js (inspector/inspector.js) diff --git a/devtools/client/jsonview/test/browser.ini b/devtools/client/jsonview/test/browser.ini index 1b21d1fd964a..595f60aee760 100644 --- a/devtools/client/jsonview/test/browser.ini +++ b/devtools/client/jsonview/test/browser.ini @@ -20,8 +20,7 @@ support-files = valid_json.json^headers^ !/devtools/client/commandline/test/head.js !/devtools/client/framework/test/head.js - !/devtools/client/shared/test/frame-script-utils.js - !/devtools/client/shared/test/shared-head.js + !/devtools/client/framework/test/shared-head.js [browser_json_refresh.js] [browser_jsonview_bug_1380828.js] diff --git a/devtools/client/jsonview/test/head.js b/devtools/client/jsonview/test/head.js index ad2a2cd64eb4..2a5584723909 100644 --- a/devtools/client/jsonview/test/head.js +++ b/devtools/client/jsonview/test/head.js @@ -2,7 +2,7 @@ /* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ /* eslint no-unused-vars: [2, {"vars": "local", "args": "none"}] */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ /* import-globals-from ../../framework/test/head.js */ "use strict"; @@ -20,7 +20,7 @@ registerCleanupFunction(() => { Services.prefs.clearUserPref(JSON_VIEW_PREF); }); -// XXX move some API into devtools/shared/test/shared-head.js +// XXX move some API into devtools/framework/test/shared-head.js /** * Add a new test tab in the browser and load the given url. @@ -65,8 +65,8 @@ async function addJsonViewTab(url, { }, Ci.nsIWebProgress.NOTIFY_LOCATION); })]); - // Load devtools/shared/test/frame-script-utils.js - loadFrameScriptUtils(); + // Load devtools/shared/frame-script-utils.js + getFrameScript(); let rootDir = getRootDirectory(gTestPath); // Catch RequireJS errors (usually timeouts) diff --git a/devtools/client/memory/test/browser/browser.ini b/devtools/client/memory/test/browser/browser.ini index bac51b5bf0f9..8e68a5b39f70 100644 --- a/devtools/client/memory/test/browser/browser.ini +++ b/devtools/client/memory/test/browser/browser.ini @@ -6,8 +6,8 @@ support-files = doc_big_tree.html doc_empty.html doc_steady_allocation.html - !/devtools/client/shared/test/shared-head.js - !/devtools/client/shared/test/shared-redux-head.js + !/devtools/client/framework/test/shared-head.js + !/devtools/client/framework/test/shared-redux-head.js [browser_memory_allocationStackDisplay_01.js] skip-if = debug # bug 1219554 diff --git a/devtools/client/memory/test/browser/head.js b/devtools/client/memory/test/browser/head.js index 47702d416c57..d47b37682ac3 100644 --- a/devtools/client/memory/test/browser/head.js +++ b/devtools/client/memory/test/browser/head.js @@ -5,12 +5,12 @@ // Load the shared test helpers into this compartment. Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", + "chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js", this); // Load the shared Redux helpers into this compartment. Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-redux-head.js", + "chrome://mochitests/content/browser/devtools/client/framework/test/shared-redux-head.js", this); var { censusDisplays, snapshotState: states } = require("devtools/client/memory/constants"); diff --git a/devtools/client/memory/test/unit/xpcshell.ini b/devtools/client/memory/test/unit/xpcshell.ini index 24dcdf320691..ccb1a02e1aa9 100644 --- a/devtools/client/memory/test/unit/xpcshell.ini +++ b/devtools/client/memory/test/unit/xpcshell.ini @@ -1,6 +1,6 @@ [DEFAULT] tags = devtools devtools-memory -head = head.js ../../../shared/test/shared-redux-head.js +head = head.js ../../../framework/test/shared-redux-head.js firefox-appdir = browser skip-if = toolkit == 'android' diff --git a/devtools/client/netmonitor/src/har/test/browser.ini b/devtools/client/netmonitor/src/har/test/browser.ini index df5d7bc3eb7c..7066987552b6 100644 --- a/devtools/client/netmonitor/src/har/test/browser.ini +++ b/devtools/client/netmonitor/src/har/test/browser.ini @@ -9,8 +9,8 @@ support-files = sjs_cache-test-server.sjs sjs_cookies-test-server.sjs !/devtools/client/netmonitor/test/head.js + !/devtools/client/framework/test/shared-head.js !/devtools/client/netmonitor/test/html_simple-test-page.html - !/devtools/client/shared/test/shared-head.js [browser_net_har_copy_all_as_har.js] [browser_net_har_import.js] diff --git a/devtools/client/netmonitor/test/browser.ini b/devtools/client/netmonitor/test/browser.ini index 3121697e6341..928b167a9c56 100644 --- a/devtools/client/netmonitor/test/browser.ini +++ b/devtools/client/netmonitor/test/browser.ini @@ -52,11 +52,10 @@ support-files = test-image.png service-workers/status-codes.html service-workers/status-codes-service-worker.js + !/devtools/client/framework/test/shared-head.js xhr_bundle.js xhr_bundle.js.map xhr_original.js - !/devtools/client/shared/test/frame-script-utils.js - !/devtools/client/shared/test/shared-head.js [browser_net_accessibility-01.js] [browser_net_accessibility-02.js] diff --git a/devtools/client/netmonitor/test/browser_net_filter-01.js b/devtools/client/netmonitor/test/browser_net_filter-01.js index 61fae600c961..f5cbe89847b7 100644 --- a/devtools/client/netmonitor/test/browser_net_filter-01.js +++ b/devtools/client/netmonitor/test/browser_net_filter-01.js @@ -147,7 +147,7 @@ add_task(function* () { info("Starting test... "); let wait = waitForNetworkEvents(monitor, 9); - loadFrameScriptUtils(); + loadCommonFrameScript(); yield performRequestsInContent(REQUESTS_WITH_MEDIA_AND_FLASH_AND_WS); yield wait; diff --git a/devtools/client/netmonitor/test/browser_net_filter-02.js b/devtools/client/netmonitor/test/browser_net_filter-02.js index bb8dc8b50098..e38674f83c3b 100644 --- a/devtools/client/netmonitor/test/browser_net_filter-02.js +++ b/devtools/client/netmonitor/test/browser_net_filter-02.js @@ -147,7 +147,7 @@ add_task(function* () { store.dispatch(Actions.batchEnable(false)); let wait = waitForNetworkEvents(monitor, 9); - loadFrameScriptUtils(); + loadCommonFrameScript(); yield performRequestsInContent(REQUESTS_WITH_MEDIA_AND_FLASH_AND_WS); yield wait; diff --git a/devtools/client/netmonitor/test/browser_net_filter-03.js b/devtools/client/netmonitor/test/browser_net_filter-03.js index f9b8926800f6..a4da213dd47e 100644 --- a/devtools/client/netmonitor/test/browser_net_filter-03.js +++ b/devtools/client/netmonitor/test/browser_net_filter-03.js @@ -43,7 +43,7 @@ add_task(function* () { let newres = "res=

" + new Array(10).join(Math.random(10)) + "

"; requests[0].url = requests[0].url.replace("res=undefined", newres); - loadFrameScriptUtils(); + loadCommonFrameScript(); let wait = waitForNetworkEvents(monitor, 7); yield performRequestsInContent(requests); diff --git a/devtools/client/netmonitor/test/browser_net_filter-04.js b/devtools/client/netmonitor/test/browser_net_filter-04.js index abc1819ecd15..34821eb5cd9b 100644 --- a/devtools/client/netmonitor/test/browser_net_filter-04.js +++ b/devtools/client/netmonitor/test/browser_net_filter-04.js @@ -48,7 +48,7 @@ add_task(function* () { "The first filter type is invalid, but loaded anyway."); let wait = waitForNetworkEvents(monitor, 9); - loadFrameScriptUtils(); + loadCommonFrameScript(); yield performRequestsInContent(REQUESTS_WITH_MEDIA_AND_FLASH_AND_WS); yield wait; diff --git a/devtools/client/netmonitor/test/browser_net_filter-autocomplete.js b/devtools/client/netmonitor/test/browser_net_filter-autocomplete.js index 37e1ec965870..ddd0bdef37b4 100644 --- a/devtools/client/netmonitor/test/browser_net_filter-autocomplete.js +++ b/devtools/client/netmonitor/test/browser_net_filter-autocomplete.js @@ -46,7 +46,7 @@ add_task(async function () { // Let the requests load completely before the autocomplete tests begin // as autocomplete values also rely on the network requests. let waitNetwork = waitForNetworkEvents(monitor, REQUESTS.length); - loadFrameScriptUtils(); + loadCommonFrameScript(); await performRequestsInContent(REQUESTS); await waitNetwork; diff --git a/devtools/client/netmonitor/test/browser_net_filter-flags.js b/devtools/client/netmonitor/test/browser_net_filter-flags.js index aaef6620797c..ddc6b26fe791 100644 --- a/devtools/client/netmonitor/test/browser_net_filter-flags.js +++ b/devtools/client/netmonitor/test/browser_net_filter-flags.js @@ -166,7 +166,7 @@ add_task(function* () { info("Starting test... "); let waitNetwork = waitForNetworkEvents(monitor, REQUESTS.length); - loadFrameScriptUtils(); + loadCommonFrameScript(); yield performRequestsInContent(REQUESTS); yield waitNetwork; diff --git a/devtools/client/netmonitor/test/browser_net_sort-01.js b/devtools/client/netmonitor/test/browser_net_sort-01.js index 0fc21053b0ce..b6cb4c462d7d 100644 --- a/devtools/client/netmonitor/test/browser_net_sort-01.js +++ b/devtools/client/netmonitor/test/browser_net_sort-01.js @@ -29,7 +29,7 @@ add_task(function* () { // Loading the frame script and preparing the xhr request URLs so we can // generate some requests later. - loadFrameScriptUtils(); + loadCommonFrameScript(); let requests = [{ url: "sjs_sorting-test-server.sjs?index=1&" + Math.random(), method: "GET1" diff --git a/devtools/client/netmonitor/test/browser_net_sort-02.js b/devtools/client/netmonitor/test/browser_net_sort-02.js index 9f4dcf7816f7..1d1cee8579d7 100644 --- a/devtools/client/netmonitor/test/browser_net_sort-02.js +++ b/devtools/client/netmonitor/test/browser_net_sort-02.js @@ -29,7 +29,7 @@ add_task(function* () { // Loading the frame script and preparing the xhr request URLs so we can // generate some requests later. - loadFrameScriptUtils(); + loadCommonFrameScript(); let requests = [{ url: "sjs_sorting-test-server.sjs?index=1&" + Math.random(), method: "GET1" diff --git a/devtools/client/netmonitor/test/head.js b/devtools/client/netmonitor/test/head.js index a57063542f59..64cdd6b4d282 100644 --- a/devtools/client/netmonitor/test/head.js +++ b/devtools/client/netmonitor/test/head.js @@ -1,9 +1,9 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ /* exported Toolbox, restartNetMonitor, teardown, waitForExplicitFinish, - verifyRequestItemTarget, waitFor, testFilterButtons, + verifyRequestItemTarget, waitFor, testFilterButtons, loadCommonFrameScript, performRequestsInContent, waitForNetworkEvents, selectIndexAndWaitForSourceEditor, testColumnsAlignment, hideColumn, showColumn */ @@ -11,7 +11,7 @@ // shared-head.js handles imports, constants, and utility functions Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", + "chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js", this); const { @@ -79,6 +79,7 @@ const HSTS_PAGE_URL = CUSTOM_GET_URL; const TEST_IMAGE = EXAMPLE_URL + "test-image.png"; const TEST_IMAGE_DATA_URI = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg=="; +const FRAME_SCRIPT_UTILS_URL = "chrome://devtools/content/shared/frame-script-utils.js"; /* eslint-enable no-unused-vars, max-len */ // All tests are asynchronous. @@ -616,12 +617,24 @@ function testFilterButtonsCustom(monitor, isChecked) { } } +/** + * Loads shared/frame-script-utils.js in the specified tab. + * + * @param tab + * Optional tab to load the frame script in. Defaults to the current tab. + */ +function loadCommonFrameScript(tab) { + let browser = tab ? tab.linkedBrowser : gBrowser.selectedBrowser; + + browser.messageManager.loadFrameScript(FRAME_SCRIPT_UTILS_URL, false); +} + /** * Perform the specified requests in the context of the page content. * * @param Array requests * An array of objects specifying the requests to perform. See - * shared/test/frame-script-utils.js for more information. + * shared/frame-script-utils.js for more information. * * @return A promise that resolves once the requests complete. */ @@ -636,7 +649,7 @@ function performRequestsInContent(requests) { * * @param String name * The message name. Should be one of the messages defined - * shared/test/frame-script-utils.js + * shared/frame-script-utils.js * @param Object data * Optional data to send along * @param Object objects diff --git a/devtools/client/performance/test/browser.ini b/devtools/client/performance/test/browser.ini index 0ecfeefd9ef2..23354e59efa4 100644 --- a/devtools/client/performance/test/browser.ini +++ b/devtools/client/performance/test/browser.ini @@ -10,7 +10,6 @@ support-files = doc_worker.html js_simpleWorker.js head.js - !/devtools/client/shared/test/frame-script-utils.js [browser_aaa-run-first-leaktest.js] [browser_perf-button-states.js] diff --git a/devtools/client/performance/test/helpers/profiler-mm-utils.js b/devtools/client/performance/test/helpers/profiler-mm-utils.js index 4718115d452e..bffebf818458 100644 --- a/devtools/client/performance/test/helpers/profiler-mm-utils.js +++ b/devtools/client/performance/test/helpers/profiler-mm-utils.js @@ -12,7 +12,7 @@ const { Cc, Ci } = require("chrome"); const { Task } = require("devtools/shared/task"); -const FRAME_SCRIPT_UTILS_URL = "chrome://mochitests/content/browser/devtools/client/shared/test/frame-script-utils.js"; +const FRAME_SCRIPT_UTILS_URL = "chrome://devtools/content/shared/frame-script-utils.js"; let gMM = null; diff --git a/devtools/client/responsive.html/test/browser/browser.ini b/devtools/client/responsive.html/test/browser/browser.ini index 865aadb4366a..20d0a9381291 100644 --- a/devtools/client/responsive.html/test/browser/browser.ini +++ b/devtools/client/responsive.html/test/browser/browser.ini @@ -11,9 +11,9 @@ support-files = head.js touch.html !/devtools/client/commandline/test/helpers.js + !/devtools/client/framework/test/shared-head.js + !/devtools/client/framework/test/shared-redux-head.js !/devtools/client/inspector/test/shared-head.js - !/devtools/client/shared/test/shared-head.js - !/devtools/client/shared/test/shared-redux-head.js !/devtools/client/shared/test/test-actor.js !/devtools/client/shared/test/test-actor-registry.js diff --git a/devtools/client/responsive.html/test/browser/head.js b/devtools/client/responsive.html/test/browser/head.js index 5660a58846d7..2a5ef109faf7 100644 --- a/devtools/client/responsive.html/test/browser/head.js +++ b/devtools/client/responsive.html/test/browser/head.js @@ -4,16 +4,16 @@ "use strict"; /* eslint no-unused-vars: [2, {"vars": "local"}] */ -/* import-globals-from ../../../shared/test/shared-head.js */ -/* import-globals-from ../../../shared/test/shared-redux-head.js */ +/* import-globals-from ../../../framework/test/shared-head.js */ +/* import-globals-from ../../../framework/test/shared-redux-head.js */ /* import-globals-from ../../../commandline/test/helpers.js */ /* import-globals-from ../../../inspector/test/shared-head.js */ Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", + "chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js", this); Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-redux-head.js", + "chrome://mochitests/content/browser/devtools/client/framework/test/shared-redux-head.js", this); // Import the GCLI test helper diff --git a/devtools/client/responsive.html/test/unit/xpcshell.ini b/devtools/client/responsive.html/test/unit/xpcshell.ini index 432e68ed2030..ed745c18c593 100644 --- a/devtools/client/responsive.html/test/unit/xpcshell.ini +++ b/devtools/client/responsive.html/test/unit/xpcshell.ini @@ -1,6 +1,6 @@ [DEFAULT] tags = devtools -head = head.js ../../../shared/test/shared-redux-head.js +head = head.js ../../../framework/test/shared-redux-head.js firefox-appdir = browser [test_add_device.js] diff --git a/devtools/client/shadereditor/test/browser.ini b/devtools/client/shadereditor/test/browser.ini index 3a0e0ee1b487..b26bc3a748f2 100644 --- a/devtools/client/shadereditor/test/browser.ini +++ b/devtools/client/shadereditor/test/browser.ini @@ -8,8 +8,6 @@ support-files = doc_shader-order.html doc_simple-canvas.html head.js - !/devtools/client/shared/test/frame-script-utils.js - !/devtools/client/shared/test/shared-head.js [browser_se_aaa_run_first_leaktest.js] [browser_se_bfcache.js] diff --git a/devtools/client/shadereditor/test/head.js b/devtools/client/shadereditor/test/head.js index 9b0fc3fc93cb..36acebd997ba 100644 --- a/devtools/client/shadereditor/test/head.js +++ b/devtools/client/shadereditor/test/head.js @@ -1,22 +1,25 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ - -/* eslint no-unused-vars: [2, {"vars": "local"}] */ -/* import-globals-from ../../shared/test/shared-head.js */ - "use strict"; -// Load the shared-head file first. -Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", - this); +var { require } = ChromeUtils.import("resource://devtools/shared/Loader.jsm", {}); +var { Task } = require("devtools/shared/task"); +var Services = require("Services"); +var promise = require("promise"); +const defer = require("devtools/shared/defer"); +var { gDevTools } = require("devtools/client/framework/devtools"); var { DebuggerClient } = require("devtools/shared/client/debugger-client"); var { DebuggerServer } = require("devtools/server/main"); var { WebGLFront } = require("devtools/shared/fronts/webgl"); +var DevToolsUtils = require("devtools/shared/DevToolsUtils"); +var flags = require("devtools/shared/flags"); +var { TargetFactory } = require("devtools/client/framework/target"); var { Toolbox } = require("devtools/client/framework/toolbox"); var { isWebGLSupported } = require("devtools/client/shared/webgl-utils"); +var mm = null; +const FRAME_SCRIPT_UTILS_URL = "chrome://devtools/content/shared/frame-script-utils.js"; const EXAMPLE_URL = "http://example.com/browser/devtools/client/shadereditor/test/"; const SIMPLE_CANVAS_URL = EXAMPLE_URL + "doc_simple-canvas.html"; const SHADER_ORDER_URL = EXAMPLE_URL + "doc_shader-order.html"; @@ -28,9 +31,16 @@ var gEnableLogging = Services.prefs.getBoolPref("devtools.debugger.log"); // To enable logging for try runs, just set the pref to true. Services.prefs.setBoolPref("devtools.debugger.log", false); +// All tests are asynchronous. +waitForExplicitFinish(); + var gToolEnabled = Services.prefs.getBoolPref("devtools.shadereditor.enabled"); +flags.testing = true; + registerCleanupFunction(() => { + info("finish() was called, cleaning up..."); + flags.testing = false; Services.prefs.setBoolPref("devtools.debugger.log", gEnableLogging); Services.prefs.setBoolPref("devtools.shadereditor.enabled", gToolEnabled); @@ -49,10 +59,47 @@ registerCleanupFunction(() => { */ function loadFrameScripts() { if (Cu.isCrossProcessWrapper(content)) { - loadFrameScriptUtils(); + mm = gBrowser.selectedBrowser.messageManager; + mm.loadFrameScript(FRAME_SCRIPT_UTILS_URL, false); } } +function addTab(aUrl, aWindow) { + info("Adding tab: " + aUrl); + + let deferred = defer(); + let targetWindow = aWindow || window; + let targetBrowser = targetWindow.gBrowser; + + targetWindow.focus(); + let tab = targetBrowser.selectedTab = targetBrowser.addTab(aUrl); + let linkedBrowser = tab.linkedBrowser; + + BrowserTestUtils.browserLoaded(linkedBrowser).then(function () { + info("Tab added and finished loading: " + aUrl); + deferred.resolve(tab); + }); + + return deferred.promise; +} + +function removeTab(aTab, aWindow) { + info("Removing tab."); + + let deferred = defer(); + let targetWindow = aWindow || window; + let targetBrowser = targetWindow.gBrowser; + let tabContainer = targetBrowser.tabContainer; + + tabContainer.addEventListener("TabClose", function (aEvent) { + info("Tab removed and finished closing."); + deferred.resolve(); + }, {once: true}); + + targetBrowser.removeTab(aTab); + return deferred.promise; +} + function handleError(aError) { ok(false, "Got an error: " + aError.message + "\n" + aError.stack); finish(); @@ -77,6 +124,28 @@ function createCanvas() { return document.createElementNS("http://www.w3.org/1999/xhtml", "canvas"); } +function once(aTarget, aEventName, aUseCapture = false) { + info("Waiting for event: '" + aEventName + "' on " + aTarget + "."); + + let deferred = defer(); + + for (let [add, remove] of [ + ["on", "off"], // Use event emitter before DOM events for consistency + ["addEventListener", "removeEventListener"], + ["addListener", "removeListener"] + ]) { + if ((add in aTarget) && (remove in aTarget)) { + aTarget[add](aEventName, function onEvent(...aArgs) { + aTarget[remove](aEventName, onEvent, aUseCapture); + deferred.resolve(...aArgs); + }, aUseCapture); + break; + } + } + + return deferred.promise; +} + // Hack around `once`, as that only resolves to a single (first) argument // and discards the rest. `onceSpread` is similar, except resolves to an // array of all of the arguments in the handler. These should be consolidated @@ -131,9 +200,12 @@ function ensurePixelIs(aFront, aPosition, aColor, aWaitFlag = false, aSelector = function navigateInHistory(aTarget, aDirection, aWaitForTargetEvent = "navigate") { if (Cu.isCrossProcessWrapper(content)) { - let mm = gBrowser.selectedBrowser.messageManager; + if (!mm) { + throw new Error("`loadFrameScripts()` must be called before attempting to navigate in e10s."); + } mm.sendAsyncMessage("devtools:test:history", { direction: aDirection }); - } else { + } + else { executeSoon(() => content.history[aDirection]()); } return once(aTarget, aWaitForTargetEvent); diff --git a/devtools/client/shared/components/test/browser/browser.ini b/devtools/client/shared/components/test/browser/browser.ini index f28ab0d11e5b..9db9eca668da 100644 --- a/devtools/client/shared/components/test/browser/browser.ini +++ b/devtools/client/shared/components/test/browser/browser.ini @@ -2,6 +2,6 @@ tags = devtools subsuite = devtools support-files = - !/devtools/client/shared/test/shared-head.js + !/devtools/client/framework/test/shared-head.js [browser_notification_box_basic.js] diff --git a/devtools/client/shared/components/test/browser/browser_notification_box_basic.js b/devtools/client/shared/components/test/browser/browser_notification_box_basic.js index 539977a51467..b7c6a669b719 100644 --- a/devtools/client/shared/components/test/browser/browser_notification_box_basic.js +++ b/devtools/client/shared/components/test/browser/browser_notification_box_basic.js @@ -5,10 +5,10 @@ "use strict"; -/* import-globals-from ../../../../shared/test/shared-head.js */ +/* import-globals-from ../../../../framework/test/shared-head.js */ Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", this); + "chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js", this); const TEST_URI = "data:text/html;charset=utf-8,Test page"; diff --git a/devtools/client/shared/test/frame-script-utils.js b/devtools/client/shared/frame-script-utils.js similarity index 100% rename from devtools/client/shared/test/frame-script-utils.js rename to devtools/client/shared/frame-script-utils.js diff --git a/devtools/client/shared/moz.build b/devtools/client/shared/moz.build index ecfac45ccd94..4abf3dd112e5 100644 --- a/devtools/client/shared/moz.build +++ b/devtools/client/shared/moz.build @@ -6,9 +6,6 @@ BROWSER_CHROME_MANIFESTS += ['test/browser.ini'] XPCSHELL_TESTS_MANIFESTS += ['test/unit/xpcshell.ini'] -TEST_HARNESS_FILES.xpcshell.devtools.client.shared.test += [ - 'test/shared-redux-head.js', -] DIRS += [ 'components', diff --git a/devtools/client/shared/test/browser.ini b/devtools/client/shared/test/browser.ini index 7cbcda0dcac3..e61e747427c3 100644 --- a/devtools/client/shared/test/browser.ini +++ b/devtools/client/shared/test/browser.ini @@ -27,16 +27,14 @@ support-files = doc_toolbar_basic.html doc_toolbar_webconsole_errors_count.html dummy.html - frame-script-utils.js head.js helper_color_data.js helper_html_tooltip.js helper_inplace_editor.js leakhunt.js - shared-head.js - shared-redux-head.js test-actor-registry.js test-actor.js + !/devtools/client/framework/test/shared-head.js !/devtools/client/responsive.html/test/browser/devices.json [browser_css_angle.js] diff --git a/devtools/client/shared/test/head.js b/devtools/client/shared/test/head.js index adbc5506e0ac..6435a900ab16 100644 --- a/devtools/client/shared/test/head.js +++ b/devtools/client/shared/test/head.js @@ -2,12 +2,12 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /* eslint no-unused-vars: [2, {"vars": "local", "args": "none"}] */ -/* import-globals-from shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ "use strict"; // shared-head.js handles imports, constants, and utility functions -Services.scriptloader.loadSubScript("chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", this); +Services.scriptloader.loadSubScript("chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js", this); const {DOMHelpers} = ChromeUtils.import("resource://devtools/client/shared/DOMHelpers.jsm", {}); const {Hosts} = require("devtools/client/framework/toolbox-hosts"); diff --git a/devtools/client/shared/webgl-utils.js b/devtools/client/shared/webgl-utils.js index 88195f7c3e23..f7618c3979e2 100644 --- a/devtools/client/shared/webgl-utils.js +++ b/devtools/client/shared/webgl-utils.js @@ -33,7 +33,7 @@ function create3DContext(canvas) { // try to get a valid context from an existing canvas let context = null; try { - context = canvas.getContext(WEBGL_CONTEXT_NAME); + context = canvas.getContext(WEBGL_CONTEXT_NAME, aFlags); } catch (e) { return null; } diff --git a/devtools/client/sourceeditor/test/browser.ini b/devtools/client/sourceeditor/test/browser.ini index 25421e582ce5..cf9ac8b3895c 100644 --- a/devtools/client/sourceeditor/test/browser.ini +++ b/devtools/client/sourceeditor/test/browser.ini @@ -24,7 +24,7 @@ support-files = helper_codemirror_runner.js cm_mode_ruby.js cm_script_injection_test.js - !/devtools/client/shared/test/shared-head.js + !/devtools/client/framework/test/shared-head.js [browser_editor_autocomplete_basic.js] [browser_editor_autocomplete_events.js] diff --git a/devtools/client/sourceeditor/test/head.js b/devtools/client/sourceeditor/test/head.js index 3f8cdfaa4ab2..d9b9c3da89fa 100644 --- a/devtools/client/sourceeditor/test/head.js +++ b/devtools/client/sourceeditor/test/head.js @@ -1,7 +1,7 @@ /* vim: set ts=2 et sw=2 tw=80: */ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ /* exported promiseWaitForFocus, setup, ch, teardown, loadHelperScript, limit, ch, read, codemirrorSetStatus */ @@ -9,7 +9,7 @@ // shared-head.js handles imports, constants, and utility functions Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", + "chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js", this); const { NetUtil } = require("resource://gre/modules/NetUtil.jsm"); diff --git a/devtools/client/storage/test/browser.ini b/devtools/client/storage/test/browser.ini index 582490788c55..5a0c11762237 100644 --- a/devtools/client/storage/test/browser.ini +++ b/devtools/client/storage/test/browser.ini @@ -22,7 +22,7 @@ support-files = storage-unsecured-iframe-usercontextid.html storage-updates.html head.js - !/devtools/client/shared/test/shared-head.js + !/devtools/client/framework/test/shared-head.js [browser_storage_basic.js] [browser_storage_basic_usercontextid_1.js] diff --git a/devtools/client/storage/test/browser_storage_cache_delete.js b/devtools/client/storage/test/browser_storage_cache_delete.js index fe99d28bcdd3..f87aa66e8113 100644 --- a/devtools/client/storage/test/browser_storage_cache_delete.js +++ b/devtools/client/storage/test/browser_storage_cache_delete.js @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ "use strict"; diff --git a/devtools/client/storage/test/browser_storage_cookies_delete_all.js b/devtools/client/storage/test/browser_storage_cookies_delete_all.js index b8c0418f895d..8afd12b5e961 100644 --- a/devtools/client/storage/test/browser_storage_cookies_delete_all.js +++ b/devtools/client/storage/test/browser_storage_cookies_delete_all.js @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ "use strict"; diff --git a/devtools/client/storage/test/browser_storage_cookies_domain.js b/devtools/client/storage/test/browser_storage_cookies_domain.js index e78756471249..06f0a464d9c0 100644 --- a/devtools/client/storage/test/browser_storage_cookies_domain.js +++ b/devtools/client/storage/test/browser_storage_cookies_domain.js @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ "use strict"; diff --git a/devtools/client/storage/test/browser_storage_cookies_domain_port.js b/devtools/client/storage/test/browser_storage_cookies_domain_port.js index 55fcb571894c..a5bc2e5beedc 100644 --- a/devtools/client/storage/test/browser_storage_cookies_domain_port.js +++ b/devtools/client/storage/test/browser_storage_cookies_domain_port.js @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ "use strict"; diff --git a/devtools/client/storage/test/browser_storage_cookies_samesite.js b/devtools/client/storage/test/browser_storage_cookies_samesite.js index bde7be1607f5..c7a30d41457b 100644 --- a/devtools/client/storage/test/browser_storage_cookies_samesite.js +++ b/devtools/client/storage/test/browser_storage_cookies_samesite.js @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ "use strict"; diff --git a/devtools/client/storage/test/browser_storage_delete.js b/devtools/client/storage/test/browser_storage_delete.js index f154c6a6827c..7596ca5dc096 100644 --- a/devtools/client/storage/test/browser_storage_delete.js +++ b/devtools/client/storage/test/browser_storage_delete.js @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ "use strict"; diff --git a/devtools/client/storage/test/browser_storage_delete_all.js b/devtools/client/storage/test/browser_storage_delete_all.js index 9fd6b3f01fa2..3d289cfa0f56 100644 --- a/devtools/client/storage/test/browser_storage_delete_all.js +++ b/devtools/client/storage/test/browser_storage_delete_all.js @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ "use strict"; diff --git a/devtools/client/storage/test/browser_storage_delete_tree.js b/devtools/client/storage/test/browser_storage_delete_tree.js index 32fd410a0d84..6705dba8a426 100644 --- a/devtools/client/storage/test/browser_storage_delete_tree.js +++ b/devtools/client/storage/test/browser_storage_delete_tree.js @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ "use strict"; diff --git a/devtools/client/storage/test/browser_storage_delete_usercontextid.js b/devtools/client/storage/test/browser_storage_delete_usercontextid.js index c9b84771b51d..b2d05d7b49dc 100644 --- a/devtools/client/storage/test/browser_storage_delete_usercontextid.js +++ b/devtools/client/storage/test/browser_storage_delete_usercontextid.js @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ "use strict"; diff --git a/devtools/client/storage/test/browser_storage_dom_cache_disabled.js b/devtools/client/storage/test/browser_storage_dom_cache_disabled.js index 27f9971a3f02..db0aca392cad 100644 --- a/devtools/client/storage/test/browser_storage_dom_cache_disabled.js +++ b/devtools/client/storage/test/browser_storage_dom_cache_disabled.js @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ "use strict"; diff --git a/devtools/client/storage/test/browser_storage_indexeddb_delete.js b/devtools/client/storage/test/browser_storage_indexeddb_delete.js index b4f5db7ed63e..5c499c9e9a37 100644 --- a/devtools/client/storage/test/browser_storage_indexeddb_delete.js +++ b/devtools/client/storage/test/browser_storage_indexeddb_delete.js @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ "use strict"; diff --git a/devtools/client/storage/test/browser_storage_indexeddb_delete_blocked.js b/devtools/client/storage/test/browser_storage_indexeddb_delete_blocked.js index b4c42bf288d0..2d77896f3222 100644 --- a/devtools/client/storage/test/browser_storage_indexeddb_delete_blocked.js +++ b/devtools/client/storage/test/browser_storage_indexeddb_delete_blocked.js @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ "use strict"; diff --git a/devtools/client/storage/test/head.js b/devtools/client/storage/test/head.js index 5d51c855c09b..f4028fd4e606 100644 --- a/devtools/client/storage/test/head.js +++ b/devtools/client/storage/test/head.js @@ -5,11 +5,11 @@ "use strict"; /* eslint no-unused-vars: [2, {"vars": "local"}] */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ // shared-head.js handles imports, constants, and utility functions Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", + "chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js", this); const {TableWidget} = require("devtools/client/shared/widgets/TableWidget"); diff --git a/devtools/client/styleeditor/test/browser.ini b/devtools/client/styleeditor/test/browser.ini index b05ab2acd5b6..d0c003ac8c80 100644 --- a/devtools/client/styleeditor/test/browser.ini +++ b/devtools/client/styleeditor/test/browser.ini @@ -62,11 +62,11 @@ support-files = sync.html utf-16.css !/devtools/client/commandline/test/helpers.js + !/devtools/client/framework/test/shared-head.js !/devtools/client/inspector/shared/test/head.js !/devtools/client/inspector/test/head.js !/devtools/client/inspector/test/shared-head.js !/devtools/client/responsive.html/test/browser/devices.json - !/devtools/client/shared/test/shared-head.js !/devtools/client/shared/test/test-actor-registry.js !/devtools/client/shared/test/test-actor.js diff --git a/devtools/client/webaudioeditor/test/browser.ini b/devtools/client/webaudioeditor/test/browser.ini index dc7b25b8280a..7a45887e8671 100644 --- a/devtools/client/webaudioeditor/test/browser.ini +++ b/devtools/client/webaudioeditor/test/browser.ini @@ -18,8 +18,6 @@ support-files = doc_bug_1141261.html 440hz_sine.ogg head.js - !/devtools/client/shared/test/frame-script-utils.js - !/devtools/client/shared/test/shared-head.js [browser_audionode-actor-get-param-flags.js] [browser_audionode-actor-get-params-01.js] diff --git a/devtools/client/webaudioeditor/test/browser_audionode-actor-get-params-01.js b/devtools/client/webaudioeditor/test/browser_audionode-actor-get-params-01.js index e0d26dd9dbe0..6cfabbe85bf8 100644 --- a/devtools/client/webaudioeditor/test/browser_audionode-actor-get-params-01.js +++ b/devtools/client/webaudioeditor/test/browser_audionode-actor-get-params-01.js @@ -12,7 +12,7 @@ add_task(function* () { getN(front, "create-node", 15) ]); - yield loadFrameScriptUtils(); + yield loadFrameScripts(); let allNodeParams = yield Promise.all(nodes.map(node => node.getParams())); let nodeTypes = [ diff --git a/devtools/client/webaudioeditor/test/browser_audionode-actor-get-params-02.js b/devtools/client/webaudioeditor/test/browser_audionode-actor-get-params-02.js index ac9c95dc02ae..8d60a5e4d650 100644 --- a/devtools/client/webaudioeditor/test/browser_audionode-actor-get-params-02.js +++ b/devtools/client/webaudioeditor/test/browser_audionode-actor-get-params-02.js @@ -13,7 +13,7 @@ add_task(function* () { getN(front, "create-node", 15) ]); - yield loadFrameScriptUtils(); + yield loadFrameScripts(); let allParams = yield Promise.all(nodes.map(node => node.getParams())); let types = [ diff --git a/devtools/client/webaudioeditor/test/browser_callwatcher-02.js b/devtools/client/webaudioeditor/test/browser_callwatcher-02.js index c65ad7f7c8a7..f901efdcb666 100644 --- a/devtools/client/webaudioeditor/test/browser_callwatcher-02.js +++ b/devtools/client/webaudioeditor/test/browser_callwatcher-02.js @@ -14,7 +14,7 @@ add_task(function* () { let { panelWin } = panel; let { gFront, $, $$, EVENTS, gAudioNodes } = panelWin; - loadFrameScriptUtils(); + loadFrameScripts(); let rendered = waitForGraphRendered(panelWin, 2, 0); reload(target); diff --git a/devtools/client/webaudioeditor/test/browser_wa_properties-view-media-nodes.js b/devtools/client/webaudioeditor/test/browser_wa_properties-view-media-nodes.js index 959fb9535843..2a4e09274cf5 100644 --- a/devtools/client/webaudioeditor/test/browser_wa_properties-view-media-nodes.js +++ b/devtools/client/webaudioeditor/test/browser_wa_properties-view-media-nodes.js @@ -42,7 +42,7 @@ add_task(function* () { let mediaPermissionPref = Services.prefs.getBoolPref(MEDIA_PERMISSION); Services.prefs.setBoolPref(MEDIA_PERMISSION, true); - yield loadFrameScriptUtils(); + yield loadFrameScripts(); let events = Promise.all([ getN(gFront, "create-node", 4), diff --git a/devtools/client/webaudioeditor/test/browser_wa_properties-view-params.js b/devtools/client/webaudioeditor/test/browser_wa_properties-view-params.js index 5881c6d4be48..31319e8c5d9d 100644 --- a/devtools/client/webaudioeditor/test/browser_wa_properties-view-params.js +++ b/devtools/client/webaudioeditor/test/browser_wa_properties-view-params.js @@ -14,7 +14,7 @@ add_task(function* () { let started = once(gFront, "start-context"); - yield loadFrameScriptUtils(); + yield loadFrameScripts(); let events = Promise.all([ getN(gFront, "create-node", 15), diff --git a/devtools/client/webaudioeditor/test/head.js b/devtools/client/webaudioeditor/test/head.js index a60a3152e7e3..47db8e25230c 100644 --- a/devtools/client/webaudioeditor/test/head.js +++ b/devtools/client/webaudioeditor/test/head.js @@ -1,22 +1,41 @@ /* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ - -/* eslint no-unused-vars: [2, {"vars": "local"}] */ -/* import-globals-from ../../shared/test/shared-head.js */ - "use strict"; -// Load the shared-head file first. -Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", - this); +// There are shutdown issues for which multiple rejections are left uncaught. +// This bug should be fixed, but for the moment devtools are whitelisted. +// +// NOTE: Entire directory whitelisting should be kept to a minimum. Normally you +// should use "expectUncaughtRejection" to flag individual failures. +const { PromiseTestUtils } = ChromeUtils.import("resource://testing-common/PromiseTestUtils.jsm", {}); +PromiseTestUtils.whitelistRejectionsGlobally(/Component not initialized/); +PromiseTestUtils.whitelistRejectionsGlobally(/Connection closed/); +PromiseTestUtils.whitelistRejectionsGlobally(/destroy/); +PromiseTestUtils.whitelistRejectionsGlobally(/File closed/); +PromiseTestUtils.whitelistRejectionsGlobally(/is no longer, usable/); +PromiseTestUtils.whitelistRejectionsGlobally(/NS_ERROR_FAILURE/); +PromiseTestUtils.whitelistRejectionsGlobally(/this\._urls is null/); +PromiseTestUtils.whitelistRejectionsGlobally(/this\.tabTarget is null/); +PromiseTestUtils.whitelistRejectionsGlobally(/this\.toolbox is null/); +PromiseTestUtils.whitelistRejectionsGlobally(/this\.webConsoleClient is null/); +PromiseTestUtils.whitelistRejectionsGlobally(/this\.worker is null/); +var { require } = ChromeUtils.import("resource://devtools/shared/Loader.jsm", {}); +var { Task } = require("devtools/shared/task"); +var Services = require("Services"); +var { gDevTools } = require("devtools/client/framework/devtools"); +var { TargetFactory } = require("devtools/client/framework/target"); var { DebuggerServer } = require("devtools/server/main"); var { generateUUID } = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator); +var Services = require("Services"); var { WebAudioFront } = require("devtools/shared/fronts/webaudio"); +var DevToolsUtils = require("devtools/shared/DevToolsUtils"); +var flags = require("devtools/shared/flags"); var audioNodes = require("devtools/server/actors/utils/audionodes.json"); +var mm = null; +const FRAME_SCRIPT_UTILS_URL = "chrome://devtools/content/shared/frame-script-utils.js"; const EXAMPLE_URL = "http://example.com/browser/devtools/client/webaudioeditor/test/"; const SIMPLE_CONTEXT_URL = EXAMPLE_URL + "doc_simple-context.html"; const COMPLEX_CONTEXT_URL = EXAMPLE_URL + "doc_complex-context.html"; @@ -34,14 +53,86 @@ const AUTOMATION_URL = EXAMPLE_URL + "doc_automation.html"; var gEnableLogging = Services.prefs.getBoolPref("devtools.debugger.log"); Services.prefs.setBoolPref("devtools.debugger.log", false); +// All tests are asynchronous. +waitForExplicitFinish(); + var gToolEnabled = Services.prefs.getBoolPref("devtools.webaudioeditor.enabled"); +flags.testing = true; + registerCleanupFunction(() => { + flags.testing = false; + info("finish() was called, cleaning up..."); Services.prefs.setBoolPref("devtools.debugger.log", gEnableLogging); Services.prefs.setBoolPref("devtools.webaudioeditor.enabled", gToolEnabled); Cu.forceGC(); }); +/** + * Call manually in tests that use frame script utils after initializing + * the web audio editor. Call after init but before navigating to a different page. + */ +function loadFrameScripts() { + mm = gBrowser.selectedBrowser.messageManager; + mm.loadFrameScript(FRAME_SCRIPT_UTILS_URL, false); +} + +function addTab(aUrl, aWindow) { + info("Adding tab: " + aUrl); + + let targetWindow = aWindow || window; + let targetBrowser = targetWindow.gBrowser; + + targetWindow.focus(); + let tab = targetBrowser.selectedTab = targetBrowser.addTab(aUrl); + let linkedBrowser = tab.linkedBrowser; + + return new Promise((resolve, reject) => { + BrowserTestUtils.browserLoaded(linkedBrowser).then(function () { + info("Tab added and finished loading: " + aUrl); + resolve(tab); + }); + }); +} + +function removeTab(aTab, aWindow) { + info("Removing tab."); + + let targetWindow = aWindow || window; + let targetBrowser = targetWindow.gBrowser; + let tabContainer = targetBrowser.tabContainer; + + return new Promise((resolve, reject) => { + tabContainer.addEventListener("TabClose", function (aEvent) { + info("Tab removed and finished closing."); + resolve(); + }, {once: true}); + + targetBrowser.removeTab(aTab); + }); +} + +function once(aTarget, aEventName, aUseCapture = false) { + info("Waiting for event: '" + aEventName + "' on " + aTarget + "."); + + return new Promise((resolve, reject) => { + for (let [add, remove] of [ + ["on", "off"], // Use event emitter before DOM events for consistency + ["addEventListener", "removeEventListener"], + ["addListener", "removeListener"] + ]) { + if ((add in aTarget) && (remove in aTarget)) { + aTarget[add](aEventName, function onEvent(...aArgs) { + aTarget[remove](aEventName, onEvent, aUseCapture); + info("Got event: '" + aEventName + "' on " + aTarget + "."); + resolve(...aArgs); + }, aUseCapture); + break; + } + } + }); +} + function reload(aTarget, aWaitForTargetEvent = "navigate") { aTarget.activeTab.reload(); return once(aTarget, aWaitForTargetEvent); @@ -52,6 +143,15 @@ function navigate(aTarget, aUrl, aWaitForTargetEvent = "navigate") { return once(aTarget, aWaitForTargetEvent); } +/** + * Call manually in tests that use frame script utils after initializing + * the shader editor. Call after init but before navigating to different pages. + */ +function loadFrameScripts() { + mm = gBrowser.selectedBrowser.messageManager; + mm.loadFrameScript(FRAME_SCRIPT_UTILS_URL, false); +} + /** * Adds a new tab, and instantiate a WebAudiFront object. * This requires calling removeTab before the test ends. @@ -267,6 +367,16 @@ function isVisible(element) { return !element.getAttribute("hidden"); } +/** + * Used in debugging, returns a promise that resolves in `n` milliseconds. + */ +function wait(n) { + return new Promise((resolve, reject) => { + setTimeout(resolve, n); + info("Waiting " + n / 1000 + " seconds."); + }); +} + /** * Clicks a graph node based on actorID or passing in an element. * Returns a promise that resolves once UI_INSPECTOR_NODE_SET is fired and @@ -377,6 +487,31 @@ function waitForInspectorRender(panelWin, EVENTS) { ]); } +/** + * Takes a string `script` and evaluates it directly in the content + * in potentially a different process. + */ +function evalInDebuggee(script) { + if (!mm) { + throw new Error("`loadFrameScripts()` must be called when using MessageManager."); + } + + return new Promise((resolve, reject) => { + let id = generateUUID().toString(); + mm.sendAsyncMessage("devtools:test:eval", { script: script, id: id }); + mm.addMessageListener("devtools:test:eval:response", handler); + + function handler({ data }) { + if (id !== data.id) { + return; + } + + mm.removeMessageListener("devtools:test:eval:response", handler); + resolve(data.value); + } + }); +} + /** * Takes an AudioNode type and returns it's properties (from audionode.json) * as keys and their default values as keys diff --git a/devtools/client/webconsole/net/test/mochitest/browser.ini b/devtools/client/webconsole/net/test/mochitest/browser.ini index 6c4a424f9950..9414414c6d3a 100644 --- a/devtools/client/webconsole/net/test/mochitest/browser.ini +++ b/devtools/client/webconsole/net/test/mochitest/browser.ini @@ -11,9 +11,8 @@ support-files = test.txt test.xml test.xml^headers^ - !/devtools/client/shared/test/frame-script-utils.js - !/devtools/client/shared/test/shared-head.js !/devtools/client/webconsole/test/head.js + !/devtools/client/framework/test/shared-head.js [browser_net_basic.js] [browser_net_cookies.js] diff --git a/devtools/client/webconsole/net/test/mochitest/head.js b/devtools/client/webconsole/net/test/mochitest/head.js index dd69370fa39c..c9364602993d 100644 --- a/devtools/client/webconsole/net/test/mochitest/head.js +++ b/devtools/client/webconsole/net/test/mochitest/head.js @@ -10,6 +10,9 @@ Services.scriptloader.loadSubScript( "chrome://mochitests/content/browser/devtools/client/webconsole/test/head.js", this); +const FRAME_SCRIPT_UTILS_URL = + "chrome://devtools/content/shared/frame-script-utils.js"; + const NET_INFO_PREF = "devtools.webconsole.filter.networkinfo"; const NET_XHR_PREF = "devtools.webconsole.filter.netxhr"; @@ -40,8 +43,8 @@ function addTestTab(url) { return Task.spawn(function* () { let tab = yield addTab(url); - // Load devtools/shared/test/frame-script-utils.js - loadFrameScriptUtils(tab.linkedBrowser); + // Load devtools/shared/frame-script-utils.js + loadCommonFrameScript(tab); // Open the Console panel let hud = yield openConsole(); @@ -199,3 +202,8 @@ function waitForContentMessage(name) { }); }); } + +function loadCommonFrameScript(tab) { + let browser = tab ? tab.linkedBrowser : gBrowser.selectedBrowser; + browser.messageManager.loadFrameScript(FRAME_SCRIPT_UTILS_URL, false); +} diff --git a/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/browser.ini b/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/browser.ini index c2685be9b453..92638357f517 100644 --- a/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/browser.ini +++ b/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/browser.ini @@ -3,7 +3,7 @@ tags = devtools subsuite = devtools support-files = head.js - !/devtools/client/shared/test/shared-head.js + !/devtools/client/framework/test/shared-head.js ../stubs/* test-console-api.html test-css-message.html diff --git a/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/head.js b/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/head.js index 3a75874285cf..78b6411e238c 100644 --- a/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/head.js +++ b/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/head.js @@ -2,7 +2,7 @@ /* vim: set ft=javascript ts=2 et sw=2 tw=80: */ /* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ -/* import-globals-from ../../../../../shared/test/shared-head.js */ +/* import-globals-from ../../../../../framework/test/shared-head.js */ /* exported generateConsoleApiStubs, generateCssMessageStubs, generateEvaluationResultStubs, generateNetworkEventStubs, generatePageErrorStubs, BASE_PATH */ @@ -11,7 +11,7 @@ // shared-head.js handles imports, constants, and utility functions // Load the shared-head file first. Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", + "chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js", this); Services.prefs.setBoolPref("devtools.webconsole.new-frontend-enabled", true); diff --git a/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini b/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini index 073a8bc03c18..f247aed0670f 100644 --- a/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini +++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini @@ -161,7 +161,7 @@ support-files = testscript.js !/devtools/client/netmonitor/test/sjs_cors-test-server.sjs !/image/test/mochitest/blue.png - !/devtools/client/shared/test/shared-head.js + !/devtools/client/framework/test/shared-head.js !/devtools/client/shared/test/test-actor.js !/devtools/client/shared/test/test-actor-registry.js diff --git a/devtools/client/webconsole/new-console-output/test/mochitest/head.js b/devtools/client/webconsole/new-console-output/test/mochitest/head.js index 124006e58339..621a7557e1ee 100644 --- a/devtools/client/webconsole/new-console-output/test/mochitest/head.js +++ b/devtools/client/webconsole/new-console-output/test/mochitest/head.js @@ -2,7 +2,7 @@ /* vim: set ft=javascript ts=2 et sw=2 tw=80: */ /* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ -/* import-globals-from ../../../../shared/test/shared-head.js */ +/* import-globals-from ../../../../framework/test/shared-head.js */ /* eslint no-unused-vars: [2, {"vars": "local"}] */ "use strict"; @@ -15,7 +15,7 @@ Services.scriptloader.loadSubScript( // shared-head.js handles imports, constants, and utility functions // Load the shared-head file first. Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", + "chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js", this); var {HUDService} = require("devtools/client/webconsole/hudservice"); diff --git a/devtools/client/webconsole/test/browser.ini b/devtools/client/webconsole/test/browser.ini index f55faccd0bee..65d8ca1a702d 100644 --- a/devtools/client/webconsole/test/browser.ini +++ b/devtools/client/webconsole/test/browser.ini @@ -142,8 +142,8 @@ support-files = test_bug1092055_shouldwarn.js test_bug1092055_shouldwarn.html test_bug_1247459_violation.html + !/devtools/client/framework/test/shared-head.js !/devtools/client/netmonitor/test/sjs_cors-test-server.sjs - !/devtools/client/shared/test/shared-head.js !/image/test/mochitest/blue.png [browser_bug1045902_console_csp_ignore_reflected_xss_message.js] diff --git a/devtools/client/webconsole/test/head.js b/devtools/client/webconsole/test/head.js index 36f265a9bf90..28401f4b9d13 100644 --- a/devtools/client/webconsole/test/head.js +++ b/devtools/client/webconsole/test/head.js @@ -3,11 +3,11 @@ /* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ -/* import-globals-from ../../shared/test/shared-head.js */ +/* import-globals-from ../../framework/test/shared-head.js */ "use strict"; // shared-head.js handles imports, constants, and utility functions -Services.scriptloader.loadSubScript("chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", this); +Services.scriptloader.loadSubScript("chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js", this); var {Utils: WebConsoleUtils} = require("devtools/client/webconsole/utils"); var {Messages} = require("devtools/client/webconsole/console-output"); diff --git a/devtools/docs/tests/writing-tests.md b/devtools/docs/tests/writing-tests.md index 96408e9ebcca..e095cacb586b 100644 --- a/devtools/docs/tests/writing-tests.md +++ b/devtools/docs/tests/writing-tests.md @@ -107,7 +107,7 @@ For example, the head.js files in the `markupview` and `styleinspector` test fol ## Shared head.js file -A [shared-head.js](https://dxr.mozilla.org/mozilla-central/source/devtools/client/shared/test/shared-head.js) file has been introduced to avoid duplicating code in various `head.js` files. +A [shared-head.js](https://dxr.mozilla.org/mozilla-central/source/devtools/client/framework/test/shared-head.js) file has been introduced to avoid duplicating code in various `head.js` files. It's important to know whether or not the `shared.js` in your test directory already imports `shared-head.js` (look for a Services.scriptloader.loadSubScript call), as common helpers in `shared-head.js` might be useful for your test. @@ -241,7 +241,7 @@ When tests fail, it's far better to have them fail and end immediately with an e In some cases, you may want to extract some common code from your test to use it another another test. -* If this is very common code that all tests could use, then add it to `devtools/client/shared/test/shared-head.js`. +* If this is very common code that all tests could use, then add it to `devtools/client/framework/test/shared-head.js`. * If this is common code specific to a given tool, then add it to the corresponding `head.js` file. * If it isn't common enough to live in `head.js`, then it may be a good idea to create a helper file to avoid duplication anyway. Here's how to create a helper file: * Create a new file in your test director. The naming convention should be `helper_.js` diff --git a/devtools/server/tests/browser/browser.ini b/devtools/server/tests/browser/browser.ini index 2c905d6f437e..03c68eee699d 100644 --- a/devtools/server/tests/browser/browser.ini +++ b/devtools/server/tests/browser/browser.ini @@ -24,8 +24,8 @@ support-files = timeline-iframe-child.html timeline-iframe-parent.html storage-helpers.js - !/devtools/client/shared/test/shared-head.js !/devtools/server/tests/mochitest/hello-actor.js + !/devtools/client/framework/test/shared-head.js [browser_accessibility_node_events.js] [browser_accessibility_node.js] diff --git a/devtools/server/tests/browser/head.js b/devtools/server/tests/browser/head.js index d8c8448f1dca..51e0ffa4d9fb 100644 --- a/devtools/server/tests/browser/head.js +++ b/devtools/server/tests/browser/head.js @@ -5,10 +5,10 @@ "use strict"; /* eslint no-unused-vars: [2, {"vars": "local"}] */ -/* import-globals-from ../../../client/shared/test/shared-head.js */ +/* import-globals-from ../../../client/framework/test/shared-head.js */ Services.scriptloader.loadSubScript( - "chrome://mochitests/content/browser/devtools/client/shared/test/shared-head.js", + "chrome://mochitests/content/browser/devtools/client/framework/test/shared-head.js", this); const {DebuggerClient} = require("devtools/shared/client/debugger-client"); From 9d881a9758bf50a8add1132ccb25fd6f3f8021b9 Mon Sep 17 00:00:00 2001 From: Cosmin Sabou Date: Wed, 7 Mar 2018 22:06:12 +0200 Subject: [PATCH 52/65] Backed out changeset 749cab14e557 (bug 1443635) mochitest browser chrome failure at browser_advanced_update.js on a CLOSED TREE --- toolkit/mozapps/update/content/history.js | 4 +--- toolkit/mozapps/update/content/updates.css | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/toolkit/mozapps/update/content/history.js b/toolkit/mozapps/update/content/history.js index dcf6dcb7a6a9..1b32035ff544 100644 --- a/toolkit/mozapps/update/content/history.js +++ b/toolkit/mozapps/update/content/history.js @@ -26,7 +26,6 @@ var gUpdateHistory = { for (var i = 0; i < uc; ++i) { var update = um.getUpdateAt(i); - if (!update || !update.name) continue; @@ -35,8 +34,7 @@ var gUpdateHistory = { if (!update.statusText) continue; - var element = document.createElementNS(NS_XUL, "richlistitem"); - element.className = "update"; + var element = document.createElementNS(NS_XUL, "update"); this._view.appendChild(element); element.name = bundle.getFormattedString("updateFullName", [update.name, update.buildID]); diff --git a/toolkit/mozapps/update/content/updates.css b/toolkit/mozapps/update/content/updates.css index 7930e344aac4..e83c3be03a26 100644 --- a/toolkit/mozapps/update/content/updates.css +++ b/toolkit/mozapps/update/content/updates.css @@ -4,7 +4,7 @@ display: none; } -/* Hide the wizard's header so the size of the billboard can size the window +/* Hide the wizard's header so the size of the billboard can size the window on creation. A custom header will be used in its place when a header is needed. */ .wizard-header { @@ -26,7 +26,7 @@ updateheader { } /* Update History Window */ -richlistitem.update { +update { -moz-binding: url("chrome://mozapps/content/update/updates.xml#update"); display: -moz-box; -moz-box-orient: vertical; From e8d8680af84d8b72a8594ba7ee969735499b45e0 Mon Sep 17 00:00:00 2001 From: Cosmin Sabou Date: Wed, 7 Mar 2018 22:11:06 +0200 Subject: [PATCH 53/65] Backed out 2 changesets (bug 1429213) for mochitest browser chrome failures at browser_show_dialog.js on a CLOSED TREE Backed out changeset 3f419c7dcf2a (bug 1429213) Backed out changeset 752ad36df388 (bug 1429213) --- modules/libpref/init/all.js | 1 - .../payments/content/paymentDialogWrapper.js | 6 --- .../components/payments/paymentUIService.js | 4 -- .../payments/res/containers/payment-dialog.js | 1 - .../components/payments/res/debugging.html | 1 - toolkit/components/payments/res/debugging.js | 6 --- .../payments/res/paymentRequest.css | 1 - .../payments/res/paymentRequest.xhtml | 2 - .../payments/test/browser/browser.ini | 1 - .../test/browser/browser_show_dialog.js | 45 ------------------- .../test/mochitest/test_payment_dialog.html | 1 - 11 files changed, 69 deletions(-) diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index 4e0591fd9b9e..a152e4944e95 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -5965,7 +5965,6 @@ pref("dom.timeout.max_consecutive_callbacks_ms", 4); // Use this preference to house "Payment Request API" during development pref("dom.payments.request.enabled", false); pref("dom.payments.loglevel", "Warn"); -pref("dom.payments.unknownTimeoutMS", 5000); #ifdef FUZZING pref("fuzzing.enabled", false); diff --git a/toolkit/components/payments/content/paymentDialogWrapper.js b/toolkit/components/payments/content/paymentDialogWrapper.js index ec167b8cf0b0..707fa9058def 100644 --- a/toolkit/components/payments/content/paymentDialogWrapper.js +++ b/toolkit/components/payments/content/paymentDialogWrapper.js @@ -411,12 +411,6 @@ var paymentDialogWrapper = { }); paymentSrv.respondPayment(showResponse); this.sendMessageToContent("responseSent"); - - // If the merchant has not called response.complete() within unknownTimeoutMS - // then we will close the dialog, treating it the same as if the merchant - // passed "unknown" to response.complete(). - const timeoutMS = Services.prefs.getIntPref("dom.payments.unknownTimeoutMS"); - window.unknownTimeoutId = window.setTimeout(window.close, timeoutMS); }, async onChangeShippingAddress({shippingAddressGUID}) { diff --git a/toolkit/components/payments/paymentUIService.js b/toolkit/components/payments/paymentUIService.js index ba87e7d86496..e9d57d1f99cb 100644 --- a/toolkit/components/payments/paymentUIService.js +++ b/toolkit/components/payments/paymentUIService.js @@ -69,10 +69,6 @@ PaymentUIService.prototype = { completePayment(requestId) { this.log.debug("completePayment:", requestId); - let dialog = this.findDialog(requestId); - if (dialog && dialog.unknownTimeoutId) { - dialog.clearTimeout(dialog.unknownTimeoutId); - } let closed = this.closeDialog(requestId); let responseCode = closed ? Ci.nsIPaymentActionResponse.COMPLETE_SUCCEEDED : diff --git a/toolkit/components/payments/res/containers/payment-dialog.js b/toolkit/components/payments/res/containers/payment-dialog.js index f537328f74fa..ae24ab45283f 100644 --- a/toolkit/components/payments/res/containers/payment-dialog.js +++ b/toolkit/components/payments/res/containers/payment-dialog.js @@ -157,7 +157,6 @@ class PaymentDialog extends PaymentStateSubscriberMixin(HTMLElement) { case "processing": case "success": case "fail": - case "unknown": break; default: throw new Error("Invalid completionState"); diff --git a/toolkit/components/payments/res/debugging.html b/toolkit/components/payments/res/debugging.html index 753804758a4c..e30ba8c0a78c 100644 --- a/toolkit/components/payments/res/debugging.html +++ b/toolkit/components/payments/res/debugging.html @@ -33,7 +33,6 @@ -
diff --git a/toolkit/components/payments/res/debugging.js b/toolkit/components/payments/res/debugging.js index 413aedc83c8c..b70d6ca65a03 100644 --- a/toolkit/components/payments/res/debugging.js +++ b/toolkit/components/payments/res/debugging.js @@ -305,12 +305,6 @@ let buttonActions = { completionState: "fail", }); }, - - setStateUnknown() { - requestStore.setState({ - completionState: "unknown", - }); - }, }; window.addEventListener("click", function onButtonClick(evt) { diff --git a/toolkit/components/payments/res/paymentRequest.css b/toolkit/components/payments/res/paymentRequest.css index d607499ebfd8..25fe35f59cff 100644 --- a/toolkit/components/payments/res/paymentRequest.css +++ b/toolkit/components/payments/res/paymentRequest.css @@ -83,7 +83,6 @@ payment-dialog > footer { } payment-dialog[changes-prevented][completion-state="fail"] #pay, -payment-dialog[changes-prevented][completion-state="unknown"] #pay, payment-dialog[changes-prevented][completion-state="processing"] #pay, payment-dialog[changes-prevented][completion-state="success"] #pay { /* Show the pay button above #disabled-overlay */ diff --git a/toolkit/components/payments/res/paymentRequest.xhtml b/toolkit/components/payments/res/paymentRequest.xhtml index 99ce00995cdb..ede856fc6c04 100644 --- a/toolkit/components/payments/res/paymentRequest.xhtml +++ b/toolkit/components/payments/res/paymentRequest.xhtml @@ -15,7 +15,6 @@ - ]> @@ -92,7 +91,6 @@ data-initial-label="&approvePaymentButton.label;" data-processing-label="&processingPaymentButton.label;" data-fail-label="&failPaymentButton.label;" - data-unknown-label="&unknownPaymentButton.label;" data-success-label="&successPaymentButton.label;"> diff --git a/toolkit/components/payments/test/browser/browser.ini b/toolkit/components/payments/test/browser/browser.ini index 867c24c9569c..1d19113ed09e 100644 --- a/toolkit/components/payments/test/browser/browser.ini +++ b/toolkit/components/payments/test/browser/browser.ini @@ -2,7 +2,6 @@ head = head.js prefs = dom.payments.request.enabled=true - dom.payments.unknownTimeoutMS=0 skip-if = !e10s # Bug 1365964 - Payment Request isn't implemented for non-e10s support-files = blank_page.html diff --git a/toolkit/components/payments/test/browser/browser_show_dialog.js b/toolkit/components/payments/test/browser/browser_show_dialog.js index 7360365a7ac9..8e3c07309f0d 100644 --- a/toolkit/components/payments/test/browser/browser_show_dialog.js +++ b/toolkit/components/payments/test/browser/browser_show_dialog.js @@ -161,48 +161,3 @@ add_task(async function test_show_completePayment() { await BrowserTestUtils.waitForCondition(() => win.closed, "dialog should be closed"); }); }); - -add_task(async function test_complete_called_dialog_closed() { - await BrowserTestUtils.withNewTab({ - gBrowser, - url: BLANK_PAGE_URL, - }, async browser => { - let {win, frame} = - await setupPaymentDialog(browser, { - methodData, - details, - merchantTaskFn: PTU.ContentTasks.createAndShowRequest, - } - ); - - info("clicking pay"); - spawnPaymentDialogTask(frame, PTU.DialogContentTasks.completePayment); - - // Add a handler to complete the payment above. - info("acknowledging the completion from the merchant page"); - await ContentTask.spawn(browser, {}, PTU.ContentTasks.addCompletionHandler); - - await BrowserTestUtils.waitForCondition(() => win.closed, "dialog should be closed"); - }); -}); - -add_task(async function test_complete_not_called_dialog_autoclosed() { - await BrowserTestUtils.withNewTab({ - gBrowser, - url: BLANK_PAGE_URL, - }, async browser => { - let {win, frame} = - await setupPaymentDialog(browser, { - methodData, - details, - merchantTaskFn: PTU.ContentTasks.createAndShowRequest, - } - ); - - info("clicking pay"); - spawnPaymentDialogTask(frame, PTU.DialogContentTasks.completePayment); - - // Not calling response.complete() should cause the dialog to timeout and autoclose. - await BrowserTestUtils.waitForCondition(() => win.closed, "dialog should be closed"); - }); -}); diff --git a/toolkit/components/payments/test/mochitest/test_payment_dialog.html b/toolkit/components/payments/test/mochitest/test_payment_dialog.html index 986b5b31f404..5101eb397020 100644 --- a/toolkit/components/payments/test/mochitest/test_payment_dialog.html +++ b/toolkit/components/payments/test/mochitest/test_payment_dialog.html @@ -40,7 +40,6 @@ let completionStates = [ ["processing", "Processing"], ["success", "Done"], ["fail", "Fail"], - ["unknown", "Unknown"], ]; /* test that: From f8e4b21bcd7ae8330d52185a2b9de36cbbc2f5a9 Mon Sep 17 00:00:00 2001 From: Cosmin Sabou Date: Wed, 7 Mar 2018 22:18:44 +0200 Subject: [PATCH 54/65] Backed out changeset 349222d58373 (bug 1442800) for frequent wpt failures on a CLOSED TREE --- accessible/base/XULMap.h | 104 ++++++++-------- accessible/base/nsAccessibilityService.cpp | 132 +++++++++++---------- accessible/base/nsAccessibilityService.h | 2 +- 3 files changed, 127 insertions(+), 111 deletions(-) diff --git a/accessible/base/XULMap.h b/accessible/base/XULMap.h index b81584817949..0105d5e3d3ae 100644 --- a/accessible/base/XULMap.h +++ b/accessible/base/XULMap.h @@ -44,10 +44,11 @@ XULMAP_TYPE(tooltip, XULTooltipAccessible) XULMAP( colorpicker, - [](Element* aElement, Accessible* aContext) -> Accessible* { - if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, - nsGkAtoms::button, eIgnoreCase)) { - return new XULColorPickerAccessible(aElement, aContext->Document()); + [](nsIContent* aContent, Accessible* aContext) -> Accessible* { + if (aContent->IsElement() && + aContent->AsElement()->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, + nsGkAtoms::button, eIgnoreCase)) { + return new XULColorPickerAccessible(aContent, aContext->Document()); } return nullptr; } @@ -55,47 +56,52 @@ XULMAP( XULMAP( label, - [](Element* aElement, Accessible* aContext) -> Accessible* { - if (aElement->ClassList()->Contains(NS_LITERAL_STRING("text-link"))) { - return new XULLinkAccessible(aElement, aContext->Document()); + [](nsIContent* aContent, Accessible* aContext) -> Accessible* { + if (aContent->IsElement() && + aContent->AsElement()->ClassList()->Contains(NS_LITERAL_STRING("text-link"))) { + return new XULLinkAccessible(aContent, aContext->Document()); } - return new XULLabelAccessible(aElement, aContext->Document()); + return new XULLabelAccessible(aContent, aContext->Document()); } ) XULMAP( image, - [](Element* aElement, Accessible* aContext) -> Accessible* { - if (aElement->HasAttr(kNameSpaceID_None, nsGkAtoms::onclick)) { - return new XULToolbarButtonAccessible(aElement, aContext->Document()); - } - - if (aElement->ClassList()->Contains(NS_LITERAL_STRING("colorpickertile"))) { - return new XULColorPickerTileAccessible(aElement, aContext->Document()); - } - - // Don't include nameless images in accessible tree. - if (!aElement->HasAttr(kNameSpaceID_None, nsGkAtoms::tooltiptext)) { + [](nsIContent* aContent, Accessible* aContext) -> Accessible* { + if (!aContent->IsElement()) { return nullptr; } - return new ImageAccessibleWrap(aElement, aContext->Document()); + if (aContent->AsElement()->HasAttr(kNameSpaceID_None, nsGkAtoms::onclick)) { + return new XULToolbarButtonAccessible(aContent, aContext->Document()); + } + + if (aContent->AsElement()->ClassList()->Contains(NS_LITERAL_STRING("colorpickertile"))) { + return new XULColorPickerTileAccessible(aContent, aContext->Document()); + } + + // Don't include nameless images in accessible tree. + if (!aContent->AsElement()->HasAttr(kNameSpaceID_None, nsGkAtoms::tooltiptext)) { + return nullptr; + } + + return new ImageAccessibleWrap(aContent, aContext->Document()); } ) XULMAP( listcell, - [](Element* aElement, Accessible* aContext) -> Accessible* { + [](nsIContent* aContent, Accessible* aContext) -> Accessible* { // Only create cells if there's more than one per row. - nsIContent* listItem = aElement->GetParent(); + nsIContent* listItem = aContent->GetParent(); if (!listItem) { return nullptr; } for (nsIContent* child = listItem->GetFirstChild(); child; child = child->GetNextSibling()) { - if (child->IsXULElement(nsGkAtoms::listcell) && child != aElement) { - return new XULListCellAccessibleWrap(aElement, aContext->Document()); + if (child->IsXULElement(nsGkAtoms::listcell) && child != aContent) { + return new XULListCellAccessibleWrap(aContent, aContext->Document()); } } @@ -105,55 +111,59 @@ XULMAP( XULMAP( menupopup, - [](Element* aElement, Accessible* aContext) { - return CreateMenupopupAccessible(aElement, aContext); + [](nsIContent* aContent, Accessible* aContext) { + return CreateMenupopupAccessible(aContent, aContext); } ) XULMAP( panel, - [](Element* aElement, Accessible* aContext) -> Accessible* { + [](nsIContent* aContent, Accessible* aContext) -> Accessible* { static const Element::AttrValuesArray sIgnoreTypeVals[] = { &nsGkAtoms::autocomplete_richlistbox, &nsGkAtoms::autocomplete, nullptr }; - if (aElement->FindAttrValueIn(kNameSpaceID_None, nsGkAtoms::type, - sIgnoreTypeVals, eIgnoreCase) >= 0) { + if (!aContent->IsElement() || + aContent->AsElement()->FindAttrValueIn(kNameSpaceID_None, nsGkAtoms::type, + sIgnoreTypeVals, eIgnoreCase) >= 0) { return nullptr; } - if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::noautofocus, - nsGkAtoms::_true, eCaseMatters)) { - return new XULAlertAccessible(aElement, aContext->Document()); + if (aContent->AsElement()->AttrValueIs(kNameSpaceID_None, + nsGkAtoms::noautofocus, + nsGkAtoms::_true, eCaseMatters)) { + return new XULAlertAccessible(aContent, aContext->Document()); } - return new EnumRoleAccessible(aElement, aContext->Document()); + return new EnumRoleAccessible(aContent, aContext->Document()); } ) XULMAP( popup, - [](Element* aElement, Accessible* aContext) { - return CreateMenupopupAccessible(aElement, aContext); + [](nsIContent* aContent, Accessible* aContext) { + return CreateMenupopupAccessible(aContent, aContext); } ) XULMAP( textbox, - [](Element* aElement, Accessible* aContext) -> Accessible* { - if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, - nsGkAtoms::autocomplete, eIgnoreCase)) { - return new XULComboboxAccessible(aElement, aContext->Document()); + [](nsIContent* aContent, Accessible* aContext) -> Accessible* { + if (aContent->IsElement() && + aContent->AsElement()->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, + nsGkAtoms::autocomplete, eIgnoreCase)) { + return new XULComboboxAccessible(aContent, aContext->Document()); } - return new EnumRoleAccessible(aElement, aContext->Document()); + return new EnumRoleAccessible(aContent, aContext->Document()); } ) XULMAP( thumb, - [](Element* aElement, Accessible* aContext) -> Accessible* { - if (aElement->ClassList()->Contains(NS_LITERAL_STRING("scale-thumb"))) { - return new XULThumbAccessible(aElement, aContext->Document()); + [](nsIContent* aContent, Accessible* aContext) -> Accessible* { + if (aContent->IsElement() && + aContent->AsElement()->ClassList()->Contains(NS_LITERAL_STRING("scale-thumb"))) { + return new XULThumbAccessible(aContent, aContext->Document()); } return nullptr; } @@ -161,8 +171,8 @@ XULMAP( XULMAP( tree, - [](Element* aElement, Accessible* aContext) -> Accessible* { - nsIContent* child = nsTreeUtils::GetDescendantChild(aElement, + [](nsIContent* aContent, Accessible* aContext) -> Accessible* { + nsIContent* child = nsTreeUtils::GetDescendantChild(aContent, nsGkAtoms::treechildren); if (!child) return nullptr; @@ -177,10 +187,10 @@ XULMAP( // Outline of list accessible. if (count == 1) { - return new XULTreeAccessible(aElement, aContext->Document(), treeFrame); + return new XULTreeAccessible(aContent, aContext->Document(), treeFrame); } // Table or tree table accessible. - return new XULTreeGridAccessibleWrap(aElement, aContext->Document(), treeFrame); + return new XULTreeGridAccessibleWrap(aContent, aContext->Document(), treeFrame); } ) diff --git a/accessible/base/nsAccessibilityService.cpp b/accessible/base/nsAccessibilityService.cpp index 2142e414447d..e40a1df372f1 100644 --- a/accessible/base/nsAccessibilityService.cpp +++ b/accessible/base/nsAccessibilityService.cpp @@ -149,7 +149,7 @@ MustBeAccessible(nsIContent* aContent, DocAccessible* aDocument) */ #ifdef MOZ_XUL Accessible* -CreateMenupopupAccessible(Element* aElement, Accessible* aContext) +CreateMenupopupAccessible(nsIContent* aContent, Accessible* aContext) { #ifdef MOZ_ACCESSIBILITY_ATK // ATK considers this node to be redundant when within menubars, and it makes menu @@ -157,12 +157,12 @@ CreateMenupopupAccessible(Element* aElement, Accessible* aContext) // XXX In the future we will should this for consistency across the nsIAccessible // implementations on each platform for a consistent scripting environment, but // then strip out redundant accessibles in the AccessibleWrap class for each platform. - nsIContent *parent = aElement->GetParent(); + nsIContent *parent = aContent->GetParent(); if (parent && parent->IsXULElement(nsGkAtoms::menu)) return nullptr; #endif - return new XULMenupopupAccessible(aElement, aContext->Document()); + return new XULMenupopupAccessible(aContent, aContext->Document()); } #endif @@ -170,122 +170,128 @@ CreateMenupopupAccessible(Element* aElement, Accessible* aContext) // Accessible constructors static Accessible* -New_HTMLLink(Element* aElement, Accessible* aContext) +New_HTMLLink(nsIContent* aContent, Accessible* aContext) { // Only some roles truly enjoy life as HTMLLinkAccessibles, for details // see closed bug 494807. - const nsRoleMapEntry* roleMapEntry = aria::GetRoleMap(aElement); + const nsRoleMapEntry* roleMapEntry = aria::GetRoleMap(aContent->AsElement()); if (roleMapEntry && roleMapEntry->role != roles::NOTHING && roleMapEntry->role != roles::LINK) { - return new HyperTextAccessibleWrap(aElement, aContext->Document()); + return new HyperTextAccessibleWrap(aContent, aContext->Document()); } - return new HTMLLinkAccessible(aElement, aContext->Document()); + return new HTMLLinkAccessible(aContent, aContext->Document()); } -static Accessible* New_HyperText(Element* aElement, Accessible* aContext) - { return new HyperTextAccessibleWrap(aElement, aContext->Document()); } +static Accessible* New_HyperText(nsIContent* aContent, Accessible* aContext) + { return new HyperTextAccessibleWrap(aContent, aContext->Document()); } -static Accessible* New_HTMLFigcaption(Element* aElement, Accessible* aContext) - { return new HTMLFigcaptionAccessible(aElement, aContext->Document()); } +static Accessible* New_HTMLFigcaption(nsIContent* aContent, Accessible* aContext) + { return new HTMLFigcaptionAccessible(aContent, aContext->Document()); } -static Accessible* New_HTMLFigure(Element* aElement, Accessible* aContext) - { return new HTMLFigureAccessible(aElement, aContext->Document()); } +static Accessible* New_HTMLFigure(nsIContent* aContent, Accessible* aContext) + { return new HTMLFigureAccessible(aContent, aContext->Document()); } -static Accessible* New_HTMLHeaderOrFooter(Element* aElement, Accessible* aContext) - { return new HTMLHeaderOrFooterAccessible(aElement, aContext->Document()); } +static Accessible* New_HTMLHeaderOrFooter(nsIContent* aContent, Accessible* aContext) + { return new HTMLHeaderOrFooterAccessible(aContent, aContext->Document()); } -static Accessible* New_HTMLLegend(Element* aElement, Accessible* aContext) - { return new HTMLLegendAccessible(aElement, aContext->Document()); } +static Accessible* New_HTMLLegend(nsIContent* aContent, Accessible* aContext) + { return new HTMLLegendAccessible(aContent, aContext->Document()); } -static Accessible* New_HTMLOption(Element* aElement, Accessible* aContext) - { return new HTMLSelectOptionAccessible(aElement, aContext->Document()); } +static Accessible* New_HTMLOption(nsIContent* aContent, Accessible* aContext) + { return new HTMLSelectOptionAccessible(aContent, aContext->Document()); } -static Accessible* New_HTMLOptgroup(Element* aElement, Accessible* aContext) - { return new HTMLSelectOptGroupAccessible(aElement, aContext->Document()); } +static Accessible* New_HTMLOptgroup(nsIContent* aContent, Accessible* aContext) + { return new HTMLSelectOptGroupAccessible(aContent, aContext->Document()); } -static Accessible* New_HTMLList(Element* aElement, Accessible* aContext) - { return new HTMLListAccessible(aElement, aContext->Document()); } +static Accessible* New_HTMLList(nsIContent* aContent, Accessible* aContext) + { return new HTMLListAccessible(aContent, aContext->Document()); } static Accessible* -New_HTMLListitem(Element* aElement, Accessible* aContext) +New_HTMLListitem(nsIContent* aContent, Accessible* aContext) { // If list item is a child of accessible list then create an accessible for // it unconditionally by tag name. nsBlockFrame creates the list item // accessible for other elements styled as list items. - if (aContext->IsList() && aContext->GetContent() == aElement->GetParent()) - return new HTMLLIAccessible(aElement, aContext->Document()); + if (aContext->IsList() && aContext->GetContent() == aContent->GetParent()) + return new HTMLLIAccessible(aContent, aContext->Document()); return nullptr; } static Accessible* -New_HTMLDefinition(Element* aElement, Accessible* aContext) +New_HTMLDefinition(nsIContent* aContent, Accessible* aContext) { if (aContext->IsList()) - return new HyperTextAccessibleWrap(aElement, aContext->Document()); + return new HyperTextAccessibleWrap(aContent, aContext->Document()); return nullptr; } -static Accessible* New_HTMLLabel(Element* aElement, Accessible* aContext) - { return new HTMLLabelAccessible(aElement, aContext->Document()); } +static Accessible* New_HTMLLabel(nsIContent* aContent, Accessible* aContext) + { return new HTMLLabelAccessible(aContent, aContext->Document()); } -static Accessible* New_HTMLInput(Element* aElement, Accessible* aContext) +static Accessible* New_HTMLInput(nsIContent* aContent, Accessible* aContext) { - if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, + if (!aContent->IsElement()) { + return nullptr; + } + + Element* element = aContent->AsElement(); + if (element->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, nsGkAtoms::checkbox, eIgnoreCase)) { - return new HTMLCheckboxAccessible(aElement, aContext->Document()); + return new HTMLCheckboxAccessible(aContent, aContext->Document()); } - if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, + if (element->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, nsGkAtoms::radio, eIgnoreCase)) { - return new HTMLRadioButtonAccessible(aElement, aContext->Document()); + return new HTMLRadioButtonAccessible(aContent, aContext->Document()); } - if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, + if (element->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, nsGkAtoms::time, eIgnoreCase)) { - return new EnumRoleAccessible(aElement, aContext->Document()); + return new EnumRoleAccessible(aContent, aContext->Document()); } - if (aElement->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, + if (element->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type, nsGkAtoms::date, eIgnoreCase)) { - return new EnumRoleAccessible(aElement, aContext->Document()); + return new EnumRoleAccessible(aContent, aContext->Document()); } return nullptr; } -static Accessible* New_HTMLOutput(Element* aElement, Accessible* aContext) - { return new HTMLOutputAccessible(aElement, aContext->Document()); } +static Accessible* New_HTMLOutput(nsIContent* aContent, Accessible* aContext) + { return new HTMLOutputAccessible(aContent, aContext->Document()); } -static Accessible* New_HTMLProgress(Element* aElement, Accessible* aContext) - { return new HTMLProgressMeterAccessible(aElement, aContext->Document()); } +static Accessible* New_HTMLProgress(nsIContent* aContent, Accessible* aContext) + { return new HTMLProgressMeterAccessible(aContent, aContext->Document()); } -static Accessible* New_HTMLSummary(Element* aElement, Accessible* aContext) - { return new HTMLSummaryAccessible(aElement, aContext->Document()); } +static Accessible* New_HTMLSummary(nsIContent* aContent, Accessible* aContext) + { return new HTMLSummaryAccessible(aContent, aContext->Document()); } static Accessible* -New_HTMLTableAccessible(Element* aElement, Accessible* aContext) - { return new HTMLTableAccessible(aElement, aContext->Document()); } +New_HTMLTableAccessible(nsIContent* aContent, Accessible* aContext) + { return new HTMLTableAccessible(aContent, aContext->Document()); } static Accessible* -New_HTMLTableRowAccessible(Element* aElement, Accessible* aContext) - { return new HTMLTableRowAccessible(aElement, aContext->Document()); } +New_HTMLTableRowAccessible(nsIContent* aContent, Accessible* aContext) + { return new HTMLTableRowAccessible(aContent, aContext->Document()); } static Accessible* -New_HTMLTableCellAccessible(Element* aElement, Accessible* aContext) - { return new HTMLTableCellAccessible(aElement, aContext->Document()); } +New_HTMLTableCellAccessible(nsIContent* aContent, Accessible* aContext) + { return new HTMLTableCellAccessible(aContent, aContext->Document()); } static Accessible* -New_HTMLTableHeaderCell(Element* aElement, Accessible* aContext) +New_HTMLTableHeaderCell(nsIContent* aContent, Accessible* aContext) { - if (aContext->IsTableRow() && aContext->GetContent() == aElement->GetParent()) - return new HTMLTableHeaderCellAccessibleWrap(aElement, aContext->Document()); + if (aContext->IsTableRow() && aContext->GetContent() == aContent->GetParent()) + return new HTMLTableHeaderCellAccessibleWrap(aContent, aContext->Document()); return nullptr; } static Accessible* -New_HTMLTableHeaderCellIfScope(Element* aElement, Accessible* aContext) +New_HTMLTableHeaderCellIfScope(nsIContent* aContent, Accessible* aContext) { - if (aContext->IsTableRow() && aContext->GetContent() == aElement->GetParent() && - aElement->HasAttr(kNameSpaceID_None, nsGkAtoms::scope)) - return new HTMLTableHeaderCellAccessibleWrap(aElement, aContext->Document()); + if (aContext->IsTableRow() && aContext->GetContent() == aContent->GetParent() && + aContent->IsElement() && + aContent->AsElement()->HasAttr(kNameSpaceID_None, nsGkAtoms::scope)) + return new HTMLTableHeaderCellAccessibleWrap(aContent, aContext->Document()); return nullptr; } @@ -322,8 +328,8 @@ static const HTMLMarkupMapInfo sHTMLMarkupMapList[] = { #define XULMAP_TYPE(atom, new_type) \ XULMAP( \ atom, \ - [](Element* aElement, Accessible* aContext) -> Accessible* { \ - return new new_type(aElement, aContext->Document()); \ + [](nsIContent* aContent, Accessible* aContext) -> Accessible* { \ + return new new_type(aContent, aContext->Document()); \ } \ ) @@ -1172,7 +1178,7 @@ nsAccessibilityService::CreateAccessible(nsINode* aNode, const HTMLMarkupMapInfo* markupMap = mHTMLMarkupMap.Get(content->NodeInfo()->NameAtom()); if (markupMap && markupMap->new_func) - newAcc = markupMap->new_func(content->AsElement(), aContext); + newAcc = markupMap->new_func(content, aContext); if (!newAcc) // try by frame accessible type. newAcc = CreateAccessibleByFrameType(frame, content, aContext); @@ -1235,7 +1241,7 @@ nsAccessibilityService::CreateAccessible(nsINode* aNode, const XULMarkupMapInfo* xulMap = mXULMarkupMap.Get(content->NodeInfo()->NameAtom()); if (xulMap && xulMap->new_func) { - newAcc = xulMap->new_func(content->AsElement(), aContext); + newAcc = xulMap->new_func(content, aContext); } #endif @@ -1267,7 +1273,7 @@ nsAccessibilityService::CreateAccessible(nsINode* aNode, const HTMLMarkupMapInfo* markupMap = mHTMLMarkupMap.Get(content->NodeInfo()->NameAtom()); if (markupMap && markupMap->new_func) - newAcc = markupMap->new_func(content->AsElement(), aContext); + newAcc = markupMap->new_func(content, aContext); // Fall back to text when encountering Content MathML. if (!newAcc && !content->IsAnyOfMathMLElements(nsGkAtoms::annotation_, diff --git a/accessible/base/nsAccessibilityService.h b/accessible/base/nsAccessibilityService.h index 876cbfd1ad1d..b7377bba9f36 100644 --- a/accessible/base/nsAccessibilityService.h +++ b/accessible/base/nsAccessibilityService.h @@ -51,7 +51,7 @@ SelectionManager* SelectionMgr(); ApplicationAccessible* ApplicationAcc(); xpcAccessibleApplication* XPCApplicationAcc(); -typedef Accessible* (New_Accessible)(Element* aElement, Accessible* aContext); +typedef Accessible* (New_Accessible)(nsIContent* aContent, Accessible* aContext); struct MarkupAttrInfo { nsStaticAtom** name; From 372f39f0328bb86e2bfa6119a6d1939fbd97eb58 Mon Sep 17 00:00:00 2001 From: Cosmin Sabou Date: Wed, 7 Mar 2018 22:19:53 +0200 Subject: [PATCH 55/65] Backed out changeset d679c9a9afa0 (bug 1442582) for mochitest browser chrome failures at browser_ext_tabs_create.js on a CLOSED TREE --- browser/base/content/tabbrowser.css | 4 ++ browser/base/content/tabbrowser.js | 63 +++++++++++++++-------------- browser/base/content/tabbrowser.xml | 39 ++++++++++++++++++ testing/mochitest/browser-test.js | 6 +-- 4 files changed, 78 insertions(+), 34 deletions(-) diff --git a/browser/base/content/tabbrowser.css b/browser/base/content/tabbrowser.css index 266309836332..10b158eeac2e 100644 --- a/browser/base/content/tabbrowser.css +++ b/browser/base/content/tabbrowser.css @@ -2,6 +2,10 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +.tabbrowser-tabpanels { + -moz-binding: url("chrome://browser/content/tabbrowser.xml#tabbrowser-tabpanels"); +} + .tabbrowser-arrowscrollbox { -moz-binding: url("chrome://browser/content/tabbrowser.xml#tabbrowser-arrowscrollbox"); } diff --git a/browser/base/content/tabbrowser.js b/browser/base/content/tabbrowser.js index 98ab7c3d317e..382e2d1f3ead 100644 --- a/browser/base/content/tabbrowser.js +++ b/browser/base/content/tabbrowser.js @@ -204,11 +204,20 @@ window._gBrowser = { } let messageManager = window.getGroupMessageManager("browsers"); - if (gMultiProcessBrowser) { + + let remote = window.QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIWebNavigation) + .QueryInterface(Ci.nsILoadContext) + .useRemoteTabs; + if (remote) { messageManager.addMessageListener("DOMTitleChanged", this); messageManager.addMessageListener("DOMWindowClose", this); window.messageManager.addMessageListener("contextmenu", this); messageManager.addMessageListener("Browser:Init", this); + + // If this window has remote tabs, switch to our tabpanels fork + // which does asynchronous tab switching. + this.mPanelContainer.classList.add("tabbrowser-tabpanels"); } else { this._outerWindowIDBrowserMap.set(this.mCurrentBrowser.outerWindowID, this.mCurrentBrowser); @@ -886,17 +895,11 @@ window._gBrowser = { }, updateCurrentBrowser(aForceUpdate) { - let newBrowser = this.getBrowserAtIndex(this.tabContainer.selectedIndex); + var newBrowser = this.getBrowserAtIndex(this.tabContainer.selectedIndex); if (this.mCurrentBrowser == newBrowser && !aForceUpdate) return; - let newTab = this.getTabForBrowser(newBrowser); - if (!aForceUpdate) { - if (gMultiProcessBrowser) { - this._getSwitcher().requestTab(newTab); - } - document.commandDispatcher.lock(); TelemetryStopwatch.start("FX_TAB_SWITCH_UPDATE_MS"); @@ -925,7 +928,7 @@ window._gBrowser = { } } - let oldTab = this.mCurrentTab; + var oldTab = this.mCurrentTab; // Preview mode should not reset the owner if (!this._previewMode && !oldTab.selected) @@ -938,7 +941,7 @@ window._gBrowser = { } this._lastRelatedTabMap = new WeakMap(); - let oldBrowser = this.mCurrentBrowser; + var oldBrowser = this.mCurrentBrowser; if (!gMultiProcessBrowser) { oldBrowser.removeAttribute("primary"); @@ -955,8 +958,8 @@ window._gBrowser = { updateBlockedPopups = true; this.mCurrentBrowser = newBrowser; - this.mCurrentTab = newTab; - this.showTab(newTab); + this.mCurrentTab = this.tabContainer.selectedItem; + this.showTab(this.mCurrentTab); gURLBar.setAttribute("switchingtabs", "true"); window.addEventListener("MozAfterPaint", function() { @@ -966,13 +969,13 @@ window._gBrowser = { this._appendStatusPanel(); if (updateBlockedPopups) - newBrowser.updateBlockedPopups(); + this.mCurrentBrowser.updateBlockedPopups(); // Update the URL bar. - let loc = newBrowser.currentURI; + var loc = this.mCurrentBrowser.currentURI; - let webProgress = newBrowser.webProgress; - let securityUI = newBrowser.securityUI; + var webProgress = this.mCurrentBrowser.webProgress; + var securityUI = this.mCurrentBrowser.securityUI; this._callProgressListeners(null, "onLocationChange", [webProgress, null, loc, 0], @@ -986,7 +989,7 @@ window._gBrowser = { true, false); } - let listener = this._tabListeners.get(newTab); + var listener = this._tabListeners.get(this.mCurrentTab); if (listener && listener.mStateFlags) { this._callProgressListeners(null, "onUpdateCurrentBrowser", [listener.mStateFlags, listener.mStatus, @@ -995,8 +998,8 @@ window._gBrowser = { } if (!this._previewMode) { - newTab.updateLastAccessed(); - newTab.removeAttribute("unread"); + this.mCurrentTab.updateLastAccessed(); + this.mCurrentTab.removeAttribute("unread"); oldTab.updateLastAccessed(); let oldFindBar = oldTab._findBar; @@ -1007,22 +1010,22 @@ window._gBrowser = { this.updateTitlebar(); - newTab.removeAttribute("titlechanged"); - newTab.removeAttribute("attention"); + this.mCurrentTab.removeAttribute("titlechanged"); + this.mCurrentTab.removeAttribute("attention"); // The tab has been selected, it's not unselected anymore. // (1) Call the current tab's finishUnselectedTabHoverTimer() // to save a telemetry record. // (2) Call the current browser's unselectedTabHover() with false // to dispatch an event. - newTab.finishUnselectedTabHoverTimer(); - newBrowser.unselectedTabHover(false); + this.mCurrentTab.finishUnselectedTabHoverTimer(); + this.mCurrentBrowser.unselectedTabHover(false); } // If the new tab is busy, and our current state is not busy, then // we need to fire a start to all progress listeners. const nsIWebProgressListener = Ci.nsIWebProgressListener; - if (newTab.hasAttribute("busy") && !this.mIsBusy) { + if (this.mCurrentTab.hasAttribute("busy") && !this.mIsBusy) { this.mIsBusy = true; this._callProgressListeners(null, "onStateChange", [webProgress, null, @@ -1033,7 +1036,7 @@ window._gBrowser = { // If the new tab is not busy, and our current state is busy, then // we need to fire a stop to all progress listeners. - if (!newTab.hasAttribute("busy") && this.mIsBusy) { + if (!this.mCurrentTab.hasAttribute("busy") && this.mIsBusy) { this.mIsBusy = false; this._callProgressListeners(null, "onStateChange", [webProgress, null, @@ -1054,10 +1057,10 @@ window._gBrowser = { previousTab: oldTab } }); - newTab.dispatchEvent(event); + this.mCurrentTab.dispatchEvent(event); this._tabAttrModified(oldTab, ["selected"]); - this._tabAttrModified(newTab, ["selected"]); + this._tabAttrModified(this.mCurrentTab, ["selected"]); if (oldBrowser != newBrowser && oldBrowser.getInPermitUnload) { @@ -1086,8 +1089,8 @@ window._gBrowser = { } if (!gMultiProcessBrowser) { - this._adjustFocusBeforeTabSwitch(oldTab, newTab); - this._adjustFocusAfterTabSwitch(newTab); + this._adjustFocusBeforeTabSwitch(oldTab, this.mCurrentTab); + this._adjustFocusAfterTabSwitch(this.mCurrentTab); } } @@ -1100,7 +1103,7 @@ window._gBrowser = { // session to allow the user to easily drag the selected tab. // This is currently only supported on Windows. oldTab.removeAttribute("touchdownstartsdrag"); - newTab.setAttribute("touchdownstartsdrag", "true"); + this.mCurrentTab.setAttribute("touchdownstartsdrag", "true"); if (!gMultiProcessBrowser) { document.commandDispatcher.unlock(); diff --git a/browser/base/content/tabbrowser.xml b/browser/base/content/tabbrowser.xml index 55c6bd721b9a..158e93fecfeb 100644 --- a/browser/base/content/tabbrowser.xml +++ b/browser/base/content/tabbrowser.xml @@ -2337,6 +2337,45 @@ + + + 0 + + + + + + + + = this.childNodes.length) + return val; + + let toTab = this.getRelatedElement(this.childNodes[val]); + + gBrowser._getSwitcher().requestTab(toTab); + + var panel = this._selectedPanel; + var newPanel = this.childNodes[val]; + this._selectedPanel = newPanel; + if (this._selectedPanel != panel) { + var event = document.createEvent("Events"); + event.initEvent("select", true, true); + this.dispatchEvent(event); + + this._selectedIndex = val; + } + + return val; + ]]> + + + + + diff --git a/testing/mochitest/browser-test.js b/testing/mochitest/browser-test.js index 748663371418..5ecf1b8729dc 100644 --- a/testing/mochitest/browser-test.js +++ b/testing/mochitest/browser-test.js @@ -241,10 +241,8 @@ function takeInstrumentation() { // The selector for just this element function immediateSelector(element) { - if (element.localName == "notificationbox" && - element.parentNode && - element.parentNode.parentNode && - element.parentNode.parentNode.classList.contains("tabbrowser-tabbox")) { + if (element.localName == "notificationbox" && element.parentNode && + element.parentNode.classList.contains("tabbrowser-tabpanels")) { // Don't do a full selector for a tabpanel's notificationbox return element.localName; } From 355b9380ed9f6d9f0a9af928c13b8ef86ecebd0d Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Wed, 7 Mar 2018 14:12:21 -0500 Subject: [PATCH 56/65] servo: Merge #20232 - Update mozjs_sys (from servo:up); r=jdm Pick up https://github.com/servo/mozjs/pull/132 Source-Repo: https://github.com/servo/servo Source-Revision: 72d09202f4e5207cee606e122729dd007e6b5ac8 --HG-- extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear extra : subtree_revision : adc5d3dd7e14186227285981b3f8c74158cfbafd --- servo/Cargo.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/servo/Cargo.lock b/servo/Cargo.lock index 55a553eab5bd..136a53e7c02f 100644 --- a/servo/Cargo.lock +++ b/servo/Cargo.lock @@ -1792,13 +1792,13 @@ dependencies = [ "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "mozjs_sys 0.50.0 (registry+https://github.com/rust-lang/crates.io-index)", + "mozjs_sys 0.50.1 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "mozjs_sys" -version = "0.50.0" +version = "0.50.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3787,7 +3787,7 @@ dependencies = [ "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" "checksum mitochondria 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9de3eca27871df31c33b807f834b94ef7d000956f57aa25c5aed9c5f0aae8f6f" "checksum mozjs 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "199f707066bf05b559ef6e46741c20e4f7bca8ae3a9c9d953d728dbb840f4eaa" -"checksum mozjs_sys 0.50.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ef1e24df9f76502cd4459919098ec1ac3af75ce694ec5b8837aa91f69f2ad0eb" +"checksum mozjs_sys 0.50.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e61a792a125b1364c5ec50255ed8343ce02dc56098f8868dd209d472c8de006a" "checksum mp3-metadata 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ab5f1d2693586420208d1200ce5a51cd44726f055b635176188137aff42c7de" "checksum mp4parse 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f821e3799bc0fd16d9b861fb02fa7ee1b5fba29f45ad591dade105c48ca9a1a0" "checksum net2 0.2.29 (registry+https://github.com/rust-lang/crates.io-index)" = "bc01404e7568680f1259aa5729539f221cb1e6d047a0d9053cab4be8a73b5d67" From 7145476435895484e9276cb522b453e3e4d9c86c Mon Sep 17 00:00:00 2001 From: Tom Ritter Date: Tue, 6 Mar 2018 10:15:39 -0600 Subject: [PATCH 57/65] Bug 1442515 Turn MOZ_LOG's in Timer Reduction on in non-debug builds also r=baku MozReview-Commit-ID: C3JkX8RogeW --HG-- extra : rebase_source : 99631463616a8ec1071f5f37106772d219cdfe16 --- .../resistfingerprinting/nsRFPService.cpp | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/toolkit/components/resistfingerprinting/nsRFPService.cpp b/toolkit/components/resistfingerprinting/nsRFPService.cpp index b3afe5f9cbee..aeb3cb6b3539 100644 --- a/toolkit/components/resistfingerprinting/nsRFPService.cpp +++ b/toolkit/components/resistfingerprinting/nsRFPService.cpp @@ -42,9 +42,7 @@ using namespace mozilla; using namespace std; -#ifdef DEBUG static mozilla::LazyLogModule gResistFingerprintingLog("nsResistFingerprinting"); -#endif #define RESIST_FINGERPRINTING_PREF "privacy.resistFingerprinting" #define RFP_TIMER_PREF "privacy.reduceTimerPrecision" @@ -163,20 +161,15 @@ public: // Double check after we have a lock if (MOZ_UNLIKELY(cacheEntry.key != aKey)) { // Got evicted in a race -#if defined(DEBUG) long long tmp_key = cacheEntry.key; MOZ_LOG(gResistFingerprintingLog, LogLevel::Verbose, ("LRU Cache HIT-MISS with %lli != %lli", aKey, tmp_key)); -#endif return EmptyCString(); } cacheEntry.accessTime = PR_Now(); - -#if defined(DEBUG) MOZ_LOG(gResistFingerprintingLog, LogLevel::Verbose, ("LRU Cache HIT with %lli", aKey)); -#endif return cacheEntry.data; } } @@ -192,10 +185,8 @@ public: for (auto & cacheEntry : this->cache) { if (MOZ_UNLIKELY(cacheEntry.key == aKey)) { // Another thread inserted before us, don't insert twice -#if defined(DEBUG) MOZ_LOG(gResistFingerprintingLog, LogLevel::Verbose, ("LRU Cache DOUBLE STORE with %lli", aKey)); -#endif return; } if (cacheEntry.accessTime < lowestKey->accessTime) { @@ -206,9 +197,7 @@ public: lowestKey->key = aKey; lowestKey->data = aValue; lowestKey->accessTime = PR_Now(); -#if defined(DEBUG) MOZ_LOG(gResistFingerprintingLog, LogLevel::Verbose, ("LRU Cache STORE with %lli", aKey)); -#endif } @@ -499,14 +488,12 @@ nsRFPService::ReduceTimePrecisionImpl( // Cast it back to a double and reduce it to the correct units. double ret = double(clampedAndJittered) / (1000000.0 / aTimeScale); -#if defined(DEBUG) bool tmp_jitter = sJitter; MOZ_LOG(gResistFingerprintingLog, LogLevel::Verbose, ("Given: (%.*f, Scaled: %.*f, Converted: %lli), Rounding with (%lli, Originally %.*f), " "Intermediate: (%lli), Clamped: (%lli) Jitter: (%i Midpoint: %lli) Final: (%lli Converted: %.*f)", DBL_DIG-1, aTime, DBL_DIG-1, timeScaled, timeAsInt, resolutionAsInt, DBL_DIG-1, aResolutionUSec, (long long)floor(double(timeAsInt) / resolutionAsInt), clamped, tmp_jitter, midpoint, clampedAndJittered, DBL_DIG-1, ret)); -#endif return ret; } From 8f461abbfb8244bcb464144a7e3c280562b0fd38 Mon Sep 17 00:00:00 2001 From: Tom Ritter Date: Tue, 6 Mar 2018 10:18:12 -0600 Subject: [PATCH 58/65] Bug 1442515 Refactor test_eventTimeStamp.html to pass r=baku Previously, we waited for the load event and used that event timestamp. But as far as I can tell the intent of this test is not to test the load event specifically, but just event timestamps. In opt builds, the reduceTimerPrecision pref was not being populated fast enough to take effect during the load process, and was causing (a lot of) intermittent failures. We refactor the test to use PushPrefEnv and test a different event. MozReview-Commit-ID: ILJYHRhUHnM --HG-- extra : rebase_source : 659ebbe2442647d1166725637bcd716ad94b9980 --- dom/events/test/test_eventTimeStamp.html | 32 ++++++++---------------- 1 file changed, 10 insertions(+), 22 deletions(-) mode change 100644 => 100755 dom/events/test/test_eventTimeStamp.html diff --git a/dom/events/test/test_eventTimeStamp.html b/dom/events/test/test_eventTimeStamp.html old mode 100644 new mode 100755 index 4df54f832d44..4768d0eb3301 --- a/dom/events/test/test_eventTimeStamp.html +++ b/dom/events/test/test_eventTimeStamp.html @@ -35,20 +35,14 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=77992 SimpleTest.waitForExplicitFinish(); SimpleTest.requestFlakyTimeout("untriaged"); -// We don't use SpecialPowers.pushPrefEnv since it can delay the test -// function until after the load event has fired which means we can't -// test the timestamp of the load event. -const kHighResTimestampsPrefName = "dom.event.highrestimestamp.enabled"; -var highRestimerPrevPrefValue = SpecialPowers.getBoolPref(kHighResTimestampsPrefName); -SpecialPowers.setBoolPref(kHighResTimestampsPrefName, true); - // This file performs tests that normalize the timeOrigin within a worker // and compare it to the page. When this occurs, time can appear to go backwards. -// This is a known (and accepted) regression. -const kReduceTimePrecisionPrefName = "privacy.reduceTimerPrecision"; -var reduceTimePrecisionPrevPrefValue = SpecialPowers.getBoolPref(kReduceTimePrecisionPrefName); -SpecialPowers.setBoolPref(kReduceTimePrecisionPrefName, false); -testRegularEvents(); +// This is a known (and accepted) regression of privacy.reduceTimerPrecision so +// we need to turn it off. +SpecialPowers.pushPrefEnv({ "set": [ + ["privacy.reduceTimerPrecision", false], + ["dom.event.highrestimestamp.enabled", true] + ]}, testRegularEvents); // Event.timeStamp should be relative to the time origin which is: // @@ -59,13 +53,8 @@ testRegularEvents(); // See: https://w3c.github.io/web-performance/specs/HighResolutionTime2/Overview.html#sec-time-origin function testRegularEvents() { - if (document.readyState === "complete") { - ok(false, "Onload event has already fired"); - finishTests(); - return; - } var timeBeforeEvent = performance.now(); - addEventListener("load", function(evt) { + document.getElementById('test').addEventListener("click", function(evt) { var timeAfterEvent = performance.now(); ok(evt.timeStamp >= timeBeforeEvent && evt.timeStamp <= timeAfterEvent, @@ -73,6 +62,7 @@ function testRegularEvents() { timeBeforeEvent + ", " + timeAfterEvent + "]"); testWorkerEvents(); }); + document.getElementById('test').click(); } function testWorkerEvents() { @@ -107,8 +97,8 @@ function testSharedWorkerEvents() { ok(evt.data >= timeBeforeEvent && evt.data <= timeAfterEvent, "Event timestamp in shared worker (" + evt.data + - ") is in expected range: (0, " + - timeBeforeEvent + ", " + timeAfterEvent + ")"); + ") is in expected range: [" + + timeBeforeEvent + ", " + timeAfterEvent + "]"); worker.port.close(); finishTests(); }; @@ -118,8 +108,6 @@ function testSharedWorkerEvents() { } var finishTests = function() { - SpecialPowers.setBoolPref(kHighResTimestampsPrefName, highRestimerPrevPrefValue); - SpecialPowers.setBoolPref(kReduceTimePrecisionPrefName, reduceTimePrecisionPrevPrefValue); SimpleTest.finish(); }; From b7cf65fe600b73589e6b1bdfe82b240e42f18ecd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Sat, 3 Mar 2018 18:47:41 +0100 Subject: [PATCH 59/65] Bug 1442938: Nil-check the title in nsCocoaWindow::importState / exportState. r=mstange Looking at the docs for [NSWindow title] I don't think it's supposed to return nil under any circumstances... But it does in our automation, for some reason, with the patches for bug 1439875 which make our fullscreen code run a bit earlier. MozReview-Commit-ID: AX4qzjzsqST --HG-- extra : rebase_source : a01f2ba6b42b4067e7a4886c4814e85f317a4a6f --- widget/cocoa/nsCocoaWindow.mm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/widget/cocoa/nsCocoaWindow.mm b/widget/cocoa/nsCocoaWindow.mm index 2b44bf2bc983..1f1ae508acb5 100644 --- a/widget/cocoa/nsCocoaWindow.mm +++ b/widget/cocoa/nsCocoaWindow.mm @@ -3198,7 +3198,9 @@ static const NSString* kStateCollectionBehavior = @"collectionBehavior"; - (void)importState:(NSDictionary*)aState { - [self setTitle:[aState objectForKey:kStateTitleKey]]; + if (NSString* title = [aState objectForKey:kStateTitleKey]) { + [self setTitle:title]; + } [self setDrawsContentsIntoWindowFrame:[[aState objectForKey:kStateDrawsContentsIntoWindowFrameKey] boolValue]]; [self setTitlebarColor:[aState objectForKey:kStateActiveTitlebarColorKey] forActiveWindow:YES]; [self setTitlebarColor:[aState objectForKey:kStateInactiveTitlebarColorKey] forActiveWindow:NO]; @@ -3209,7 +3211,9 @@ static const NSString* kStateCollectionBehavior = @"collectionBehavior"; - (NSMutableDictionary*)exportState { NSMutableDictionary* state = [NSMutableDictionary dictionaryWithCapacity:10]; - [state setObject:[self title] forKey:kStateTitleKey]; + if (NSString* title = [self title]) { + [state setObject:title forKey:kStateTitleKey]; + } [state setObject:[NSNumber numberWithBool:[self drawsContentsIntoWindowFrame]] forKey:kStateDrawsContentsIntoWindowFrameKey]; NSColor* activeTitlebarColor = [self titlebarColorForActiveWindow:YES]; From ff385c8a15d7f1ee26df873a0ead78ecff4e8f6a Mon Sep 17 00:00:00 2001 From: Thom Chiovoloni Date: Tue, 6 Mar 2018 12:30:44 -0800 Subject: [PATCH 60/65] Bug 1443268 - Remove test_places_guid_downgrade.js from sync r=kitcambridge MozReview-Commit-ID: 2P8EnTfugmz --HG-- extra : rebase_source : f0f9cc89b6005bcb010e7ddf8d6687e647f47891 --- services/common/tests/unit/head_global.js | 3 +- services/sync/tests/unit/head_appinfo.js | 5 +- .../tests/unit/places_v10_from_v11.sqlite | Bin 1081344 -> 0 bytes .../tests/unit/test_places_guid_downgrade.js | 194 ------------------ services/sync/tests/unit/xpcshell.ini | 2 - 5 files changed, 4 insertions(+), 200 deletions(-) delete mode 100644 services/sync/tests/unit/places_v10_from_v11.sqlite delete mode 100644 services/sync/tests/unit/test_places_guid_downgrade.js diff --git a/services/common/tests/unit/head_global.js b/services/common/tests/unit/head_global.js index b3fa0a9637fb..ba25dfa2bcfb 100644 --- a/services/common/tests/unit/head_global.js +++ b/services/common/tests/unit/head_global.js @@ -3,7 +3,8 @@ var Cm = Components.manager; -var gSyncProfile = do_get_profile(); +// Required to avoid failures. +do_get_profile(); ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); ChromeUtils.import("resource://testing-common/AppInfo.jsm", this); diff --git a/services/sync/tests/unit/head_appinfo.js b/services/sync/tests/unit/head_appinfo.js index b2622bac1c38..924acb90712c 100644 --- a/services/sync/tests/unit/head_appinfo.js +++ b/services/sync/tests/unit/head_appinfo.js @@ -6,9 +6,8 @@ ChromeUtils.import("resource://gre/modules/Services.jsm"); ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); -var gSyncProfile; - -gSyncProfile = do_get_profile(); +// Required to avoid failures. +do_get_profile(); // Init FormHistoryStartup and pretend we opened a profile. var fhs = Cc["@mozilla.org/satchel/form-history-startup;1"] diff --git a/services/sync/tests/unit/places_v10_from_v11.sqlite b/services/sync/tests/unit/places_v10_from_v11.sqlite deleted file mode 100644 index e3f9ef4463fbfeb0edcd02a8592520bf2978ea42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1081344 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 BwQm3b diff --git a/services/sync/tests/unit/test_places_guid_downgrade.js b/services/sync/tests/unit/test_places_guid_downgrade.js deleted file mode 100644 index f1a9d2d15e08..000000000000 --- a/services/sync/tests/unit/test_places_guid_downgrade.js +++ /dev/null @@ -1,194 +0,0 @@ -/* Any copyright is dedicated to the Public Domain. - http://creativecommons.org/publicdomain/zero/1.0/ */ - -ChromeUtils.import("resource://services-common/utils.js"); -ChromeUtils.import("resource://services-sync/util.js"); -ChromeUtils.import("resource://services-sync/engines.js"); -ChromeUtils.import("resource://services-sync/engines/history.js"); -ChromeUtils.import("resource://services-sync/engines/bookmarks.js"); -ChromeUtils.import("resource://services-sync/service.js"); - -const kDBName = "places.sqlite"; - -function setPlacesDatabase(aFileName) { - removePlacesDatabase(); - _("Copying over places.sqlite."); - let file = do_get_file(aFileName); - file.copyTo(gSyncProfile, kDBName); -} - -function removePlacesDatabase() { - _("Removing places.sqlite."); - let file = gSyncProfile.clone(); - file.append(kDBName); - try { - file.remove(false); - } catch (ex) { - // Windows is awesome. NOT. - } -} - -Svc.Obs.add("places-shutdown", function() { - do_timeout(0, removePlacesDatabase); -}); - - -// Verify initial database state. Function borrowed from places tests. -add_test(function test_initial_state() { - _("Verify initial setup: v11 database is available"); - - // Mostly sanity checks our starting DB to make sure it's setup as we expect - // it to be. - let dbFile = gSyncProfile.clone(); - dbFile.append(kDBName); - let db = Services.storage.openUnsharedDatabase(dbFile); - - let stmt = db.createStatement("PRAGMA journal_mode"); - Assert.ok(stmt.executeStep()); - // WAL journal mode should have been unset this database when it was migrated - // down to v10. - Assert.notEqual(stmt.getString(0).toLowerCase(), "wal"); - stmt.finalize(); - - Assert.ok(db.indexExists("moz_bookmarks_guid_uniqueindex")); - Assert.ok(db.indexExists("moz_places_guid_uniqueindex")); - - // There should be a non-zero amount of bookmarks without a guid. - stmt = db.createStatement( - "SELECT COUNT(1) " - + "FROM moz_bookmarks " - + "WHERE guid IS NULL " - ); - Assert.ok(stmt.executeStep()); - Assert.notEqual(stmt.getInt32(0), 0); - stmt.finalize(); - - // There should be a non-zero amount of places without a guid. - stmt = db.createStatement( - "SELECT COUNT(1) " - + "FROM moz_places " - + "WHERE guid IS NULL " - ); - Assert.ok(stmt.executeStep()); - Assert.notEqual(stmt.getInt32(0), 0); - stmt.finalize(); - - // Check our schema version to make sure it is actually at 10. - Assert.equal(db.schemaVersion, 10); - - db.close(); - - run_next_test(); -}); - -add_task(async function test_history_guids() { - let engine = new HistoryEngine(Service); - await engine.initialize(); - let store = engine._store; - - let places = [ - { - url: "http://getfirefox.com/", - title: "Get Firefox!", - visits: [{ - date: new Date(), - transition: Ci.nsINavHistoryService.TRANSITION_LINK - }] - }, - { - url: "http://getthunderbird.com/", - title: "Get Thunderbird!", - visits: [{ - date: new Date(), - transition: Ci.nsINavHistoryService.TRANSITION_LINK - }] - } - ]; - - async function onVisitAdded() { - let fxguid = await store.GUIDForUri("http://getfirefox.com/", true); - let tbguid = await store.GUIDForUri("http://getthunderbird.com/", true); - dump("fxguid: " + fxguid + "\n"); - dump("tbguid: " + tbguid + "\n"); - - _("History: Verify GUIDs are added to the guid column."); - let db = await PlacesUtils.promiseDBConnection(); - let result = await db.execute( - "SELECT id FROM moz_places WHERE guid = :guid", - {guid: fxguid} - ); - Assert.equal(result.length, 1); - - result = await db.execute( - "SELECT id FROM moz_places WHERE guid = :guid", - {guid: tbguid} - ); - Assert.equal(result.length, 1); - - _("History: Verify GUIDs weren't added to annotations."); - result = await db.execute( - "SELECT a.content AS guid FROM moz_annos a WHERE guid = :guid", - {guid: fxguid} - ); - Assert.equal(result.length, 0); - - result = await db.execute( - "SELECT a.content AS guid FROM moz_annos a WHERE guid = :guid", - {guid: tbguid} - ); - Assert.equal(result.length, 0); - } - - await PlacesUtils.history.insertMany(places); - await onVisitAdded(); -}); - -add_task(async function test_bookmark_guids() { - let fx = await PlacesUtils.bookmarks.insert({ - parentGuid: PlacesUtils.bookmarks.toolbarGuid, - url: "http://getfirefox.com/", - title: "Get Firefox!", - }); - let fxid = await PlacesUtils.promiseItemId(fx.guid); - let tb = await PlacesUtils.bookmarks.insert({ - parentGuid: PlacesUtils.bookmarks.toolbarGuid, - url: "http://getthunderbird.com/", - title: "Get Thunderbird!", - }); - let tbid = await PlacesUtils.promiseItemId(tb.guid); - - _("Bookmarks: Verify GUIDs are added to the guid column."); - let db = await PlacesUtils.promiseDBConnection(); - let result = await db.execute( - "SELECT id FROM moz_bookmarks WHERE guid = :guid", - {guid: fx.guid} - ); - Assert.equal(result.length, 1); - Assert.equal(result[0].getResultByName("id"), fxid); - - result = await db.execute( - "SELECT id FROM moz_bookmarks WHERE guid = :guid", - {guid: tb.guid} - ); - Assert.equal(result.length, 1); - Assert.equal(result[0].getResultByName("id"), tbid); - - _("Bookmarks: Verify GUIDs weren't added to annotations."); - result = await db.execute( - "SELECT a.content AS guid FROM moz_items_annos a WHERE guid = :guid", - {guid: fx.guid} - ); - Assert.equal(result.length, 0); - - result = await db.execute( - "SELECT a.content AS guid FROM moz_items_annos a WHERE guid = :guid", - {guid: tb.guid} - ); - Assert.equal(result.length, 0); -}); - -function run_test() { - setPlacesDatabase("places_v10_from_v11.sqlite"); - - run_next_test(); -} diff --git a/services/sync/tests/unit/xpcshell.ini b/services/sync/tests/unit/xpcshell.ini index 7eed91f28c85..3dca89a753f3 100644 --- a/services/sync/tests/unit/xpcshell.ini +++ b/services/sync/tests/unit/xpcshell.ini @@ -7,7 +7,6 @@ support-files = bootstrap1-search.json missing-sourceuri.json missing-xpi-search.json - places_v10_from_v11.sqlite rewrite-search.json sync_ping_schema.json systemaddon-search.json @@ -174,7 +173,6 @@ skip-if = debug [test_history_tracker.js] # Too many intermittent "ASSERTION: thread pool wasn't shutdown: '!mPool'" (bug 804479) skip-if = debug -[test_places_guid_downgrade.js] [test_password_engine.js] [test_password_store.js] [test_password_validator.js] From af7fec51f825b607e12dfba6789b05bc39a8094d Mon Sep 17 00:00:00 2001 From: Tom Ritter Date: Tue, 6 Mar 2018 11:10:10 -0600 Subject: [PATCH 61/65] Bug 1442940 Turn off jitter for dom/base/test/test_timeout_clamp.html which is (likely) causing intermittents r=baku MozReview-Commit-ID: 9nfiBbqsATT --HG-- extra : rebase_source : c164ddc0d284aa864fef328d41e6694ae0969bfe --- dom/base/test/test_timeout_clamp.html | 30 ++++++++++++++++++--------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/dom/base/test/test_timeout_clamp.html b/dom/base/test/test_timeout_clamp.html index e6cb8d87a98c..4f73762c40ac 100644 --- a/dom/base/test/test_timeout_clamp.html +++ b/dom/base/test/test_timeout_clamp.html @@ -74,9 +74,10 @@ async function runTests() { // Verify a setTimeout() chain clamps correctly let start = performance.now(); await delayByTimeoutChain(expectedClampIteration); - let delta = performance.now() - start; + let stop = performance.now(); + let delta = stop - start; - ok(delta >= clampDelayMS, "setTimeout() chain clamped"); + ok(delta >= clampDelayMS, "setTimeout() chain clamped: " + stop + " - " + start + " = " + delta); ok(delta < (2*clampDelayMS), "setTimeout() chain did not clamp twice"); await clearNestingLevel(); @@ -84,9 +85,10 @@ async function runTests() { // Verify setInterval() clamps correctly start = performance.now(); await delayByInterval(expectedClampIteration); - delta = performance.now() - start; + stop = performance.now(); + delta = stop - start; - ok(delta >= clampDelayMS, "setInterval() clamped"); + ok(delta >= clampDelayMS, "setInterval() clamped: " + stop + " - " + start + " = " + delta); ok(delta < (2*clampDelayMS), "setInterval() did not clamp twice"); await clearNestingLevel(); @@ -97,9 +99,10 @@ async function runTests() { start = performance.now(); await delayByTimeoutChain(2 * expectedClampIteration); - delta = performance.now() - start; + stop = performance.now(); + delta = stop - start; - ok(delta >= expectedDelay, "setTimeout() chain continued to clamp"); + ok(delta >= expectedDelay, "setTimeout() chain continued to clamp: " + stop + " - " + start + " = " + delta); await clearNestingLevel(); @@ -107,15 +110,22 @@ async function runTests() { // iteration. start = performance.now(); await delayByTimeoutChain(2 * expectedClampIteration); - delta = performance.now() - start; + stop = performance.now(); + delta = stop - start; - ok(delta >= expectedDelay, "setInterval() continued to clamp"); + ok(delta >= expectedDelay, "setInterval() continued to clamp: " + stop + " - " + start + " = " + delta); SimpleTest.finish(); } -SpecialPowers.pushPrefEnv({ 'set': [["dom.min_timeout_value", clampDelayMS]]}, - runTests); +// It appears that it's possible to get unlucky with time jittering and fail this test. +// If start is jittered upwards, everything executes very quickly, and delta has +// a very high midpoint, we may have taken between 10 and 10.002 seconds to execute; but +// it will appear to be 9.998. Turn off jitter (and add logging) to test this. +SpecialPowers.pushPrefEnv({ 'set': [ + ["dom.min_timeout_value", clampDelayMS], + ["privacy.resistFingerprinting.reduceTimerPrecision.jitter", false], + ]}, runTests); From 5afdc71afd9de2001832a6a3d0fddf697b3e0f54 Mon Sep 17 00:00:00 2001 From: Ralph Giles Date: Wed, 7 Mar 2018 16:02:30 -0500 Subject: [PATCH 62/65] Bug 1443865 - Use 16-bit eobs count. r=kinetik MozReview-Commit-ID: 4lfBbvSTNPO --HG-- extra : rebase_source : 1afdf8a54ae5dab645e67bde62e219ee838dea84 --- .../libvpx/libvpx/vp9/encoder/x86/vp9_quantize_ssse3_x86_64.asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/media/libvpx/libvpx/vp9/encoder/x86/vp9_quantize_ssse3_x86_64.asm b/media/libvpx/libvpx/vp9/encoder/x86/vp9_quantize_ssse3_x86_64.asm index ec61c0c3a79a..9af6ccb7f633 100644 --- a/media/libvpx/libvpx/vp9/encoder/x86/vp9_quantize_ssse3_x86_64.asm +++ b/media/libvpx/libvpx/vp9/encoder/x86/vp9_quantize_ssse3_x86_64.asm @@ -171,7 +171,7 @@ cglobal quantize_%1, 0, %2, 15, coeff, ncoeff, skip, zbin, round, quant, \ pshuflw m7, m8, 0x1 pmaxsw m8, m7 pextrw r6, m8, 0 - mov [r2], r6 + mov [r2], r6w RET ; skip-block, i.e. just write all zeroes From d0085c797ff09e8464892770646a5f6abaf7db39 Mon Sep 17 00:00:00 2001 From: Timothy Guan-tin Chien Date: Tue, 6 Mar 2018 14:05:03 -0800 Subject: [PATCH 63/65] Bug 1443635 - Remove the custom XUL tag r=Paolo Restore it to be s so that nsAccessibilityService can produce correct accessibles. MozReview-Commit-ID: 1QiGyKPNifZ --HG-- extra : rebase_source : 4d13ea216a88bb4a0272ac756dba2d50216fca35 --- .../preferences/in-content/tests/browser_advanced_update.js | 2 +- toolkit/mozapps/update/content/history.js | 4 +++- toolkit/mozapps/update/content/updates.css | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/browser/components/preferences/in-content/tests/browser_advanced_update.js b/browser/components/preferences/in-content/tests/browser_advanced_update.js index 13fb7c2d2ed0..4861a9f397f1 100644 --- a/browser/components/preferences/in-content/tests/browser_advanced_update.js +++ b/browser/components/preferences/in-content/tests/browser_advanced_update.js @@ -130,7 +130,7 @@ add_task(async function() { let dialogFrame = dialogOverlay.querySelector(".dialogFrame"); let frameDoc = dialogFrame.contentDocument; - let updates = frameDoc.querySelectorAll("update"); + let updates = frameDoc.querySelectorAll("richlistitem.update"); // Test the update history numbers are correct is(updates.length, mockUpdateManager.updateCount, "The update count is incorrect."); diff --git a/toolkit/mozapps/update/content/history.js b/toolkit/mozapps/update/content/history.js index 1b32035ff544..dcf6dcb7a6a9 100644 --- a/toolkit/mozapps/update/content/history.js +++ b/toolkit/mozapps/update/content/history.js @@ -26,6 +26,7 @@ var gUpdateHistory = { for (var i = 0; i < uc; ++i) { var update = um.getUpdateAt(i); + if (!update || !update.name) continue; @@ -34,7 +35,8 @@ var gUpdateHistory = { if (!update.statusText) continue; - var element = document.createElementNS(NS_XUL, "update"); + var element = document.createElementNS(NS_XUL, "richlistitem"); + element.className = "update"; this._view.appendChild(element); element.name = bundle.getFormattedString("updateFullName", [update.name, update.buildID]); diff --git a/toolkit/mozapps/update/content/updates.css b/toolkit/mozapps/update/content/updates.css index e83c3be03a26..7930e344aac4 100644 --- a/toolkit/mozapps/update/content/updates.css +++ b/toolkit/mozapps/update/content/updates.css @@ -4,7 +4,7 @@ display: none; } -/* Hide the wizard's header so the size of the billboard can size the window +/* Hide the wizard's header so the size of the billboard can size the window on creation. A custom header will be used in its place when a header is needed. */ .wizard-header { @@ -26,7 +26,7 @@ updateheader { } /* Update History Window */ -update { +richlistitem.update { -moz-binding: url("chrome://mozapps/content/update/updates.xml#update"); display: -moz-box; -moz-box-orient: vertical; From 1b083a52ddf6c8e9cd7b602a771ebf080bfd8184 Mon Sep 17 00:00:00 2001 From: Markus Stange Date: Sun, 4 Jun 2017 22:47:58 -0400 Subject: [PATCH 64/65] Bug 1370131 - Allow shadows on accelerated popups. r=kmag It looks like the work in bug 1291457 was all that was necessary to get working window shadows for accelerated popups. It seems that macOS is able to compute the correct shadow style consistently for whatever is drawn in the NSOpenGLContext during the first paint of the window (inside the drawRect call during the orderFront call that opens the window). We only ran into problems when we animated the contents of the window in a way that affects the shadow style; we're no longer doing that after bug 1291457. MozReview-Commit-ID: 62mfWuAsrg2 --HG-- extra : rebase_source : bf8121451474629f0194ccbb422147d5f05ff5b3 extra : source : 57b4a3dff2a5799c5c994a5b577b76c98ebc8226 --- widget/cocoa/nsCocoaWindow.mm | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/widget/cocoa/nsCocoaWindow.mm b/widget/cocoa/nsCocoaWindow.mm index 1f1ae508acb5..c279c5fcb18c 100644 --- a/widget/cocoa/nsCocoaWindow.mm +++ b/widget/cocoa/nsCocoaWindow.mm @@ -2230,13 +2230,7 @@ nsCocoaWindow::SetWindowShadowStyle(int32_t aStyle) // Shadowless windows are only supported on popups. if (mWindowType == eWindowType_popup) { - MOZ_ASSERT(mPopupContentView); - - // Drop shadows are not sized correctly for composited popups when they are - // animated, so disable them entirely if the popup is composited. - bool disableShadow = (aStyle == NS_STYLE_WINDOW_SHADOW_NONE || - mPopupContentView->ShouldUseOffMainThreadCompositing()); - [mWindow setHasShadow:!disableShadow]; + [mWindow setHasShadow:aStyle != NS_STYLE_WINDOW_SHADOW_NONE]; } [mWindow setUseMenuStyle:(aStyle == NS_STYLE_WINDOW_SHADOW_MENU)]; From 6fc9759b147640ade32cdde6018a88de87edc32b Mon Sep 17 00:00:00 2001 From: Johann Hofmann Date: Mon, 5 Mar 2018 20:01:00 +0100 Subject: [PATCH 65/65] Bug 1442560 - Add a note for deprecating passing a storage option to indexedDB.open(). r=asuth MozReview-Commit-ID: 44yCmYrPP26 --HG-- extra : rebase_source : f087aeb9fdd608fbd0f38b4f846c24fa01dcdfa6 --- dom/base/nsDeprecatedOperationList.h | 1 + dom/indexedDB/IDBFactory.cpp | 8 ++++++++ dom/locales/en-US/chrome/dom/dom.properties | 2 ++ 3 files changed, 11 insertions(+) diff --git a/dom/base/nsDeprecatedOperationList.h b/dom/base/nsDeprecatedOperationList.h index 58a4e3c17e3a..a6676712bde1 100644 --- a/dom/base/nsDeprecatedOperationList.h +++ b/dom/base/nsDeprecatedOperationList.h @@ -47,3 +47,4 @@ DEPRECATED_OPERATION(MotionEvent) DEPRECATED_OPERATION(OrientationEvent) DEPRECATED_OPERATION(ProximityEvent) DEPRECATED_OPERATION(AmbientLightEvent) +DEPRECATED_OPERATION(IDBOpenDBOptions_StorageType) diff --git a/dom/indexedDB/IDBFactory.cpp b/dom/indexedDB/IDBFactory.cpp index 2adff913662b..c865e23443ad 100644 --- a/dom/indexedDB/IDBFactory.cpp +++ b/dom/indexedDB/IDBFactory.cpp @@ -454,6 +454,14 @@ IDBFactory::Open(JSContext* aCx, if (!IsChrome() && aOptions.mStorage.WasPassed()) { + if (mWindow && mWindow->GetExtantDoc()) { + mWindow->GetExtantDoc()->WarnOnceAbout(nsIDocument::eIDBOpenDBOptions_StorageType); + } else if (!NS_IsMainThread()) { + // The method below reports on the main thread too, so we need to make sure we're on a worker. + // Workers don't have a WarnOnceAbout mechanism, so this will be reported every time. + WorkerPrivate::ReportErrorToConsole("IDBOpenDBOptions_StorageType"); + } + bool ignore = false; // Ignore internal usage on about: pages. if (NS_IsMainThread()) { diff --git a/dom/locales/en-US/chrome/dom/dom.properties b/dom/locales/en-US/chrome/dom/dom.properties index 638a05d13ac9..a63a00914c2e 100644 --- a/dom/locales/en-US/chrome/dom/dom.properties +++ b/dom/locales/en-US/chrome/dom/dom.properties @@ -359,3 +359,5 @@ MotionEventWarning=Use of the motion sensor is deprecated. OrientationEventWarning=Use of the orientation sensor is deprecated. ProximityEventWarning=Use of the proximity sensor is deprecated. AmbientLightEventWarning=Use of the ambient light sensor is deprecated. +# LOCALIZATION NOTE: Do not translate "storage", "indexedDB.open" and "navigator.storage.persist()". +IDBOpenDBOptions_StorageTypeWarning=The ‘storage’ attribute in options passed to indexedDB.open is deprecated and will soon be removed. To get persistent storage, please use navigator.storage.persist() instead.