extension-develop 2.0.0-beta.5 → 2.0.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module.js +10 -10
- package/package.json +11 -11
- package/dist/run-chrome-profile/BrowserMetrics-spare.pma +0 -0
- package/dist/run-chrome-profile/ChromeFeatureState +0 -6
- package/dist/run-chrome-profile/Default/Affiliation Database +0 -0
- package/dist/run-chrome-profile/Default/Affiliation Database-journal +0 -0
- package/dist/run-chrome-profile/Default/AutofillStrikeDatabase/LOCK +0 -0
- package/dist/run-chrome-profile/Default/AutofillStrikeDatabase/LOG +0 -0
- package/dist/run-chrome-profile/Default/AutofillStrikeDatabase/LOG.old +0 -0
- package/dist/run-chrome-profile/Default/BrowsingTopicsSiteData +0 -0
- package/dist/run-chrome-profile/Default/BrowsingTopicsSiteData-journal +0 -0
- package/dist/run-chrome-profile/Default/BrowsingTopicsState +0 -19
- package/dist/run-chrome-profile/Default/BudgetDatabase/LOCK +0 -0
- package/dist/run-chrome-profile/Default/BudgetDatabase/LOG +0 -0
- package/dist/run-chrome-profile/Default/BudgetDatabase/LOG.old +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/00470bd22a2d1416_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0053126eb73e3753_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/007d076dca4d2d2c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/008e8e9b0e00f617_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/00900420129ce1e9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/00c5bb45f2e50074_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/01226c44e6fa6708_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0127d4e4b5de3bc7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/013999d86d344d72_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0147a750afae1091_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/018d627333a55c30_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/01924817428fafa3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/01dff4d8fe0aa8c3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/01f1337ab165b463_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/020369e6e7fc99de_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/022b78fd209a5f43_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/02322ee638ee99c2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/023c305ce4f49d04_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/024a3c081513554d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0279f8a1284be6a5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/027a1d6587dd82b3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0287095efba7df84_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/02aa17ab544eda13_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/02d03861f6888e50_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/02dd8c48396b632d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/02fb2538373667ce_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0323d5b6d6ca38c0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/033f8b5313f7b9db_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0346b993ceaa706a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/036e8d82a2523a26_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/03b5ae7de9769ff2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/03b621793942b716_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/04043e2cd699c8ba_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/044951c3e952c024_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/045ad0403413766f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0460360ea7599914_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/04cd96d7cd2cdb8c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/04de0a80d1c2ac51_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0507dfba8ec1df08_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/056fd3ff0e507191_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0580104ece31d9bc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/059ecba7395428c4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/059ee2d6d9b8e584_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/05bf019e0f35f393_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/05dc5792f0a4d315_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/06082ef7cdee926c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/06153527b5c87900_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/062a93c3aa4614b2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/064e052dd8c6c472_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0683306365eaf055_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/06b3c5d59a735a43_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/06c5b5aa60fd500d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/06e64c1c3baae3aa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/06fefdf41ae8692d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/06ff1537e2141bfd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0747807bb472155a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/079ebb5aa8d5e98b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/07ade239865f1701_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/07b6ee7596b0ceb3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/07c62012219e1959_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/07d1947e87d7492f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0818aa0ebadae6d0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0824203221a2051e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/088808f332a744d6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/08a9989a32ee4f44_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/08bd848bd532d0f7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/08e36d6b542a243e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0901bb0de77c3e14_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/09162b7a980cb1bc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0941ca7088b715fa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/09a7f7f146007ef2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/09b1351feddfb7d2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/09bfcf1be49f2a05_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/09d62560a2e7acc7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/09e5fd8853614cd8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/09e872f5f171026e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0a0b9ec54b9eaf53_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0a1eec4bfbcf4c70_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0a6108d19fa7a720_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0a89e193a5d8a0f9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0ac793ceaf9a49a1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0aec0caf66c01b86_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0b04030eba97502d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0b3a91791fc81c6d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0b703e3e7e1012de_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0b805e4334077f9c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0bcfc6010dadf4fe_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0bd3e2891a94c4d0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0beb5725de041642_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0c11016afa7131bb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0c1ef066ffea5ed7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0c24fa0066a87bfb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0c3239efa3dd8e40_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0c3d1b967d1633c6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0c7437bda4af7afd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0c962834f9bc3e03_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0cae79c2fc0c4ad9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0cc23df65476a675_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0cc3fcbc4a89f8ed_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0cd2f131b39452fc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0cd79de5e8ff6dbd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0cd7e4e292dc47cf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0d1612014bdde02c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0d7d9ceb93837cdd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0d82365fcba91dbf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0d9079f49a71be57_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0dd6b517306f5784_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0dde1920df85aff9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0dde3160e0a54de5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0dec65f651769e0b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0e00c426c50c0209_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0e1227c6a7ce7ff8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0e358706d453598c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0eacf349124767a5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0ec317d9966dd3b2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0f046bafd0b1d792_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0f067586175e7302_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0f5dfcac3d120cd6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0fad220940a2244d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0fddeb3962efdd08_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/0fdfffe6eba46f97_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/10178a485629cdcf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1096a877733b0383_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/10fd7d6124e4d72e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/11032b4e5da671e8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/110faf1a9240840e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1141acf5347f53f1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1142452cc29d27cf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/11468164831311d9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1157c00850dd5b68_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1159d66d76a24728_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/11d3dea117e4e7c1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/12087de799dbfbee_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1217dc0d7453f40a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/122acd66945389fb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/123f7ea1a8f48e9b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/127783ecfebe8e2f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/127bd690b3822b2e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1288042301ab26c8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/12e5a5eb10c67364_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/12ed6e0c7d56a241_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/131ca264f7539baa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1325fa8481a7a31a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/132b0e7dd459bec7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/138d74d00e8000f2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/139016f76fd6c128_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1399d56c20111905_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/13d208a7dd7ae17e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/13d82c16e222af44_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/142e3aadd5813fe8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/149946d408695a8b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/14e2d418790f361e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/14e337c79a886fe4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/14fca3726c4ef08d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/15145040f7f12f31_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1521e2653793ced7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/153a43edbe8ec70b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1584da5a6f6bfa9a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/15d1a282445f81b6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/16646c76c2e8593f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/16aa68d178442024_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/16c3f4ee1b023e89_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/16cf04cbd3285f8f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/16d6e927f24a3fe4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/16f708d5124bdf28_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/171afdb2872214af_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/172e83d82bffda3b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/178d1d3a1b04689d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/17e2302b71a16914_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/17fca8b7357edb3b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/183fcd7fb3587ac6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/184a1bbf2af1e65c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/18a0e6f035d0341e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/18b362061e38d63a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/18c117ba036b1766_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/18c7dc11e60e00e0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/18e9f9d3e847b190_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/191c8e2fff30a568_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1926a4a95540863c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1928efc55320d9da_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/194f0e142aefd903_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/195f5b2126b1808e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/197e15ef0ecd9961_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1986da519a7aa413_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/19b275543a8a3af5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/19c0c208d738096a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/19c6139780427526_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1a1eacf8aa865282_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1a4d13eefe83ebd6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1aae360dd5c44b21_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1b245d9ce2a1ed2f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1b2b3f5a8d1ed5de_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1b2d8621f59b7c18_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1b2f1374d1edeb42_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1b31159edb614fc1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1b7988e3dbb9adc3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1be9b706c84f0ff1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1c0a1ad33abcdb82_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1c1237015dbc4a71_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1c2d8c3d3499620b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1c6012c81fdbd7b4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1c777224d9d774b8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1ca03d1bb733a957_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1ceca9b4d6eb5670_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1d12121ab80a9a7a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1d1ddcabce7226e9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1d7fa9d8cfd5acee_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1d8761faed13d5c5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1d9cfacaf2bc72f5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1dd856f2076064c5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1dee20a6441594e6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1e07e40d9ba1377d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1e48f573f42ff12e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1e5163817cd47f94_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1e7a689b74a1e057_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1eb6d399df26f326_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1ebfe7141682b3c8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1ed6e2f8e365909a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1eee68989604498a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1f4f833f9e937061_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1f6b3061445d37d3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1f6dd1dd403d93ce_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1f85946b39540e06_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1f8bbf4e2cc8a6d8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/1fba9d1bde794f87_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/201e7644053597e3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/207a53d3f4a4c4bc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/20ef877bd3a71aa4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/20f19578ef581952_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/210611bc03577727_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/211521c538e74355_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/213ca5c8648d4191_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/219b0ff86e3132fa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/21e389ea828f93a5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/220f8ff1317a86ab_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/229a1b2ebb2e1d6d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/229dea6a99c768b9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/22bbb222562dac66_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/22f6a4127f9341db_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/22fc5259c07766a3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2322017a7cec6de8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2322ad5ab5eacec9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/233735051130e093_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2382930359057a21_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/23e29dd2cc879494_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/23edb159fdc38c51_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/241f98eb5758b744_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2421622fef0d09a6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/24885015e0d12af1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/24981606d8c4c63b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/24a2b1bfeefebe55_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/24bcba5ae3570423_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/24f10336a0dcf8b6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/24fe0aa9cfad269e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/250ee3a2188e54c5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/257b9ada9582cd59_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/259636e6ad60e2a2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/25acf518192e493d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/25c443f862dc88a3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/25e57d1b4cbb9c42_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2607490db60fe80e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2610091ba32016f5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2613975843fde77a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2643bddc83f8ad88_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2644f0ccddd8461d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/264a41e165e961cb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/266cfc60954f2555_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/273c045ca631eff7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/276495e1a7898a10_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/27746f4704d9a8a9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2792f101bcbc5920_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/27a093bc616a56f2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/28036b2f9a61a8d5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/28092d9ec53e0ac3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2828a49cc1d05ea2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/283de948517303b4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2844c1bc72cf6b9c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2845febc03e2c5d6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/28aac7fe4677f846_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/28ecd433d6bdc8a3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/290075eebdf2bd43_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/29300d901b875221_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2996419150fa1c2f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/29a183924fa578a0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2a1f1646c07af5b3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2aa739ad71eb52b0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2ad1eb4de7e017f7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2aeffe77907b88d3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2af188b5b2ea6cf8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2b21b507ca4f2488_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2b4e060d5c733a4b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2b89002990d8f514_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2bc4fc2ec2f4e1e6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2bfca563a9b1c510_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2c08217dbcec55cc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2c1404667170ec9c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2c38f027ab7350f1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2c44a35391602701_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2c5b119f2185f7a8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2c830f878a55283a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2c935985ba678cc5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2cbdd4680b257be9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2ccb67c62b421e89_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2d4e554939dcc22b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2d6ffdfbd670a4e8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2d9198c3ce89d504_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2ddfe59d0886b1d7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2de5d3a037b1f78e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2e402bec302884b2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2e45d142ff1e963b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2e4de01dd356ba7c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2e57bce1caf9f636_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2ea2dc6b70ff8814_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2eb264e5b416e2f1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2ed04619808cea76_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2eedd848b6ab7ae1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2f021e88a10664eb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2f143fa66d2abad2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2f287e3a12003afd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2f65bea54491e6ce_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2f9ecd8177502d3b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2fa9b4b125c820f3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/2fe227974267babc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/304242ea3cd3f603_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/306c125f990f1e34_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/30a5c0ce0cd41bd8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/30e6ba544b000446_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/30f31b5be62e6141_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/310253d581773c86_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3150842c2b69f451_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3157f30349d5c830_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3164cf42e96b9664_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/31766572165adcf0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/318069fe7a12361b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/31825ed82e12ff23_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/31cbcfba8959bab5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/31d1fa75750a98cd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/31fa8d08ddeed6cd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/31fe3b9b0e908da5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3266c937d177c4b8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/327ec1692326b850_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/32a57f48a105bdd5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/32b3bc68e5d64382_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/32cafaf33bc2c9be_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/32d24974242ba5b5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/32d775a52f0988c1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3322987fb4e5f69e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/335223eb87e63f70_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/340bdc081e2a5c60_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3454d303f0db69ea_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/349d0fa66b6f7353_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/34b4ef0d277b8e33_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3524cdb85e1c2e6f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3552d235a178b862_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3591944e47cbafa5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/35924c2bbf71aa22_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/35ba0d9097838858_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/35da60985c2dbeeb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/35ee6c6f107fd8d5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/36132fb4703a149f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/36156957d68898cd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/36346738c617632a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/36b89c292c66776e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/36f81e1c80532942_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/36ffef5ba52f0cb8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/371cc8553878e133_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/372bd7612bf6bd00_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/375b11433191980e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/37c92a36b6dccbd6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/380009669047d760_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/380f6ff16f81b5e4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/383141f7a351e835_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/38a193809def952b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/38ab98c1b20dfa1a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/38c2ee0d1a510bda_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3941bdcd93ad2df7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3983d1239e231701_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/39985681bee9a634_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/39b2d5bc8d8f917d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/39d8f9d2cc12dccf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/39eade9f85302067_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3a1b54f4a5e606ac_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3a9d11b1d74a5b62_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3a9eaacd269b4b43_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3aada03f5e894cbe_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3ab22300cd780469_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3aba399b10074a45_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3afc3ae95f99d097_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3b03164f589fbddf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3b303c31c97202c4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3b8d1ec10a83710c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3b9aa486a7310571_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3badc819ca5054bd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3bff9eaec8c07f38_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3c0ddb0750a7caf6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3c251d2e70c72b2a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3c389fbac50fde71_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3c475ecc757bc2e0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3c8246a7cd22b0e6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3c973a9dc522f8ff_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3caa3781132dbd17_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3cca62f88cc9d97c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3cd2d09fa3471ce6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3ce9827900edc902_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3d51be5b2bd90e42_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3d6891da081309a2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3d727f726fa9acb5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3da7b09e34cc3da0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3db0ca366bffc794_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3ddacae3124bc0f4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3df0ed09cd4dad9a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3e3385cba76d0c43_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3e34161bdad6291c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3eb4043cec27fb31_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3eb4cb5a10d0d754_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3ed2de1496b80530_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3ee297b7133968ee_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3f55fbe2cb6ea028_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3f76f44e0110c252_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3f9b07f4d9776d0e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3fa5010ba43af603_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3fd426280c718a93_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3ff9164026b988a0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/3fffbd966f1e344b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/400ec95308416e80_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/40587c988186febe_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/405b2568aada377b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/407a4a96873d600f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/40ae223230c6362e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/40c5d92260cc3ebe_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/40ecce87fd9983dc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4116ce160c5a6e2c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/411f4845e036c562_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/41674afc7a261c25_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4191849d0c93de51_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/41ce8f08592c4cdd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/421cb3649e11c234_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/426fa9f71dd54207_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4271504103873c3c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4282261a0089e377_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/42b06fe95a866a81_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/42f14fbeecd05491_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4301a3ba6ece1351_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/432b9114652dd512_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/436dfe6b02a2d882_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/437ad48b0920ea3d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/437c33757325e008_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/437de0b94b9058ab_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/438e300b1d3573f4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4434d2f54d1e5ded_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/443f73b73e8357d3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/44655f9a579aa95d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4493950ac7739e9e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/44dd0df10be05489_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/44df76361f739a3c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/44ee0f8bd8bf935c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/44fa259f920d016d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4505aef9735312e4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/450d27050700ff6a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/453bc33754d7ea6f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4560b8166b4aef83_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4581e3ebe5de5fa3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4588aae192e32a91_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/45d0929711fb10b3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/45da82391e527246_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/45de2d3e467d1953_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/45eaf5d8ff024873_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/460b8579975c5634_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/461efa0458c1861d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/465cb46aa2ead696_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/46ab8fb6e79c81ef_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/46ee644196c94c5d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/46f46b836275d129_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/47590053ed0e521c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/477346c12c37810b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4774ad15e1c3b13c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/47a1a6bf98093ab3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/480d40260379260b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/486bc2d9877903c5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/48cd8aeded69a052_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/48ce8ba5bbaeb26e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/48fefcc34bc59387_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/49010ac5048163cf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/490f8cc9433472c8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4972d547c8d9a8ff_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/49c98ee4c898a6ba_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4a2286982eb6d59a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4a5776c24dd8b9d7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4a75d4a1be65552b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4a803c0571b45b7c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4a9c75d9a8495070_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4aa81c9f7bcf8cd9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4ab4470c01101008_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4ab4b04417603481_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4ad85612a80d2bf1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4adb16d27f8a9bf9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4adcb77a4d475002_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4ae1048d1a4cfa18_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4b0f6edc05f702f4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4b122b6866d4b308_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4b4512604ff3cadf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4b45f007b17fd1f8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4b4ae5a5710f931d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4b794363dbccbb60_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4b89097b5d4a8e59_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4bc250ca8ca63544_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4bca0d15e6d73776_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4be9a362b1b86d0d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4c00d3a08800a442_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4c7062b1e991c705_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4cacbe29e41d5f50_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4cad49fe5b8caa3d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4cb46c78ed65edbf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4ce66c31f55163e6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4d1a7f0f29f500ea_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4d2b8a4b646437c9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4d69afd089b45c3e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4dc8dc2c39c9eb9d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4ddf478e74394504_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4e0426d3ac89c463_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4e1f8e4b81c4aa15_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4e203d21284751a4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4e368d1f4f6b7926_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4e6a8e7faac433ad_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4e7727c6307d0106_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4e9d9c87276fa2da_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4f0aed8fba47422b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4f74d84a4abb4620_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4f7fe195bc5985dc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/4fbb07de4605fefe_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/505a048b3f3a770b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5099db38019cab64_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/509e48e3f691573c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/50d2d5908d168787_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/50eeaedb08ef7bf1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/50f13fa05909075f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/51481893917a58c5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/51489f1f43c45ae1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5175fe24474ed786_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5186fc6134ca6b58_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/51893cb9993df2fd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/51f39553b206055b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/520408879a4ec3fa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/52390384e390f066_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/523d91dd973074be_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/526f04054b9ba1a1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/52c5d7707e6ffd71_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/53150029fec67181_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/533a6d95cfe1c774_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/533dc10bb4f01655_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/536f53f4f3cc1c1f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/537361a94d2ba3f8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/54157a6bb8d01552_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/54163a24811fbe59_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/544232310d1a0a06_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/544c78bffc8bbfe0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5460eafad383fc72_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/54b647cfd21da07b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/54c3ee2eb6e83427_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/54c4e8ffa359e339_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/55134f4d6fce5155_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/552d7e46d575100f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/553ef0289d8041ac_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/555a4b1c372924a5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/555e69950f19d2a0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/556df575ba6555b6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5580dfe66b631089_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/55a20cce7e139850_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/55b2c230ea0f7ec0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/55ed72b0b4c0b90e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5624d16df1dc012a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5633ea0a073eab94_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/565044250f07dded_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/565cbd4add2ca513_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/569ed939be2ae455_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/56b98311f6e1ce55_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/56df40c5e030aa37_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/570b3afc13daadad_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5710807bb4f04468_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5713b0c70cb71e57_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/57302fbbb0547c69_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5753a7bb4acba14b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/57bef06a2018fa92_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/57c5890b58ec9cba_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/57f2e3b07375d935_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/58091d8de416203e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/581392a987ce522e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/58538c72b62eab18_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/586323b9cc44acf0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/587423ef57570c1d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5875768f42ba8879_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/58806b307a035eb3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/58bd9e36f3183fa3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/590947a73047a3d6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/59443d8e24f79b28_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/596c9f1a6fbccf8f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/59885a806de3e561_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5990f89f991c18b4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5994c89e37b109ca_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/59afc5038bc30c22_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/59b9347454bed8f6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/59c4196ed0a36c73_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/59cb8c698fe27bcb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5a13c93cec83ee6c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5a2a79b1d5ea0b6d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5a36d34f9f9c5f31_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5a5bc0d7cc9199ef_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5a60368a6aff53a4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5b44fcb3d3eb0bfb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5b71642cb156fc61_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5bbe8c79a1a95b0c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5bd76c48a7150637_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5be8001c837208b4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5be8894d37a6eaf0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5bfc6f8f01fa1cf6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5c6b5bad59eb6e7c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5c870ad31e6d992b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5c9482d5b9196b8d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5cba37b8a93e2dd4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5cbcc0bd4ce1ed3c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5cecc1c0fa35afb8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5d13e0a89a3af56d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5d151302bfdf7af7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5d60467fde8571e9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5d61c51bf35f3fcb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5db0571c1468fe36_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5dfe38809ca2a4bb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5dff6b2b9db266ff_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5e369cca8a27c08a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5e3edddcfad58999_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5e4c54b8787eef40_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5e62d1a1b57aad17_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5e722cc5b243bb01_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5ea25ca1e577613d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5ebf17410ddd92d3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5ed4a21a0d1373a0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5f40a40d8b2921fa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5f4845f2570c8ab8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5f4b33e80301a40d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5f58f2e7997e695b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5f8d70ed44ecf360_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5fc3eccb67d56daa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5fd63906e314367a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5fd8316d6e0bd266_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5ff13e2778a86c72_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/5ff8fba7fea89721_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/60194849835ca253_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/601a10ddfbb9c2de_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/60287196bd7992cf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/604a80ceb07b6df7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/60836dcc22e43449_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/609264a7b572a08b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/60fd5c9749306921_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/610fa90a6de821a5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/611542e66c4b0316_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6190e898bc242596_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/61913ad81b16da40_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/61aa31c4f38eab73_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6200afeb9e1e1abd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/621d42842da221bf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6253cfa8b217c3d7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/625706368aedaa22_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6267280605709e54_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/626c0c79c10b800c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/626c6b6d0eec4103_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6274e40fc657c53c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/629fc45b08801ca7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/62b0fe3eb0975e37_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/62b5c289ba861bcc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/62e67a6b5747f628_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/630fced12278575a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/63109c0e7b791136_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/63608f1c168e651a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/63663a37d12a9fb9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/638d65a4c196afbc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/63cc4f2c8e0093ae_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/643d8d3fff6f3f42_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/649fb27e438fb271_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/64a34be010ce7641_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/64cf8fa50ab587c7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/64d94b262b02af3a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/653625facd807a2f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/658e8cc359c7058b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/659f8af8267fb073_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/65acb43efd6f20c7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/65d13874640b7b3e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/66019e29e5e9d7b7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/66105212617920bd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6624b597f350c831_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6665ca578852e405_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/666c2ab6b3521f96_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/66762482b6f17bf7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/66b122c75d616e34_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/66d78b4be0e8cf1f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/66f337b37a30acd5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/66fc7d227f78a7f8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/677837b6530b7f47_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/67d7942703a04f84_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/67db8f53b8d0a61f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/67ee5ac5f66be61a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/67f17ab6aa2e7031_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/68129d8011ace931_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/683280cd5088b38c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6848563d632b0849_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/684ed505a1e6e9e0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6861ed4c3855805e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6880e2ee05e34698_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/68a5db9893a28565_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/68ca6b0e33229f02_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/68e1a39093a9465d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/68e85048a2279e6d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/68edab28ce85d0e3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6975a69b96eb1f80_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/698df06e14d99b3a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/69a448ea48c41e2c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/69aa20429c175723_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/69f87704a160d8c8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6a0b0913c3d0eb33_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6a2e63acf7386ad1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6a319d7bc16543dc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6a3bba56a6d1a0aa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6a5c8836a6ef196e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6a71d04967ca1e6e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6a8ef02504edfba4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6a8f5f419e5875fa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6a95cb26a8f38f67_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6abd9680d4aa1a3d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6ac41c9f11ca5883_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6ad01ae2594b5ab1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6ad236e469921fc8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6aed182a2189d79b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6b3a61280f921279_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6b57d6bd0be1f57b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6b783eae58019b9f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6b7a99623c729908_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6baa4378255f31d8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6bb9272e41c8e2ac_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6bd492f9684fdc81_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6c097a03b14e96c6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6c0f9ce1a4ae599b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6caef1a20b6d5de7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6cbbe64e95fde89a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6cda0644d5c8d202_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6d0da8e2922ec574_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6d424afa1cca4a95_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6d4fe3ff2d325efe_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6d63a7ea73d394ba_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6d933ed1bb3cdbfc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6de111dbf4cbfb8d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6df7998b8203a9cc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6e275411cf2074ca_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6e3700477dcf88a9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6e925b3ea5b6bc14_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6eba333487620825_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6ec00eec02041942_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6f0538f6454c5c5d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6f3829a3426d9d85_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6f3a4be0fe2ca08e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6f4a7e29f134b1ac_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6f6aa50e9c4c83bc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6fb822fe6c5bf4eb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6fc279b7325564bb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6fe12b8a0d7d065a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/6ff7e5ee3509ed53_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7001dd16e0d95e7d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7029f0b9074141a1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/703b82bd17bdf16b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7050dd8b17bb737e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7056e5020beb47fa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/708268b920a0fd1e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/70bdca58424e4838_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/70d5a135495b9d4c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/70f59bf6cc026175_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7161df71674bef75_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/71a0d5093ab65e92_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/71c06fde8f72c2e3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/71d2dbb7b59a0449_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/71d2e9a851ce7bee_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/71e2f4db211ba73b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7203749c204e8784_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/720bf5ca6e4b5e19_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7218bcb947f7e8b9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7283300e455993a7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/72a1663cde0bd769_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/72bc2ce0a7257c85_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/72bcf411c22a54d5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/72e5152cb8d1db88_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/72f2db310e59debb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/730c41a3a3ebd8de_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/730f07eae650d51f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/73370d2f71924a36_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/73383b66e7fe563d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/733cecf50f05c693_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/735c0f2ec315a569_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/73762724a545cb18_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/737f2f0170bac011_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/738516ce6e559b90_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7423c0dcd2e6821c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/74c341ad859e0a41_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/74c9eed2a30036f3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/74e9b18298758114_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7505295224d651a3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7509559e9cffb2dc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/751625253c6fe0ad_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/757375790de676ed_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/75bb6c79a210124e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/76161b18537d18a1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7616f7e1e1849ea0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/762b127a413c0d84_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/76781e9304abf55d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/76881c4a769db0d5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/76aac1afbb2b4483_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/76d588eb894bd9e4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/76e0a3c4b34e851c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/76e8b8d041ba8b3b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/76ed98e3defa5f3e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/771aaac201868167_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/774ed73deb6f7d66_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/775d4c23d3f1592b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/778aac4d5e486485_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/778f23f8c765dd7b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/77bdf9ab4e31bec0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/77c96d6b33d20047_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/77e4c36ccccd25ea_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/77efcd9a325b32ce_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/77f5ece4e4c0e8d4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/77f9737772e25933_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7802bec2b859c317_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/78c4acfbff5aa49e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/78e78a8a559eb92b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/78ed79bc5487503a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/78fea0f79371c407_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/795504af18e3d36e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/795ef9ebbc368d6f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/79771368e773ca2b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/799c56c6ab033799_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/79ce225d45bb29bb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/79d66fd020fc5d2b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7a0dcaa544419ecc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7a2e6bb54765f235_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7a546f29aa5a20ef_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7a693e38b1043979_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7a8922feebfd81a9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7a98abf63c88a6cb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7aa0c538cea637cc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7ab1a902104dd283_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7b05af27231e55cf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7b1470e67fd10ebb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7b35e8951779fd05_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7b9323712b64043a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7baa1fdb32c334d6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7bf4631a0c8720a6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7c181668f33e7637_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7c2beebd3bc4ed55_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7c2f9975cecd257e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7c355ae97b63cba8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7c6c5af6f3b81f6b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7c7cdc233294fc66_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7c9d4796292edacc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7cb3d0d8b577b849_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7cb3d22c3fc5ead5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7cd41101f1864a79_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7d053fa0dcdee1b1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7d13cb5bb3bcedcd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7d5f60b7b64901c6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7dd2f9b2978437e7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7dd65f246adeb013_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7e1da399561150a9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7e218874440c0cab_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7e4317fff948564e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7e81c106357a79f5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7e9121ac9923ad80_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7ecc898869961f04_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7f2a9c1092e2f078_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7f8db32dcf1c1c59_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7fb5ac725dca097f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/7fd18a3d660165ef_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/800fee8204040ad6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/801b4ec129766b4b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8022019877b53019_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/80450f7a98f2e784_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8056edf614ec72c4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/80646e8b81fba448_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/80bf81a1ae0a16f2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/80d0f43e033f7793_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/80eb6fe2b744d02a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/80f645a91c23f749_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8118890db748e087_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/81dcfd5daa9998b4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/81e09acd1acfa467_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/820275419acb8a6d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/821fe0fb09b1f0ee_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/824648d7561df2db_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8250ac4267c224e3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8325ab8c89e321e3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/832cfff83b64c6ec_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8377630e97591488_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8378f1fc754585d7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/837955b84a6f644c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/83b987b25738e9d8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/83e0599b7da314b5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/83e8c84c43413e28_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/84146925a38f67ae_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8466edba7ce356a0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/84b6943a01803dbb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/84bb3ec1c81eeafc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/84bd677fd8fda652_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/84cd4ef4f6f113eb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/84e0e240157fce4c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/84e9143d6a4dcd68_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/84fc82174d9893fa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/85106770f2cc0288_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/851fa53b16f9fdfe_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8560d8aca245ecf1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/85814f7d29fc5faf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/862bdc5c5183b894_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/863bd9bd4f7987ab_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/86667e07fd901c9d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8697225c421085e2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/86a068bd0b88330e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/86c500c9d815e204_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/86dfbb0fbcef9329_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8710fba82ef1e36e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/874657ebedb49314_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/874bd8566ef1affa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/874e4d7f6a8f036e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8761eee22bf3cdfa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8769e46f49579524_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/878b0f723bb46fc9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/87e217c54f9938d6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/881b1d9cb6650ad2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/88589ef2a5b8042f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/887060a96080c531_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/88997d9a03d27ef1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/88e1ec88311d9a88_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8907f85482f3306a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/890c857994fecb07_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/89a5733274a50fa9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/89cc096cd0755a42_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8a05e4e43273d585_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8a08669b4ce8f5db_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8a1837840c028333_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8a8de568d2b8f098_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8aab09f10e010522_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8ab931ce361ff5e4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8ad73b60a08dd8b4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8afacaa8e4b8d315_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8afe7611973b8ce8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8b09f394c7a7a8ab_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8b4bb6f6e367dc3b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8b5e083a440b8c0c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8b770783e85e1ccc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8be45d7cbfaeaa13_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8be49bb2a60e3901_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8bfcbb9e9e80b920_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8c18827587e09dde_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8c2b0bc13bb87ff7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8c3d88da48c3ac4d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8c62ffecd9ddfaa3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8c9dc5198c52fc4a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8d438b80a92619fc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8d53311638293483_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8d93bcf25d8afa12_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8dc4249d8ca7f445_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8e3cb42cf2db99ed_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8e5d712f5c5cb849_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8e7b64704dfc6b29_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8eb0d7bf8f048509_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8ec9eafdb8dcbd3a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8ee23f5fb7b992a0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8ef4604a4c6c7c00_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8f1c951a324c9fb9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8f9ed71433ebe11b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8fded915ba231121_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8fea7b40cda108d0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/8ffc7a94ed699576_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9007f13981ed32b0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/903b33cc1f888c6a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9085299abb3c6c6c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9091a58946142011_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9095c065b002dcf2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/90f567075cd847aa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/90f77973b995aeef_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/91435edfa87ddcef_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9147451973ebfc62_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/918ec0849a80a82f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/91a60acb44e7105f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/91b90093562215c1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/91e434202ff4699f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/91e66039c9ba5f9c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/91f64c08499c7bbc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9223b8eb6dc70d27_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/922eed0c2dcbdd29_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9294e45f3bff904a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9296e56e31472ff1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/92adc508432f64a8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/92ae08d81843a378_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/92dfe30cb7ce1a91_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/930019aee123fd40_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/931818ab0d0f5038_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9382c578b0379b59_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/93b42e953eedb9a6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/93c0aa87abeb5cce_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/93d81321f8c35eab_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/93ee9fe8baa5f382_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/94005c643ac2c379_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/941e0555e2786530_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/943f561e177d18c3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/947a081d5ebea9db_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/94ab0888ec493770_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/94ac107a8a00472c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/94b3032eafa99b72_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/94c080c3bb9e1c66_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/94c598cbc34cad40_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/94d2d44e858d1b61_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/95ec927c7cddd73a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/961c7a9dcf1d5fe3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/96631f4a4616af9f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/968735330819aa75_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/96992ee0fa05edb0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/969eaccdc8498bf8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/96a5e8e80fdf0dd4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/96cd18a82bca110a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/96cf938d4e1413d4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/970e41ca4789de01_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9719ddbc6586879b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/972d83b7cf595509_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/980588dca448ef8f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/984ce44f6276cf4e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/98ddfa3ddbbb211d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/98eb12db0275d04f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/993022421e1e101d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9965e003a6a81489_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/99710830bb190759_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9974a06ea92cf0af_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/99a4208c4258dcbe_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/99e63bc5eaf46233_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/99f82c136e24ebb6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9a50d1a3f947b5bd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9a75b89777d986ec_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9a87711fb6272204_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9ad0db62b9d819be_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9b6b0037fe7be577_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9b6c7a475ae4078c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9b75d402a3441fc1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9be57503a8743be1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9c1c32d34ef9c6a1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9c2e71f1dbdfb232_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9c7aece619e9032c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9cbd165215251c66_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9cbeb5e403ae94b9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9cc77f8e6efcdaf8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9ccdd4773c3a4ddb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9cf36a758fe7bd00_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9d2749af90c15c55_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9d2f9bfd51ce6b01_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9d4ca6f24f6a0f3c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9dd0ec45b55c530f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9e2a185cc6c0ced0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9e3a89484c07bde0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9eaa4c943f39782b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9eab81a3098b38af_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9ec9c949891ed098_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9f745bce06206805_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9fbddfdebfcebedd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/9fc4259e67e2c2dd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a05e5bf42b9648e9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a084d5473883a42d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a0a26c81e4a4488b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a0b4360c5e453039_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a0c056bb7e487481_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a0e20476e4d3fa20_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a0f29b50e1eb04f3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a0f6821ffb3d849a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a11b409456cf8378_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a12030f73c744fc8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a1417b69b121007f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a14bd9fbd19b3332_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a1a02ef8cf5614f3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a1c0ca99619f4649_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a1c8dbca8bc19f98_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a1c8fd8de72ba8b8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a1d03374e79d3eb3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a2379d5d831f10d0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a26e1aa9164737fa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a26f4b3b4946e409_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a280924d7339e457_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a2b30216ae23dfe6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a2d4dc6daf910b90_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a32868c7b3ea5a0e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a356301a502e5515_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a358828010719c5d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a360d61ea4f712dd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a3815184b4f0235b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a391aa4153c27ea8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a3947b174d72260d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a3992c99ea5441ee_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a3a6c47471b63bbc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a3e4b02c25f89d12_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a40eeed22dbed6b2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a442c47980ead9a5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a448f8bb603d36e7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a4565cd0b300192b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a4d14c01826dce95_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a4d8f9412442db2d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a509309a53588146_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a50d122c9a89f6ac_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a540fa1b2ec78a9a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a5776e47c652622a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a57b7d40ba013ac2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a58a7f3dfdf4b5b7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a58b052807566790_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a5d2ac2493a8a70e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a5d6f34784740edf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a5f6dcb787fb910b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a66a15bd8cb34a3e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a6738d927c36ce4d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a6bda7995c0de773_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a72d877a8cd74e38_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a78d3302d1e1fe45_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a793614eb0e9ccd6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a7a32dd5a1f5679d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a7c15927fc995bed_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a7d40c53649e3d4d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a7df0d25f407cbbe_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a7fcb27145f6f457_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a803477701965e40_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a8453c214aa05d15_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a87cc4bd2a2d80b0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a8a06a4e45489065_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a8b1c5a03c90ded8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a8d8a62e23921649_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a8dbe2d2555f10ab_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a9356626b3a0cb46_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a94115372be2b54b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a9572c2f98e30789_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a95ee6427ce499cc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a9da3fdb2acdd558_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a9f2d46151c177f2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/a9f3e8ce2c2d8433_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/aa1291e31ddc2870_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/aa23cb0643dd0d4a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/aa2748cde2a77e23_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/aa2b05f5abe3b557_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/aa736dffce637cb6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/aadc4a8329f560f9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ab162df799190e99_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ab2d1d8c2fa6548d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ab45ca05a88dcdba_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ab495cf249b91757_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ab99dacf364e85d2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/abb341d6cd333fba_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ac5d03090ef9552f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ac6e64ccb945cf81_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/acbc81f186614cb4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/acc75755bb8f0960_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/acd7a5025b29374f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/acdca38af500f7df_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ad12eb66d5fdd06d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ad1a11958783d856_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ad24cc284c377285_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ad3049528bb028b2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ad37fe9405ee32a0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ad5feb0d33864d2d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ad7339f4f81de3be_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ad76698a9bf36a23_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ad7906b84cae442e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/adb839757026c9aa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/adced6b89785c1f5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ae0a5853e39ee4af_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ae657242c6cf7a65_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ae6da509422a338b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ae7b93f607203bbb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ae7daa7c1b6537c5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ae802da079e6938a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/aea1960b3986f084_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/aea5223e1ea44a02_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/aed6dfa2cf63614f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/aeed1d1ca4046f7d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/af14152c2e4a27ba_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/af248183bef7f6e5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/af2ac07320e9077c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/af2b0e3eb8b71292_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/af35c1dd72015a67_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/af542e9467474c77_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/afbfe025c9a42676_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/afe883e27f868f89_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/aff3634aa3948f19_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b016b98724bc3fa1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b01b1d59e8be3386_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b0824701988a7fe8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b0f22aad0308535e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b0f91d04e5bfb9f0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b115ec0d338f2bdb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b123992138f67519_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b13b868ecf4f29ca_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b144d4016e6b751e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b1dce01220425176_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b259c236f01b6d49_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b2631c643a4fabab_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b26bd6d66a9e6d67_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b290bb00c332dec8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b2a1cb5fa6eb7af1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b2a1d542748ad67d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b2ab9c46b4e03bfc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b2bf2547085530a8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b2cbac2a6b247d7b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b3784d6c74a89b99_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b37c78f9a38ba724_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b386478ff1d903f7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b3a2d7eed0671da3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b3ace1fe3e018c88_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b3bc5211bd6ff1d2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b3e6039c948ddef7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b4169aa9476b2249_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b424350a8e9c30ab_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b436148b2d9a968b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b46db9d0586a3bb7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b47affbe1366e6fd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b47ca1bfe3bf36df_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b47e570235cb726f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b4e2ba6767105256_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b4ea0141cb80accf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b4eaffdb67bf6295_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b53426692036a4b6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b53e3037413af5a8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b53e742488d022e2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b5859282b7d56756_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b58e974a678e74c9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b5e25eb88e9372fe_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b6291989403d6e29_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b76cfa6ae938880a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b78f06ea5cc9d13f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b7dd48580f91d3d7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b80d01e49e06f8fb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b8758addd88db0ba_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b8771db16cd1a1c7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b8b6e5d6ec8637b5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b9037b4dd2c7b462_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b94c24f18477c4ef_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b9684354ca3a47fb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b988d38f0d330ee9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b989a645492a5e72_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b9e271201e24ba0c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/b9f420be9f85ca25_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ba16e4041cd4d346_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ba517fc258cd13b6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ba5da23ecbcc40cf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ba969da11e14504c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bacefca3cb9e7a51_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/baec6efbe6162f3a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bb1a96b6e76a2f03_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bb40595ce62ddfad_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bb493c49c9217d3f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bba023bbb2bd95a9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bc3b705cb22e1ca2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bc499207ff170475_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bc83469698ff1bac_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bc9924c3bdfa6435_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bcca56bb8416a0ef_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bcccc68533cfe99e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bcda6c89978624d9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bd0be6de4201ca04_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bd166faa6f25263b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bd4b6c88131d955b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bd5b2c47a26dbe8c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bd65e226b8b6bf02_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bd788ec04b73d138_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bd7c54801a4feede_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bd9ff30a2e14ce7b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bdb08e2d27d1aeae_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bddf87b029f5bac5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bde1b7a8a386517b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/be17a41893873bd6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/be33bac449587d7c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/be4127d61038b1af_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/be41ad6be4d12c8a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/be511d5227a1e896_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/be700d58326805e9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/be746ed1f18b4b1f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/be77143406494440_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/be788e34ccf8f858_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/be8146a39b7191ac_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/be8374c5f4e14526_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/be893f8391cb2a82_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/be97bb2858bceb5f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bea26f243dce0a36_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bf968154125e1aea_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bfa9f872d9ad50de_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/bfe7fca7fba00aac_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c03ce1e5f5c9e299_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c03e706dafcbfb90_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c0462a48d2409b96_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c048353f64af8bc7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c0abf6fc5ad4f7fd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c0b2d8c7c833533d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c0cfae8531e35a4c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c0f0c0d6bfd5f294_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c0f97f3abb47da9c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c121dac8f4e568cf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c1365df546c7b3c6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c174a9097d13824a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c1ba2d6ebb269b95_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c216c6345e77a987_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c239eb01bf27d189_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c28d4fb481cbcf15_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c2acd8a0da45984a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c2ccc6f3acd04a35_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c2d113ed9e60e08b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c2e8de515538ed41_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c35148c8e2ffdbce_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c363bc052022c7e5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c391d84509df3bc3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c3a83364086dd048_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c3ba9ba12f07c23a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c3e9fda9c69d6a2f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c4224ebeb435c5c7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c443bb97c969e0d3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c452eb696771b82b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c482ae2c20c8dc67_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c48e002026665584_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c4908375948b6d07_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c4b6b18c2743df04_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c4da42f2adc2b68b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c4eaa0c99afc6ec0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c4f2e7b3ffb2e08c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c524a6280563a506_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c58af531d029d8e8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c599279392a2b570_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c5c94f905a1a4f61_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c5ebde8eaf0d73e2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c61e00e4ab8e0ad0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c647335f8f79319a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c65821bf54d3af81_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c661a6f2c2603068_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c66ce7937f0520ac_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c6710a2d4dbd6472_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c6abb495ab9068cc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c70d15f9693c092e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c7182f4b9b811c5a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c718943ff9954b28_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c729309154763dce_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c7420378bde25254_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c74a1e8b6d2b0696_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c75b401d70e7a658_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c774f8e1e15028b7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c78768a986c31cd3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c7be6164940993a3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c7c29cd188b590fa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c7d27b0dfed97b33_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c839cdfd3ca2466b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c8906a227abc9196_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c8a99cea987ad6f2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c8cb6c1805ec5b4b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c93d4a5e7e4a98b5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c9753f8bbd6749f1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c99a83ff2b4cffda_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c9bdaa2afd6d4159_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c9d9a96410e6b629_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/c9d9ae3de2df1ac8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ca0161e9efa2cbed_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ca077e9171fb8803_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ca12d2febaba91a8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ca1c19d4e0cf908b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ca63dae1b851b19e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ca7e89387a1f705f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ca9db5487014826d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cab3cdee33a10ee4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cad99ebece7b6b64_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cb0a62560219768f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cb2bced53f5d1a63_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cb554e07e174364b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cb66e066f5706a6c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cb6972a4d13750cb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cb73a537db03c2b1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cb763081f48cd230_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cb883c146380ddf1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cbc769c71fbe9502_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cbe9f4ff44b33a89_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cc02144691955f7f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cc034e6e59e24203_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cc0507bb0fb19f86_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cc1a6ee727e5906e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ccb96190d5dd0de7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ccdcc5485acdfeec_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ccdd4a450a87e62b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cd18bec3f41817c6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cd3237db9fc6e85f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cd4e683891b0aaf1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cdc436bfd908c042_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cdd5275ae4300a43_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ce2984e26fdab37d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ce3025155c842089_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ce5bcdf0a36fe550_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ce7d51d7669e0cea_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cf0a7bfc6205be6d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cf16026085d18b68_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cf2630fd7e04f066_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cf3e49957c2da15c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cf405a683a5b8312_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cf4c72dac3d77039_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cf5a0da0013ea63f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cfab6ccf39cedc87_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cfadb6d68eb28537_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cfc9b483a332a69c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cfd7a058171bba45_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/cff8a7e2becf1d54_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d02ab900dd7dbdd5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d031481305489c7d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d03df0113f999bef_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d064f6b471ce9e59_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d06fda05abf57f99_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d07ebca50cf59954_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d0e395948401ee85_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d0e654e62abee06f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d1104405b79f2735_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d121d6d303e38523_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d13c8eaf084a4716_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d15f4b8a508bbd8f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d171101b77baad94_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d17bf29c67111195_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d1847d290c6b4105_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d18b1c478e9fa6e8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d18e3f76a8a788db_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d19f494228c20d42_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d1b08765814d14b6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d1f355b7560b8412_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d24d479c770603c5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d26c8f5515b201ce_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d2959b8a8598ab06_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d29ff4575b095f19_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d2d084573778a003_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d2d70cc4ef9f0f27_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d314974ccf88c245_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d34ca6387d620e21_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d37532b5eecfd01b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d3a9b085fe6de7d4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d3d9d8a1b1a7197b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d3ff583baba73289_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d4045d2ef4ae836c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d43609e90e29ccc1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d43e821b95c726b0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d4cda7d2e78a1309_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d512ee1a47b7acce_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d5490afadf621320_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d5bbcc02daf5de29_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d5cae2601f814250_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d5d296160ed7eb5a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d602752bd054be81_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d65844433feda6aa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d6b8677b2602ee6c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d6c37d8436365f7f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d6cba3e223012ec5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d6d49f97c7ab6273_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d6decfff845f0e05_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d6f52b38806e5567_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d743d7284bd6d28f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d76c26539937bac4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d77370e563107894_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d7b5b48e5d5985a6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d7bc44bde2d748b6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d7f3924f2e5e20ab_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d831dacb9dddcb98_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d8338e20acd916f6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d85d5c0ce7adaef5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d875c63f4d5b311b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d876dbcf3f7be65b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d8ea5d4fc7ab6d1d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d91abb933004a8a7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d9265a0eba82fb43_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d92d4770f43105ff_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d93c4e4b7902f6f8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d98e80610886fc66_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/d9caa59207c6261c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/da0d5c1036d2b6c8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/da4f52875ba674b2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/da5ab0796a279e85_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/daab90a1ecda294c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dadc292a780b3b62_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/daf1e24c7c44e917_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/daff0e6e9d2a0a83_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/db28568df4c1e291_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dbb6c2c2da7ec9a3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dbc729139f394f4a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dbecf26060ffb931_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dc779db0a236b0bf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dcd452c8e80c4387_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dcebb230cb6f1c4d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dcf034c865a34d89_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dcf4135bc98e7257_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dd3d298e56cc8a75_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dd79c9fdccebd6c3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dd80502f5058af03_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ddb3050b62963b4e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ddbf2c2328421724_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ddcfa9cb1360de93_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dddf9a3e50c3046b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/de0406dbab5f7c7d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/de1fade90a9ee998_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/de2c40e366749c05_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/de32813a3a2da41e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/de77cc7d6c250825_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/deaa776760edf449_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/deb8ad403c7e46cb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dec3fdc4b3566fe0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/defda620b62f2321_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/df4cee27243c8c8c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/df76f6b02ace52f9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dfb1220b3d3f0c63_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dfcc1ae2d8096c61_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/dfd4c4f882def440_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e00581b423e7d8a3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e007beff137de5ba_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e01191dee3b5c2fc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e020c313f3246df1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e0342d2362d72806_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e08891043b07d11a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e0b9c38ba2890c4d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e0d59ec8f12c44ed_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e128d5e67a96d3dc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e14d1f457096f209_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e184fff583971e7c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e19ac6acd8b2fe7a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e1b11f9cd5f4b126_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e1b4a123c43556a9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e1b8b5581f98d151_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e1cb1c4cafef32f5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e20c1e68de4fee6f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e22b992f4cf4584b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e2478dbc754d852f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e260a2592e0d7e0f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e29be41dc68fc58e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e2ef280de0dcc1fa_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e325601b9a40cbb1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e348f7dac5aa7646_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e3a891abbe0fd1a0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e3d4a0b9a7e1ac10_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e3f7450c23602adc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e42eef9156962e39_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e441f80e1878b341_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e445559ad2c7f655_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e47f2b9640b22a70_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e497ad39557f6829_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e4a53b0e80b31657_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e4b4d3b1bfb7c0bf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e4e224853c4cef1b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e4f9630756a5f259_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e51973dfd8665cf2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e53feb39b7ea2bce_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e5426590bfaeeb6f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e558117a426ceb11_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e5aeded06e7c300b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e67fa24dee98bcc0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e683b1976f195e97_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e698436c67f87689_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e6acf4100ffb6f5a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e6ec9bffd60097fd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e6f7b4fcea666be0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e6fd07d2422f26e5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e724b16788d07028_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e77dd4a43fdae908_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e7abfdb443059002_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e7ae14a3b36d04ea_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e85ac8952d7783d7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e869fde574a218bc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e8a6449bc15e2951_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e8d6b4b1bf71708d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e8df3c9a96e2721e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e8fd6d2b7b759fd3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e9033dc3a843ef31_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e90d96c67649ffc5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e931ed5b5bcd1f4c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e9995e89cb44d8b3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e9b02967036d2aa1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/e9f487354a83d2ec_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ea02855072daf21f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ea1baaa3b944dbe3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ea28f1f3191597c0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ea7bbb845d805af4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ea7dbe3f3c54cc36_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ea8a9e6f5d3c49d5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ea95caa402e2d24b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ead1f8e941ae55d7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ead90fe56f9092dc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/eb1b61993ead095c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/eb3b8a866566ff82_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/eb3cda9f54e1c794_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/eb3efa2a2a4d1192_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/eb60bcc5d18a44ea_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/eb60ef1420000f1b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/eba134bd667a3325_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ebdf92acd968fbac_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ec02c6a6b833285f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ec3866c5e8025d3a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ec7a31d755913358_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ec7cfcdb9a1cb1c5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ec98c80d805c9109_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ecb69d1944324aa3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ecc54dea16e53f24_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ed45f3736958fcc8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ed8f15b3c80d2c6d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/eda2c8927a420902_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/edc2f199f8fbe6b2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/edc5d0211a3eabc2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/eddde3e52ab38e8c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/edf551aca96f2233_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ee10976e85ec8a61_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ee163dbcd01ae371_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/eecb458a182140db_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/eee472011e3b348a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ef08ae80cfbafac4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ef2ef8ae2a7d9285_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ef481c05b37911a0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ef62c7c5838795a0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ef63aaebc2134f00_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ef863d4caa153e29_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/efc41256c2db7b3a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/efc4c269fda3d68f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/efd78d3dad75d08e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/efe76510b9450999_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/efffffcbf63cc3bd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f0052bed8fa50dc6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f02f455b4d3d04a5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f035cad630bcc072_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f04bb8809920155a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f0519ffd3e091c9d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f053a5835e865b15_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f075fbb9a5f7f7d0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f0763b3476e68b29_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f0979e37c7a340c4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f0b64641024a8963_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f0e8031df6492bde_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f127dbfb822053cf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f1326780335ef6a4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f137a5242074f1e3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f1996691dc670885_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f1a11fe218d475cd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f1b1a39eb72b9bba_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f1ca41f6ef82619f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f1e5c8771b442aff_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f21765ac599881a9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f227e1a6e32f8f69_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f261b678a33952b5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f26ae40039282a0b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f2781adac73e1eb0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f2930d2d23aa5fee_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f29f9f671c9bee68_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f2c543ac09a17d3a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f2ff5846561e3d32_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f3434324b9a57090_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f35c32d570a85666_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f37a368655c1ecad_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f37e3a2a1ac14835_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f38a9011fa200cf5_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f3af8b0adc11384e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f3c6c56a0e4ae162_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f3cde101fde4dc5a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f3d9a9ccb70afd45_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f3fa3e589266a63b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f43a434bef241b00_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f44e0987d4096e3b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f461c0ed3a512a51_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f4731eab10278a30_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f47a667609b30cc4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f47ee0ef8c836b40_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f4849c64722f5aec_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f49efb0d89e17b9f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f49f057cc3ef28a8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f4b023e724dcf861_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f4c7a452e8cba3c1_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f4ecf4df9b03f633_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f4f1628ca6c060bc_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f521659d537eca1e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f528045d6e0ec3bb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f536d18bbc6028a2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f54d53726c79b865_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f56aaaf68b31a984_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f6088892425c5d64_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f60abf2b6a71a49c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f6286e6c12c7316b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f634f576feb4fa92_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f66d4b484861c31b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f6a32572f394e82e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f6e9e6b80ef588d8_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f6f802f043ecfa53_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f7397cbdf1f2012f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f781662541885147_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f7a7ae0946fe95c9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f7b33cd77fc652ed_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f7b3eb1698905b07_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f7d933036a627f20_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f8091c53dd92fdd4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f812f960b48f787d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f8243ff6619515e9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f82caa3366fcfb35_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f83f4f18bd21320f_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f84b879e45cdfa61_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f8a823c794b23399_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f8b3c7e2d5dee2db_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f8f3bc63e07e8c9a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f903c879369978b2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f925b22ddac17bdd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f92d1809b9c674ec_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f94f8b13defdf685_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f95b5e546274ce29_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f96e11f2e038b27d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f97431f80a599916_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f985c1dbbf96aa61_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f9af927f08aaec07_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f9d0202653dc8c20_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f9e143e57946c84b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f9e3d7b2ea1cfefe_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/f9fd689f40239116_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fa0d964029c339ea_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fa39878678f867f0_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fa5a9d2fc3ac6054_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fa88df7dfe0c436d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fad62c14596854fb_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fad6e792bed5b43d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/faf1f49211a25fe2_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fb3ef0fc681589a6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fb44d03ed4c0c2a7_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fb583e9f48a93e27_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fb5b378e7539c287_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fb9991d0d7ab4c04_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fbc42c051203d20c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fbec826cb9dbef7b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fc335388c069b5b6_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fc8f22faa155df1a_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fc9506d700501735_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fca0ad645f1899ab_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fcc373a9576c127d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fcdd134e430861a4_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fd82e441893daacd_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fd9b48970a25ce35_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fddbfa6c764c3634_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fdf145a7d6b60af9_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fe01a3eec481f1e3_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fe217efc203d9b0e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fe59a85b8c5d6382_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fe6cb9799e5d647b_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/feaa05ce895cca6c_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/feb289bffaff2d07_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fed725e97708fa98_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/fef8205f49162c37_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ff051f17fb27de31_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ff16ff619d255e38_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ff1e5d592c30b05e_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ff49ce6191e19e28_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ff6bb92c664b1a89_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ff6bc419b1cdf398_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ffb74ad625450ddf_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ffd48f49988e9dff_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ffe57d3d755f3c6d_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/ffed4e2503bde2de_0 +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/index +0 -0
- package/dist/run-chrome-profile/Default/Cache/Cache_Data/index-dir/the-real-index +0 -0
- package/dist/run-chrome-profile/Default/ClientCertificates/LOCK +0 -0
- package/dist/run-chrome-profile/Default/ClientCertificates/LOG +0 -0
- package/dist/run-chrome-profile/Default/ClientCertificates/LOG.old +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/00576aa09f0c8f06_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/00a930126aad3aec_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/00cf4d9bb72e4a86_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0120782174d603c8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0124319d93f1712f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0137b2b69aa46867_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/01858bab92dd0613_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/01960fe130b3ab6a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/01df893560d3d3e7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/01fa93b741d7153e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0207822eeaaf475a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0261b2518c203e65_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/032ade91e2de16b0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/03c82de5f2366e80_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/03d8d814444fdffb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/042d7c5cc8cbd148_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0468e54ded654ac4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/057bb3f7fbde1933_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/05971aaf48d7b0a4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/059a1a24d36cf2b7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/05c184ff16def119_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/05e7f29001044094_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/05f7eac04a1b9131_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/066c9323ed501e4d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/07552afb4742c740_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/078b25a1782489bc_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/08125427cc29cd18_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0861135386d2c738_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0873abcdba3bac34_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/08daf3c8856af8d8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/095c890d4f177db8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/09aa4da0edf2dfc9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0a0915b6c942dc9e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0a3ca08dbf1ad881_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0a4c408ebb602af9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0a6ef0c4f049e9b7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0a8c0fe26bf962e4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0a9014843ba54d8e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0ac1da8174caa44b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0b395c06c585ca49_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0b4c8d2e5219861f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0ba992bc0cdc2d04_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0bbc75aab43b2828_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0c10e615657b0221_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0d663307232dad70_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0e7776cdf5785211_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0f08d04ff627b385_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0f4778b7aa995aad_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/0f83753fcae28236_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/101ab56a53046624_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/10aa1e9abf20ed61_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/10f28875ca0b2447_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/115b2c9f20e3f207_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1175a8be78235922_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1203262e7df50bc4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1235a3640d9a85b3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/128198be2bcec6ac_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/134ee269a27afc99_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/137672c439c6789a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/139aa9cd99f04e1a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/13a832aef4f0b7a9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/14eed30a02482d36_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1572a980a145e604_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/15dc21ca0c76f509_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/160cc4bdf6b7344e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/165cdf61a91c4ac4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1663fa5c5809898e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/171c8c816bfbe996_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/175f8f05200d8db0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1778d6f5859e78e1_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/178e11245b58d1ac_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1796616a123bd676_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/18025961f0fca2d9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1807e8eba41ad565_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1867431c266fb013_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/18d3773e7f7f7c09_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/18f2b09f2efac0a6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1980b99d40b9fc74_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/19867e860baf47f4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/19aeaabafe154a9e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/19ec2c1db33c0490_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1a1136c760459a6b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1a629d1acad88625_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1a9a26bcd05ef2ad_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1ae088443de51c03_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1ae721bf27996952_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1aed1972f0747eb2_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1b3982d52e7e655b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1b4e5e96198f9377_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1bc1891485b37ccd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1c5955e2ac515c2a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1c6083e54974c3a8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1c6caf2df941fdb5_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1cc38e813da427a8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1cc3be11cea78bd2_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1d23631a05bd120b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1d31726ddf3ae247_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1d4f1f70b943907c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1de5696b0dced05d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1e68602a694b8489_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1e89e8f4198b59b9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1ea096904b922a96_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1f1cde0f5c5b8122_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1fa35be007ac3375_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1fce957a429e2c31_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/1ff06753fa462f9f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/20762c9ee5ade288_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/20a45f230e0c3236_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/210b3a814a0f9979_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/21836384be239e42_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/218fe828c74bdb99_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/22262223f6fec7de_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2277859d0e040b10_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/22abef75e5e2b282_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/22af7012d8e846af_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/22c4834ad2c41d01_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/231ed0e052fc0d76_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/23371ab034506351_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/23a9e20685df05f3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/246e8a708672d553_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/247dea2b0b565257_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/24e017001fe0bf8d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2560902683ae3360_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/257595176fbc5ffc_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2592e8869def7957_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/25dd5bcbedc3d0ca_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/265b0d8e16d38d72_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/26d4dfcca2c612f3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/27082c2da49a2c22_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/271c0a8699dfdd33_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/275ffa04aca56923_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2763693323e114f0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/28217046cf801fda_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/296edefdd2cea8fe_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/298d9bc728fdf425_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/29a8658844a7d19e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/29b8cae27e2033be_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/29ec98774fc7204d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2a9b619172efdf0c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2b08ca9d2b0634b0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2b26f9c2b11e976e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2b67a16f9f857fa4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2b83d1d760f32e16_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2ba24f230307afb2_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2c07ac3d0d294757_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2d0f336f589db2a7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2da4666fa5905aba_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2e6d338d470d49a0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2e8b404ddb2dd9e1_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2ed95e4b8b78deba_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2fa65f7ae595bbb3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/2fc45f9c5b6beb8e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/302198e34822b8c4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3040ea753b0fe023_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3047cb30e3a61339_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/32de5ae1282bfeb7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3345d0ce65865882_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/335e69ddec2b9ac6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/339c0c66a35bff49_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/33d71c3a2092b39e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/33f5f7fdc4ebcf60_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/33fa4fddf11f14d3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/342b5c4404860a84_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/34480aeb79cbcb3a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/349e42d31d8c9bcf_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/34d46d5bb7e087f0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/356281606ed8b0ba_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/359a134d582a443c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/35f781cb89e0190f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/36c2fe6d8bd8fa7b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/37993ff813f6b11c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/37af3d8a3752ea47_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/380d23e33c18bee8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/381af8a4a082ae67_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/397c1788bc49e754_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/39d0961ede342483_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/39e51ab2a49643da_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3a00ce55b9ce2575_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3a322a628d813981_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3a3aa851dcab6855_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3aa6be993856474e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3b40f1a5fe83039b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3b8238a72ae651f2_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3bf9653c7e8869cd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3c1b4e9f6abe8a84_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3c1f7824733aa4b7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3c340b32ab54b886_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3c5cdf0482d2fab7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3c5dcbbf98fa681b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3d747880f51a2b2e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3da6da71113cfedd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3df79a5f32b23750_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3e569df8e0c01003_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3edfd33b55a72e84_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3ef25735145cd4a0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3f0a2b023569f956_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3f0f03188751f0ce_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3f82aba568532765_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3fb553af3c41f641_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/3fda6864f961bd9e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4011f656fa1c2b20_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/40965b12744d5b31_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/410cc373cd94328a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/419edd194c5c3e27_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/41c49e62092aafe0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4216e8f644945df0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/422e72f9058425d5_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/42783adf157d2987_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/42e62f28d28b6e78_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4309dd65de6d723b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/432d400f4a39827e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4366d72f3ea90e7c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4383c1ccdd18f0aa_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4392975a11d7052f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/43fd2ddc30bf9c68_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/44bb202d9e0e55d8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/44f88db91c747788_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/454c43d79a9c96da_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/455ff821532be4f2_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/45689564759fcf20_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/45943056f2872613_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/465a6a439aee2110_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4691fc61dbe1f5d6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/469884d2cf3d5d22_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/46ba43a4f90a2d9e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/46be8289043ca526_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/46deefa7ba70a3b8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/46ea11d13d94e83b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/46f50eca5117c1b0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/46fa7840ae59447f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/46fcf5638e8a4d5f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4736126dc484229e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/476e356260f818d6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/47b7489a570cfdb4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/47d9de4467275d47_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/485ae05d99c6a24c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/48c68c3c4a320acc_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/49036f48b89b9e5d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/490fff43f210f8bd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/496040d3e41d1f0e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4979b3803f19a75d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/49de1fb0e55f3ddb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4a3231c537fc62ba_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4a7e5a7a7e8a6f50_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4b43badf45732d6e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4b563643e1b9b8cc_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4b64c65e89a96f1b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4bfbdab9017dff46_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4c1c88a8bb49b9c4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4c363605fa50c5cb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4c88229e84df7b2a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4ca88f4186295eeb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4cc5e410718d48e6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4d0ceb2d63604261_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4d4435c2d45f54ae_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4e0659f87d96265c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4e7fb086f46a06b9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4ea4af2b2a5fd8ba_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4eacfeea8a41c6fe_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/4f7919ed25282275_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/50637f70f1c5b629_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5096098fa99f7f37_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/50bb912ce584f5d3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/51538e6fa87eb70b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/515553d7b9d08ebd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/51c76a4c58fb370c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/51dc2e71b2880eaf_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/524e0db413eec3d3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/526412ca63160a64_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/52e5bd002315c76d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/534b375e6a06a4ce_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5350202ca1e667f4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5393771ba22d227e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5437f1f354c3ac98_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/557f0ec66a741528_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/558a3665cac70d6b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/55ddf9d6e00a5b95_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/55f21c59f6ec57f4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/560dc2c3725c9821_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/560eb13a1d25bdd6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/565e0388e5cb6e8c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/566214e4de186af7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/56b39b05fe6a0840_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/56e37d14a617bd49_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/577d78f09bce4035_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/57dc9fc14817dac3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/588ce1df28335f29_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/591eacc981ab1f4d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/59499ff1a8c51ded_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/59780568becedf19_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5990bd682a6f6b3b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/59ab9542fc73a113_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5a97af896ff13bc3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5b9364771a302298_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5badf033cf1a7d65_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5bc946f6bbff1bf8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5bd0bf8c47af9187_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5c0a07afe730b6bd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5c1760946c8afe0f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5db197ed07557749_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5e06bac22fe532ee_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5e597d158ac66372_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5e6d77e939244374_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5e8300fd91bf246e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/5eddfa8897b0fdf5_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6092a1fa6dd44390_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/60db5a7c277c705f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6108554917ab488c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/618b1e8469f27909_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/61904afb39c144e8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6291bea4145e5e4f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/62ebde7352d8f4d7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/633f53bb06142ce4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6377a5591ec9e807_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/63a01791333e229c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6433e213812cb5f0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/64e0ef2c138d9e4e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6551b9097eb3f168_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6656ffa8a465d5d4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/66b557ccdaf4b617_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6716a1b49fe0614d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/67698a100afaf552_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/677283bf7d2de4f2_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/678402de2c7cb873_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/67906c619a2f106f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/67a79d1eceb42f0e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/67e01f49b978ebbe_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/67e9b14c92be773e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/67e9c827793f16b3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/681b8fc697fbb99e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6850e94360ba1a62_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/68b5301bf8dfadf3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/69969110489dfbfd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/69a434929989524c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/69e762026537930e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/69f22c0cfa1a35d5_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6a27d1294245ebc5_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6a5af7f5ebbe6625_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6a89aea8f0ee106a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6aa16d0f05d945fb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6aeaf58d0d2632b8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6b08661733f52b23_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6b0cfe856c9642ca_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6b21590884603f91_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6b9f32a5a6b210da_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6c12d74ece4974cd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6c3b3a70dbc26ed9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6c40b7f376f22709_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6cc48495754adc7c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6d53932a7b13da37_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6e43570c5ea67f99_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6e546c6b58c96ec9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6e590dde5bc565e7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6e5e641b589fa9b8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6ea7a0fc3496d416_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6f1d0a93e470fb3f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/6f41881bc0d3b14c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/70b7de12c65c65d6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/712c9f0f6269828f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7154aeb76757072f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/71747245df466af7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/71b02bc1e9f7cf89_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/723168d293550eb7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/72ecf5c657fb60b3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/732411a6915d2508_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7352840f19fbf533_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/73cb9ef0137717af_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/74f5a75b8776b856_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/74ff65a328f7417b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/751c365b1048dfb5_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7521fc374f5147a9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/755ede6ba51720c6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/758f375ca56f1c55_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/759a72a70c42ef95_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/75ab1e56d8255007_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/75b624977c1059dc_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/760970c40a28607e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/760a3e03dd30f8ce_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/760af929e8986fa9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/77366f6369f2fbd0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/776e1faecd59492b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/77e24f48efd237a4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7835251ef6802d0f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/78dadccdebc8bb6b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/78ea3c78c34d9c61_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7974db6a392b7b97_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/79c1d11d7a9ec837_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7a0f7a000331fb79_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7a12267e154d126a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7a50169671e86587_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7a8e74991a274f8e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7b282fce309f6a96_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7bb98afeebf2bad2_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7bdcf59983859150_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7be88e7acc909cb8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7bef27e46289c1aa_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7c1c2df50d793a95_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7c1c643a8656d181_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7c5f27f11238df01_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7c6dcc4f274c1d2e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7c7d2ab64a105ab3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7cddd72c69e76515_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7cf918399064957c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7d41cd97fb2391d4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7d63d40ea4f0baa1_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7db96433668390d6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7df2337b5cc2eb63_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7df47f86fd7db3d6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7e61fab415d00b7c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7e9dc75b7d39ec7a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7ee2c026fb035af7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7f4b2e82d29ecd04_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7f5c670b8082746e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7f6cc66fc713bcf2_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/7fb13a1d5246c6a3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/800e3aa2c6cd56d3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/807aa7d4938c3fbf_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/80fb0c6523456e0c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/81c13f091649aba8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8246e2c38dd195ec_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8399e3c3578e8720_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/83b6178313f296bb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/83e8727635fb8141_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8477d3374715b3dc_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8487023e3b6f9fbf_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/84c403a38b4ed21d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/84d0ed55c49f219e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/84de00034590e8d6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8530c7a3d9e0a29a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8537a263710d0792_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/85680aba2bce1a9e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/85942f9409767f80_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/862d59f7b9e64dfc_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/86d1367c9050f6b5_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/86e2b2e668c889cb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/86e5e71fe91330cb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/87b3dc365039f90c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/87bdd1dc295ded5a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/87d1ab21a1ffa51d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/87d7d3219b46ede4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/87f64fb70c1577f7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/88049167cd8c3d6d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8833e3f7dcea479c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/887ee2d2d8d03830_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/88bf0f26d0219edb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/88c0560d76eb9834_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/88dde11462647feb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/89aaddeb9a9e1d5d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/89f2dbc9bde44644_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8ac03deae8b207ab_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8ac195c61a168cd1_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8ac4bb8592fdf8f4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8b2bcd8ab92e7b1f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8b5f024a6e52d247_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8c09d724a587a212_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8c396feee2435a39_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8cc1aa1292767796_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8ce0e09f3a9116a2_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8d4ee0f385678ffb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8d68c2c6942e8d3c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8dbd2008cfbfbeaa_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8e1004a0a199681d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8e19e545518d4445_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8e448bab69aaf580_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8edc7185e6b45f3d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8f06a0abb134f3df_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8f631d37f5f1e59d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/8ffd4bedbcc2f4f0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/907ac96d6f337a8d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/90a5f4f56b29b72d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/90daa547c8368572_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/90df63ec6c81b8e6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/90eff4cef0ace60b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/912aeb8ea99705f2_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/920090a1dd9123d4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/929b3911cd6569a2_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/92a3218fa91823bc_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9383e806bb46b112_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/93a86cb0fb4191f3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/93d23192ce84b096_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/94ed8ea324af90b5_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/955659c0a479b366_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/95b68c45ef318045_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/95f9c83f76adfc6f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/963d901a07e83f4e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/96558b087914c73a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9676b3f033a4d605_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/968de7e076ed108b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/96a8fd7876a8d125_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9883f68eeea47f4c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/98d6827538fa00a7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/990983323f7b0666_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9953436cb5d0da38_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/99e3505dc4b7788c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9a671c75b579b084_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9ac52f2a77d4e91a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9b3373e25f099fb1_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9b499d886c11959d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9b7e5cedb19d3156_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9cf82058da3eab7e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9d02af1eaa4a14a5_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9d31d8e71efdb6bd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9d4e4cd7f420c6cc_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9d7a1803fcb3e1f5_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9def8b60afe2b28a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9e9ba69504a17d2b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9f2e7ecc66b9436e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9f792a794e34f207_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9fa13110a406384b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9fa81b8cb6efa9ed_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9fba5e053de36351_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9fe87ac4e6740050_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/9feb353a8118be27_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a096196665df2f44_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a0c3da13e1fa24c8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a0c6028ade1dbb58_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a0c814ef9a1473b6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a13af172ca81e99d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a1fd1052511e2e3c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a22d5bd99415ee72_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a2cb0a7acb5b3d3f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a34506eeb3ec53d3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a3572e95f013dade_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a3ee199c7968d3bb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a401d5f432a95401_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a414ca8e4c4cbb2b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a446c7c81354d5fa_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a597f5b0338e90c7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a5b18372012ebc3f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a5cefb6f9742d829_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a625a4ee5af9a595_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a63f9446e33e6fba_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a6d022b8abb46769_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a6e40e778a71c5c0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a6ec53a290447d6e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a6ff79bb94132ba7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a71dfd5eda86d049_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a759f967e3e16e43_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a7885d86736b238d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a8990a31606205c2_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a8bfd7ab3bf7adbd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a9323794b4d2cad8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/a991feb0d60ea58b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/aa49648f969c57b5_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/aa698792f27e382d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ab469f86e8eb80a8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ab4d5977e66134c8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ab9d89e77b555582_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ac6be1bf452a93a9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ac9da704490f6d7c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/acbd66d05f1001e5_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ace22ad36b0a3e29_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ad83b791579c0c36_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ad8f70a28e0e12cb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/adc2121bf14771b6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/adfe52684573f63b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ae02952cfcbdb305_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ae14e5e7a636fe3d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/aea4befbe2522784_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/af062f42769617bc_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/af8b64a0dae82073_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/afc8a96920dd917d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b0bafa51c555ca97_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b0c86d26b5f896fb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b0d133e0d3965452_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b18820d4f0455a6f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b1cd2c16cf827d71_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b1d12c30562d5a9a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b21cd8bb268f19b0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b31353ede365cccb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b3146969f4e08859_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b3579af480815c10_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b368e235730ca133_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b39f5bf7f647ac0b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b3ca83452dfc39e7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b492dd9f8c950142_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b49ab85d849a44d4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b4d5e65b50ddcd6f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b521879b75fddea0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b5581f525dbdadb7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b57fe3612dde12ae_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b633c22e368e8f33_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b744fd6dda21e53f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b7c6e2477b21bc05_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b819460989f05cec_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b883423bcfd47671_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b8be1bb2044e2df0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b967e125a4ddcdf6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b9c6f75b06f37b57_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/b9c816b508f5847e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ba59964a447bf329_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/bb3d561a2a33c330_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/bb867405281b5b3d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/bba6dd088a01a924_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/bc1ebd403a6dd617_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/bc3d51b9df18888e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/bc78c8115d716b37_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/bcc677aa2dd2f77c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/bcd09780458ce95b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/bd08fbfb94bd4f0f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/bd8b239c410f120d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/bda9da2b98514b95_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/bde0a251713247e8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/bf376cf8e03a9fdf_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/bf6a900a98dcc108_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/bf77043ae872c060_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/bff60556baa39f7d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c018ff1df4e50f9e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c04656fb9592bb87_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c061a39f0e4ae221_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c08c9157210b64ce_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c08e3850c9ea81fa_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c0b239cca8b0dae0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c1171d10046ce47e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c1375a12c40d0d8b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c143a2d10f5bff3a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c1a601a32fee0e05_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c1c0aebcaddb2c8d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c2792753638f3105_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c39d7411223d728f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c4356fa50ed60400_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c43f21f34002a103_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c44ab53c95b2a26e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c68d7042fc85d794_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c71115eb2326d5ec_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c7c1d5ec6768110c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c8161514022a77f2_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c85c1580f484aa4e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c8b1dd42a77b6283_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c8d3c1b11bbd1882_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/c8ec3216c217948b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ca650c6f5a64c8d0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/cad43fba1de6a155_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/caf82a9b154a86ba_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/cbc2c48969889629_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/cc0149438f87ed6e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/cc91b85dc2c41863_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ccadc5970eb659c5_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/cd03d3fa9a7291f3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/cd698eadf0fc677e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ce1a8b91f18fc16b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ce7756b08c1e308e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ce9f607b065ad385_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/cea5a79d724c6e4f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/cf6ea16881277505_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d04c23a7607aff39_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d06a8d812ee7d943_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d0749866540464c2_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d0d7203b368249e9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d1104bf960f9493c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d14d94ce06fd8eec_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d194d2bd5e50c66b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d1a1ef8c3f37ccea_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d2c525764a769788_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d2c86dc36abcff89_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d2ebefd0b3aea7a3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d316e7e782ca1da8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d33dcd747ed9f05a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d3662e976fda6c6f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d398f120bc08dc22_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d3c21bc17ec6983f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d46cf55fb9f9e5bc_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d49ecad36a458887_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d4b21c7a5696a2a4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d5215ac7bed47d21_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d5365e09f4616070_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d631dc3ea3009d2b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d66c6300339b19cf_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d6863858140b3355_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d6980db6c68254d4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d6a5f42cd36419d5_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d6a8ebe978e501b4_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d71a3158633786e3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d748d9a8fe7396a3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d8013d357e2be511_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d863514910fc39cc_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d87bb0ccdfdd8f04_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d8af2d396f2bf70c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d8c82e5621aec379_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d8d4f33881dddaf6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d8f5bc8ad60a8f44_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d935a5d75209077d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d9856d6adf6237b9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d9a76db22cbb5c6f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d9dcb3b1e90809e7_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d9e88b40760173f9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/d9fc3df484c1d9b0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/da65e7d98f885d0a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/dab58e31f18970cf_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/db6f2c4ec5823b07_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/dba30cb919aecbf0_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/dbdbb77758bea768_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/dc7847068e9d9a79_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/dccc4fd4bb9f222d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/dd42a35e52c0d24c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/dd90ff8567abb325_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/dda5fa082ee37bc2_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ddc73e8c5d069c06_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ddd453688ea861b3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ddf28f7e64ee6c98_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/de3d489b5f35ef0a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/de477b329b8a0227_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/dee1a1e91428b026_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/def4a41998ff2def_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/df6bba7a37d389ad_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/df91e028ccc8883f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/dfb89e3b7479be93_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/dfc1f1e6205f0a88_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e1435a1865ecedae_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e290c358b392cb43_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e293f6a6c2f158ba_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e2f965546ec5995e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e317def9b59a7ebc_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e347bf3cbe2b7b35_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e3fb63ed857af9bb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e409c233a693c759_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e472167cba45398f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e476588677b182bb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e4b5102f48e61314_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e510af1b65cded81_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e52fc380052737cb_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e57f0fd1a0478bd8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e6191ad6b943d1a9_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e701cd73c53d3fcd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e710f4e20367dbc6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e7254d0c123328fd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e7fd7a1f2d9ed1c6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e8865e1cd7c27403_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e88c8af9a1b2e6ca_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e8f485eaa064328f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e8f7105f908844e5_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e9214444d7a2ea33_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e93c170f5dc3fe8a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e952c1aa91aeccfd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e95840a68ec8021d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/e9bb0a39ccaa07ac_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ea1b698a5fd7fcaf_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/eab3ef02b2d1b3a3_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ead0a2096408a490_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/eadc6b68a8809188_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/eae83760564ed1e1_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/eb045985793aef2e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/eb79466cb6c4e54c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ec0fb51bde482123_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ec54130123803439_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ec76d95b503353e6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ec992bae7739f8b8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ecfb232c8bd6f490_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ed1a01bd02534de6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ed1f9abf22950adf_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ed328c02c5e946ba_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ed53251c650e7b65_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ed9f861b49966c18_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ee2a34cfc2f9c0dd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/eeeead0b9f606aec_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/eef7079ad775cc72_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ef96b7451c42fa05_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/efc720b5f3749f2b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/efd3ed856dbf309a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f005361fc56fcbe6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f04911e094474f4c_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f07f088c3248e897_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f10b4601c94fc3b6_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f140edb5e10c01de_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f28c6b2b2f20e6fc_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f292760f61d08e65_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f2cbe46ebc02be75_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f33a360ec00c4b4f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f39144601402f526_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f3a9cc37f5e00e0d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f421ec92859f0684_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f487345d35af876e_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f4d96c15aacb246b_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f5b05866d9583685_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f5b5f7403095a330_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f62b14b33546118f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f6cb2b0213d9032d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f82330c8ff647729_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f85089f7ef51c99a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f8c4e3c965704a83_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f9672491910a0a60_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/f98bc534fd5144fd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/fa62d2a6ff378a25_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/fa994d88c87183e1_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/fab6268aa0200b4a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/fb31d6280452ad7a_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/fb3e135b1103bf61_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/fb57fad243d6373d_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/fb74a0b0313a5f1f_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/fdb88fd4323350fe_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/fe991e9023574040_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ff170eca95be4eec_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ff66676d6a82fdd8_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ff804637cc0caebd_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/ffafce2b958ba876_0 +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/index +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/js/index-dir/the-real-index +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/wasm/index +0 -0
- package/dist/run-chrome-profile/Default/Code Cache/wasm/index-dir/the-real-index +0 -0
- package/dist/run-chrome-profile/Default/Cookies +0 -0
- package/dist/run-chrome-profile/Default/Cookies-journal +0 -0
- package/dist/run-chrome-profile/Default/DIPS +0 -0
- package/dist/run-chrome-profile/Default/DIPS-journal +0 -0
- package/dist/run-chrome-profile/Default/DawnGraphiteCache/data_0 +0 -0
- package/dist/run-chrome-profile/Default/DawnGraphiteCache/data_1 +0 -0
- package/dist/run-chrome-profile/Default/DawnGraphiteCache/data_2 +0 -0
- package/dist/run-chrome-profile/Default/DawnGraphiteCache/data_3 +0 -0
- package/dist/run-chrome-profile/Default/DawnGraphiteCache/index +0 -0
- package/dist/run-chrome-profile/Default/DawnWebGPUCache/data_0 +0 -0
- package/dist/run-chrome-profile/Default/DawnWebGPUCache/data_1 +0 -0
- package/dist/run-chrome-profile/Default/DawnWebGPUCache/data_2 +0 -0
- package/dist/run-chrome-profile/Default/DawnWebGPUCache/data_3 +0 -0
- package/dist/run-chrome-profile/Default/DawnWebGPUCache/index +0 -0
- package/dist/run-chrome-profile/Default/Download Service/EntryDB/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Download Service/EntryDB/LOG +0 -0
- package/dist/run-chrome-profile/Default/Download Service/EntryDB/LOG.old +0 -0
- package/dist/run-chrome-profile/Default/Extension Rules/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Extension Rules/CURRENT +0 -1
- package/dist/run-chrome-profile/Default/Extension Rules/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Extension Rules/LOG +0 -3
- package/dist/run-chrome-profile/Default/Extension Rules/LOG.old +0 -3
- package/dist/run-chrome-profile/Default/Extension Rules/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Extension Scripts/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Extension Scripts/CURRENT +0 -1
- package/dist/run-chrome-profile/Default/Extension Scripts/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Extension Scripts/LOG +0 -3
- package/dist/run-chrome-profile/Default/Extension Scripts/LOG.old +0 -3
- package/dist/run-chrome-profile/Default/Extension Scripts/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Extension State/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Extension State/CURRENT +0 -1
- package/dist/run-chrome-profile/Default/Extension State/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Extension State/LOG +0 -3
- package/dist/run-chrome-profile/Default/Extension State/LOG.old +0 -3
- package/dist/run-chrome-profile/Default/Extension State/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Favicons +0 -0
- package/dist/run-chrome-profile/Default/Favicons-journal +0 -0
- package/dist/run-chrome-profile/Default/Feature Engagement Tracker/AvailabilityDB/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Feature Engagement Tracker/AvailabilityDB/LOG +0 -0
- package/dist/run-chrome-profile/Default/Feature Engagement Tracker/AvailabilityDB/LOG.old +0 -0
- package/dist/run-chrome-profile/Default/Feature Engagement Tracker/EventDB/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Feature Engagement Tracker/EventDB/LOG +0 -0
- package/dist/run-chrome-profile/Default/Feature Engagement Tracker/EventDB/LOG.old +0 -0
- package/dist/run-chrome-profile/Default/GPUCache/data_0 +0 -0
- package/dist/run-chrome-profile/Default/GPUCache/data_1 +0 -0
- package/dist/run-chrome-profile/Default/GPUCache/data_2 +0 -0
- package/dist/run-chrome-profile/Default/GPUCache/data_3 +0 -0
- package/dist/run-chrome-profile/Default/GPUCache/index +0 -0
- package/dist/run-chrome-profile/Default/History +0 -0
- package/dist/run-chrome-profile/Default/History-journal +0 -0
- package/dist/run-chrome-profile/Default/IndexedDB/https_webpack.js.org_0.indexeddb.leveldb/000003.log +0 -0
- package/dist/run-chrome-profile/Default/IndexedDB/https_webpack.js.org_0.indexeddb.leveldb/CURRENT +0 -1
- package/dist/run-chrome-profile/Default/IndexedDB/https_webpack.js.org_0.indexeddb.leveldb/LOCK +0 -0
- package/dist/run-chrome-profile/Default/IndexedDB/https_webpack.js.org_0.indexeddb.leveldb/LOG +0 -2
- package/dist/run-chrome-profile/Default/IndexedDB/https_webpack.js.org_0.indexeddb.leveldb/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/IndexedDB/https_www.linkedin.com_0.indexeddb.leveldb/000004.log +0 -0
- package/dist/run-chrome-profile/Default/IndexedDB/https_www.linkedin.com_0.indexeddb.leveldb/000005.ldb +0 -0
- package/dist/run-chrome-profile/Default/IndexedDB/https_www.linkedin.com_0.indexeddb.leveldb/CURRENT +0 -1
- package/dist/run-chrome-profile/Default/IndexedDB/https_www.linkedin.com_0.indexeddb.leveldb/LOCK +0 -0
- package/dist/run-chrome-profile/Default/IndexedDB/https_www.linkedin.com_0.indexeddb.leveldb/LOG +0 -3
- package/dist/run-chrome-profile/Default/IndexedDB/https_www.linkedin.com_0.indexeddb.leveldb/LOG.old +0 -3
- package/dist/run-chrome-profile/Default/IndexedDB/https_www.linkedin.com_0.indexeddb.leveldb/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/LOCK +0 -0
- package/dist/run-chrome-profile/Default/LOG +0 -0
- package/dist/run-chrome-profile/Default/LOG.old +0 -0
- package/dist/run-chrome-profile/Default/Local Extension Settings/ckalngflbgchjihhkfhlbkeoigafanol/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Local Extension Settings/ckalngflbgchjihhkfhlbkeoigafanol/CURRENT +0 -1
- package/dist/run-chrome-profile/Default/Local Extension Settings/ckalngflbgchjihhkfhlbkeoigafanol/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Local Extension Settings/ckalngflbgchjihhkfhlbkeoigafanol/LOG +0 -3
- package/dist/run-chrome-profile/Default/Local Extension Settings/ckalngflbgchjihhkfhlbkeoigafanol/LOG.old +0 -3
- package/dist/run-chrome-profile/Default/Local Extension Settings/ckalngflbgchjihhkfhlbkeoigafanol/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/CURRENT +0 -1
- package/dist/run-chrome-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/LOG +0 -3
- package/dist/run-chrome-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/LOG.old +0 -3
- package/dist/run-chrome-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/000005.ldb +0 -0
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/000020.ldb +0 -0
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/000023.ldb +0 -0
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/000025.ldb +0 -0
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/000027.log +0 -0
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/000028.ldb +0 -0
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/CURRENT +0 -1
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/LOG +0 -3
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/LOG.old +0 -3
- package/dist/run-chrome-profile/Default/Local Storage/leveldb/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Login Data +0 -0
- package/dist/run-chrome-profile/Default/Login Data For Account +0 -0
- package/dist/run-chrome-profile/Default/Login Data For Account-journal +0 -0
- package/dist/run-chrome-profile/Default/Login Data-journal +0 -0
- package/dist/run-chrome-profile/Default/MediaDeviceSalts +0 -0
- package/dist/run-chrome-profile/Default/MediaDeviceSalts-journal +0 -0
- package/dist/run-chrome-profile/Default/Network Action Predictor +0 -0
- package/dist/run-chrome-profile/Default/Network Action Predictor-journal +0 -0
- package/dist/run-chrome-profile/Default/Network Persistent State +0 -1
- package/dist/run-chrome-profile/Default/PersistentOriginTrials/LOCK +0 -0
- package/dist/run-chrome-profile/Default/PersistentOriginTrials/LOG +0 -0
- package/dist/run-chrome-profile/Default/PersistentOriginTrials/LOG.old +0 -0
- package/dist/run-chrome-profile/Default/Platform Notifications/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Platform Notifications/CURRENT +0 -1
- package/dist/run-chrome-profile/Default/Platform Notifications/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Platform Notifications/LOG +0 -3
- package/dist/run-chrome-profile/Default/Platform Notifications/LOG.old +0 -3
- package/dist/run-chrome-profile/Default/Platform Notifications/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Preferences +0 -1
- package/dist/run-chrome-profile/Default/PreferredApps +0 -1
- package/dist/run-chrome-profile/Default/README +0 -1
- package/dist/run-chrome-profile/Default/Reporting and NEL +0 -0
- package/dist/run-chrome-profile/Default/Reporting and NEL-journal +0 -0
- package/dist/run-chrome-profile/Default/Safe Browsing Cookies +0 -0
- package/dist/run-chrome-profile/Default/Safe Browsing Cookies-journal +0 -0
- package/dist/run-chrome-profile/Default/Secure Preferences +0 -1
- package/dist/run-chrome-profile/Default/Segmentation Platform/SegmentInfoDB/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Segmentation Platform/SegmentInfoDB/LOG +0 -0
- package/dist/run-chrome-profile/Default/Segmentation Platform/SegmentInfoDB/LOG.old +0 -0
- package/dist/run-chrome-profile/Default/Segmentation Platform/SignalDB/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Segmentation Platform/SignalDB/LOG +0 -0
- package/dist/run-chrome-profile/Default/Segmentation Platform/SignalDB/LOG.old +0 -0
- package/dist/run-chrome-profile/Default/Segmentation Platform/SignalStorageConfigDB/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Segmentation Platform/SignalStorageConfigDB/LOG +0 -0
- package/dist/run-chrome-profile/Default/Segmentation Platform/SignalStorageConfigDB/LOG.old +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/6f4a67c4-6cd6-4d77-a474-db377ad8730a/3e0495280780ba8f_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/6f4a67c4-6cd6-4d77-a474-db377ad8730a/5fcc800019a0a5ce_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/6f4a67c4-6cd6-4d77-a474-db377ad8730a/7d536d3fd61e06a3_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/6f4a67c4-6cd6-4d77-a474-db377ad8730a/9971fd58f18c5dc9_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/6f4a67c4-6cd6-4d77-a474-db377ad8730a/e4cfe2992dbdafa3_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/6f4a67c4-6cd6-4d77-a474-db377ad8730a/index +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/6f4a67c4-6cd6-4d77-a474-db377ad8730a/index-dir/the-real-index +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/00344f2409346721_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/00344f2409346721_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/01bf564aaa3798ae_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/01bf564aaa3798ae_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/02c11b7b9df3a298_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/02c11b7b9df3a298_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/03aa5ca33f105e38_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/03aa5ca33f105e38_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/040fa5a39ae092a3_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/04947ec003deed7a_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/077ed8f0ca98f7d0_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/077ed8f0ca98f7d0_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/07a944ae09db18d6_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/07a944ae09db18d6_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/08029da6ac5cb1f7_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/08029da6ac5cb1f7_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/08229f45bffae9b6_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/08229f45bffae9b6_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/099d7a441ca922f5_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/099d7a441ca922f5_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/0a1f82fa3e66e0e9_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/0a1f82fa3e66e0e9_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/0ba037116a588976_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/0ba037116a588976_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/0f2ccc4f5f3b483c_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/0f2ccc4f5f3b483c_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/11464f65c2af9f2e_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/11464f65c2af9f2e_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/13cc033705eaf3e9_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/13cc033705eaf3e9_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/148a0a2714117ba0_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/148a0a2714117ba0_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/157735a8eb9fbdc0_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/157735a8eb9fbdc0_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/16eb7b46a9a8efd2_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/16eb7b46a9a8efd2_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/171b9f08743f2362_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/171b9f08743f2362_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/17abc03eb02de733_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/17abc03eb02de733_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/182b67f270abab11_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/182b67f270abab11_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/183ca0a4b74e6142_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/2006a8e7e44e8f7e_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/2006a8e7e44e8f7e_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/207a68e1486d21e9_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/207a68e1486d21e9_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/212fc0516ef03d42_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/2517efd32cd44b24_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/2517efd32cd44b24_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/26bd789623583533_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/26bd789623583533_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/279cbaac8ae23185_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/2abcab5a3ee79cf9_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/2abcab5a3ee79cf9_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/2bf6ffd9e306be73_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/2c76f99546120558_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/2c76f99546120558_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/2f040d9b9bd78c82_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/2f040d9b9bd78c82_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/2f44cffa4d47c2b7_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/2f44cffa4d47c2b7_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/2fe2e1547dc449b9_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/2fe2e1547dc449b9_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/2ff68606ea9d4782_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/2ff68606ea9d4782_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/3082f66845c58781_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/3082f66845c58781_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/32164574920b9ae0_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/32164574920b9ae0_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/360a280ebfa7c62f_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/360a280ebfa7c62f_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/3a777ca2bb2a8f60_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/3a777ca2bb2a8f60_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/3c7bff76cb552145_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/3c7bff76cb552145_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/3e66be8c0fed75d2_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/3e66be8c0fed75d2_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/3f65c602b4c5c968_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/3f65c602b4c5c968_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/4159fa746b976112_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/4159fa746b976112_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/44c29cf04330cd18_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/44e6d6f276e7af86_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/44e6d6f276e7af86_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/452cc8bfc11b0ad5_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/452cc8bfc11b0ad5_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/472b4ad803763ba4_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/472b4ad803763ba4_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/4a3939285639ddce_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/4a3939285639ddce_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/4b6fdc9a17678dc1_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/4b6fdc9a17678dc1_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/4e06fe604a52481b_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/4e06fe604a52481b_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/4f7b21f5727773cf_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/4f7b21f5727773cf_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/50492d0d364a8788_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/50492d0d364a8788_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/51032bf56c9f8113_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/51032bf56c9f8113_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/52bc62357a4c4073_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/52bc62357a4c4073_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/57f988cb08786af1_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/57f988cb08786af1_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/584fefcf2cd950f1_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/584fefcf2cd950f1_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/5913ad2d1e54bd9a_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/5913ad2d1e54bd9a_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/5ae7da374f95bb70_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/5ae7da374f95bb70_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/5b9c4ef23f96986c_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/5c4bad5134db7282_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/5c4bad5134db7282_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/5cfc5a89838bf10a_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/5cfc5a89838bf10a_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/5dc49ed9822ee669_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/5dc49ed9822ee669_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/5f15f4afbdb9c314_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/5f15f4afbdb9c314_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/5f817017d4839979_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/600d76363f08a9c2_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/600d76363f08a9c2_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/625b8f418f1d3dd2_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/6319a18aa0e72d00_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/6319a18aa0e72d00_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/634b6b7cb6ce15ba_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/634b6b7cb6ce15ba_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/63963dfd18cd215c_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/63963dfd18cd215c_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/63fdd2b76d9555b4_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/63fdd2b76d9555b4_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/641316303cbdce9c_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/641316303cbdce9c_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/6486ed2fb9ff62ba_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/6486ed2fb9ff62ba_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/64b44b01999dbb5a_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/64b44b01999dbb5a_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/64dfb832a28885dd_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/64dfb832a28885dd_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/677c56e5478e1fe0_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/677c56e5478e1fe0_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/69ddd01c837fec1c_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/69ddd01c837fec1c_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/6d6391bacb3a251d_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/6d6391bacb3a251d_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/6df0fbd48ef0f200_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/6df0fbd48ef0f200_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/7326b5460547c602_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/7326b5460547c602_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/74039fca9c89dda2_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/74039fca9c89dda2_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/7488cfa9a1945db2_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/7488cfa9a1945db2_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/7670afd151800d7b_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/7670afd151800d7b_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/77fa2c28d05809a2_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/78ccdd8ab3365478_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/78ccdd8ab3365478_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/7aebb187895d584b_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/7aebb187895d584b_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/7b8a2d997a029f0e_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/7b8a2d997a029f0e_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/7d8cd73655dd9a23_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/7d8cd73655dd9a23_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/7ee7f06e98d18b30_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/7ee7f06e98d18b30_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/81dc934608e4c6e9_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/81dc934608e4c6e9_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/8223a43c8e5506e2_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/8223a43c8e5506e2_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/8223efd58cac2be6_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/8223efd58cac2be6_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/85143ec8f06c7481_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/85143ec8f06c7481_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/8578de23abbd06d6_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/8578de23abbd06d6_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/873ace42c07d0125_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/873ace42c07d0125_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/89f373c990d555b9_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/8e680caa68cf15ba_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/8e680caa68cf15ba_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/8f6e3d6081a46ea7_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/8f6e3d6081a46ea7_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/8fb7c7486a51f22b_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/8fb7c7486a51f22b_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/90653e0f8709ad24_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/90653e0f8709ad24_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/91643ee0588a0af2_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/91643ee0588a0af2_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/92ebc9a7cd33b0d6_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/92ebc9a7cd33b0d6_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/9330abd971566da5_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/9330abd971566da5_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/96bf94ffc1f9eec6_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/96bf94ffc1f9eec6_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/974f409e27e1502e_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/974f409e27e1502e_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/98b9f0f6f964eaf7_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/98b9f0f6f964eaf7_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/9a300750ad68469e_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/9be76a2d29502e4d_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/9be76a2d29502e4d_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/9c45ae77e1080818_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/9c45ae77e1080818_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/9e71f1f3161eaee3_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/9e71f1f3161eaee3_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/9eebe6fc48fc3062_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/9eebe6fc48fc3062_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/a4ed7e99436bbf6c_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/a4ed7e99436bbf6c_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/a64d34635c191805_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/a64d34635c191805_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/a8f057364f41716f_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/a8f057364f41716f_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/a9727d9c693b8247_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/a9727d9c693b8247_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/ab07f1aacddae91c_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/ab07f1aacddae91c_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/ab4811e5854d854a_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/ab4811e5854d854a_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/acd7dc1ffb366459_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/acd7dc1ffb366459_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/ad2bf10bac01b707_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/ad2bf10bac01b707_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/aefd9a5cb06d7e01_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/aefd9a5cb06d7e01_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/af4d8c26167d57a5_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/af4d8c26167d57a5_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/aff298c9f7df053b_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/aff298c9f7df053b_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/b0f9302ca2a262bd_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/b0f9302ca2a262bd_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/b24a0cfde3bfd1ef_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/b24a0cfde3bfd1ef_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/b369b2fb0019b210_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/b369b2fb0019b210_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/b452bda55e14f227_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/b452bda55e14f227_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/b53648a9ddc8b4ac_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/b53648a9ddc8b4ac_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/b5f0f69d50d1f935_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/b5f0f69d50d1f935_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/b8ad421dcc60b6f4_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/b91d9b9b9a34420e_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/bb0ac109260eb014_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/bb0ac109260eb014_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/bb54f9d52e3727c0_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/bb54f9d52e3727c0_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/bbf4e78fc0e51a5f_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/bbf4e78fc0e51a5f_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/be05bcc45135a05a_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/be05bcc45135a05a_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/c13a973324f5be9a_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/c13a973324f5be9a_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/c15a151af7896c3c_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/c15a151af7896c3c_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/c217053ada92c8c0_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/c217053ada92c8c0_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/c2b1bc44ef47533b_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/c2fed66d7a6a635b_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/c491006c6142d82b_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/c491006c6142d82b_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/c7981f1c2aa19d7b_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/c7981f1c2aa19d7b_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/c9837fe955ab5b3d_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/c9837fe955ab5b3d_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/ca9005a0f6b59bd9_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/ca9005a0f6b59bd9_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/cb9194e0814bd375_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/cb9194e0814bd375_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/cc386e3f57a4bc63_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/cc386e3f57a4bc63_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/d09c9817fde28bf6_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/d09c9817fde28bf6_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/d0f631d0dfcbf14e_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/d0fd951d6a693333_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/d0fd951d6a693333_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/d3793fdac40493b0_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/d3793fdac40493b0_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/d5844808018e6b0b_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/d5844808018e6b0b_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/d72fb6d141e4e8e0_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/d72fb6d141e4e8e0_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/da6a329023857fdd_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/db2045f1b5945eb1_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/db2045f1b5945eb1_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/db4be1f69381ab2c_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/db4be1f69381ab2c_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/dcc5bbedf945e098_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/dcc5bbedf945e098_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e057aef2a72c0ce0_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e057aef2a72c0ce0_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e086215c432e710e_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e2645a06d5b938b0_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e2645a06d5b938b0_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e2b458f702113628_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e2b458f702113628_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e34faeffa2cb45dd_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e34faeffa2cb45dd_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e3a7ad576628a212_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e45f7fe24f42516c_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e45f7fe24f42516c_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e5d50cd9de770b71_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e5d50cd9de770b71_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e606f987e90eecfe_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e606f987e90eecfe_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e63090d88b6b8124_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e63090d88b6b8124_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e69b3e751beb9cd9_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e69b3e751beb9cd9_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e6ce1cd686a291b3_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e6ce1cd686a291b3_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e7d51e9025be4160_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e7d51e9025be4160_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e977a1737646c9f5_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e980ae5f17e00936_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e980ae5f17e00936_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e9c8176b1805e71a_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/e9c8176b1805e71a_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/ead371c53716ec6c_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/ead371c53716ec6c_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/eda95e242956ccdb_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/eda95e242956ccdb_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/edc693d5691540ad_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/edc693d5691540ad_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/edd314674f9a6fe9_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/edd314674f9a6fe9_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/ef0ce79a75dd6888_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/ef709efc8fbd75fc_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/ef709efc8fbd75fc_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/efd63c731f06a9d4_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/efd63c731f06a9d4_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/f0b0433cafb76cbe_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/f0b0433cafb76cbe_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/f1af45235abbe233_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/f1af45235abbe233_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/f2d3d61504da59db_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/f2d3d61504da59db_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/f2d9b4970698a4d6_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/f2d9b4970698a4d6_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/f6de3c1ae7cb7b0b_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/f6de3c1ae7cb7b0b_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/f722e6f38b721bac_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/f722e6f38b721bac_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/f9a3a6dc89543b5d_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/f9a3a6dc89543b5d_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/f9a3cf3b54d11f84_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/f9a3cf3b54d11f84_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/fbc355b7f2d58018_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/fd6db14f4d63c6ff_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/ff07997d6e90f861_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/ff07997d6e90f861_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/index +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/7523aa49-1dc9-45ad-aae3-bdd64e12334d/index-dir/the-real-index +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/CacheStorage/b2d132a53360a22ce10092746d838d3b7a26881f/index.txt +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/Database/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/Database/CURRENT +0 -1
- package/dist/run-chrome-profile/Default/Service Worker/Database/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/Database/LOG +0 -3
- package/dist/run-chrome-profile/Default/Service Worker/Database/LOG.old +0 -3
- package/dist/run-chrome-profile/Default/Service Worker/Database/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/035aa9dff41235ca_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/035aa9dff41235ca_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/0b3d59c1b2221f76_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/0b3d59c1b2221f76_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/0d3086d7cda635d4_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/0d3086d7cda635d4_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/14d9579db3cecf92_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/14d9579db3cecf92_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/24c63f76fe95e064_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/24c63f76fe95e064_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/2687cdb408524ecb_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/2687cdb408524ecb_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/2beb0213504d07fc_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/2beb0213504d07fc_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/4902dcae2fc4fb98_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/4902dcae2fc4fb98_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/5ce2b92834133eaf_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/5ce2b92834133eaf_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/612515a195f42efe_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/612515a195f42efe_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/6fc459ba53cb570a_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/6fc459ba53cb570a_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/7b4fd8111178d5b1_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/7b4fd8111178d5b1_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/8a729281c4672a97_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/96820d56514364fb_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/96820d56514364fb_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/9aea9b2c55dd8602_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/9aea9b2c55dd8602_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/ad0c92dfa52e69b6_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/afe1e5264eea33bc_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/afe1e5264eea33bc_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/b2efa64ecb36f8f1_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/b4f0088745fc7b82_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/b4f0088745fc7b82_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/d10f805e771d7acb_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/d10f805e771d7acb_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/f0de8c2de34c385b_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/f0de8c2de34c385b_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/f3ab1e1292e135fa_0 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/f3ab1e1292e135fa_1 +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/index +0 -0
- package/dist/run-chrome-profile/Default/Service Worker/ScriptCache/index-dir/the-real-index +0 -0
- package/dist/run-chrome-profile/Default/Session Storage/000004.log +0 -0
- package/dist/run-chrome-profile/Default/Session Storage/000005.ldb +0 -0
- package/dist/run-chrome-profile/Default/Session Storage/CURRENT +0 -1
- package/dist/run-chrome-profile/Default/Session Storage/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Session Storage/LOG +0 -3
- package/dist/run-chrome-profile/Default/Session Storage/LOG.old +0 -3
- package/dist/run-chrome-profile/Default/Session Storage/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Sessions/Session_13377058953741237 +0 -0
- package/dist/run-chrome-profile/Default/Sessions/Session_13377061656641166 +0 -0
- package/dist/run-chrome-profile/Default/Sessions/Tabs_13377058954674737 +0 -0
- package/dist/run-chrome-profile/Default/Sessions/Tabs_13377061657331745 +0 -0
- package/dist/run-chrome-profile/Default/Shared Dictionary/cache/index +0 -0
- package/dist/run-chrome-profile/Default/Shared Dictionary/cache/index-dir/the-real-index +0 -0
- package/dist/run-chrome-profile/Default/Shared Dictionary/db +0 -0
- package/dist/run-chrome-profile/Default/Shared Dictionary/db-journal +0 -0
- package/dist/run-chrome-profile/Default/SharedStorage +0 -0
- package/dist/run-chrome-profile/Default/Shortcuts +0 -0
- package/dist/run-chrome-profile/Default/Shortcuts-journal +0 -0
- package/dist/run-chrome-profile/Default/Site Characteristics Database/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Site Characteristics Database/CURRENT +0 -1
- package/dist/run-chrome-profile/Default/Site Characteristics Database/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Site Characteristics Database/LOG +0 -3
- package/dist/run-chrome-profile/Default/Site Characteristics Database/LOG.old +0 -3
- package/dist/run-chrome-profile/Default/Site Characteristics Database/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Sync Data/LevelDB/000003.log +0 -0
- package/dist/run-chrome-profile/Default/Sync Data/LevelDB/CURRENT +0 -1
- package/dist/run-chrome-profile/Default/Sync Data/LevelDB/LOCK +0 -0
- package/dist/run-chrome-profile/Default/Sync Data/LevelDB/LOG +0 -3
- package/dist/run-chrome-profile/Default/Sync Data/LevelDB/LOG.old +0 -3
- package/dist/run-chrome-profile/Default/Sync Data/LevelDB/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/Top Sites +0 -0
- package/dist/run-chrome-profile/Default/Top Sites-journal +0 -0
- package/dist/run-chrome-profile/Default/TransportSecurity +0 -1
- package/dist/run-chrome-profile/Default/Trust Tokens +0 -0
- package/dist/run-chrome-profile/Default/Trust Tokens-journal +0 -0
- package/dist/run-chrome-profile/Default/VideoDecodeStats/LOCK +0 -0
- package/dist/run-chrome-profile/Default/VideoDecodeStats/LOG +0 -0
- package/dist/run-chrome-profile/Default/VideoDecodeStats/LOG.old +0 -0
- package/dist/run-chrome-profile/Default/Visited Links +0 -0
- package/dist/run-chrome-profile/Default/Web Data +0 -0
- package/dist/run-chrome-profile/Default/Web Data-journal +0 -0
- package/dist/run-chrome-profile/Default/WebStorage/3/CacheStorage/index.txt +0 -1
- package/dist/run-chrome-profile/Default/WebStorage/3/IndexedDB/indexeddb.leveldb/000003.log +0 -0
- package/dist/run-chrome-profile/Default/WebStorage/3/IndexedDB/indexeddb.leveldb/CURRENT +0 -1
- package/dist/run-chrome-profile/Default/WebStorage/3/IndexedDB/indexeddb.leveldb/LOCK +0 -0
- package/dist/run-chrome-profile/Default/WebStorage/3/IndexedDB/indexeddb.leveldb/LOG +0 -3
- package/dist/run-chrome-profile/Default/WebStorage/3/IndexedDB/indexeddb.leveldb/LOG.old +0 -3
- package/dist/run-chrome-profile/Default/WebStorage/3/IndexedDB/indexeddb.leveldb/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/WebStorage/QuotaManager +0 -0
- package/dist/run-chrome-profile/Default/WebStorage/QuotaManager-journal +0 -0
- package/dist/run-chrome-profile/Default/commerce_subscription_db/LOCK +0 -0
- package/dist/run-chrome-profile/Default/commerce_subscription_db/LOG +0 -0
- package/dist/run-chrome-profile/Default/commerce_subscription_db/LOG.old +0 -0
- package/dist/run-chrome-profile/Default/discounts_db/LOCK +0 -0
- package/dist/run-chrome-profile/Default/discounts_db/LOG +0 -0
- package/dist/run-chrome-profile/Default/discounts_db/LOG.old +0 -0
- package/dist/run-chrome-profile/Default/heavy_ad_intervention_opt_out.db +0 -0
- package/dist/run-chrome-profile/Default/heavy_ad_intervention_opt_out.db-journal +0 -0
- package/dist/run-chrome-profile/Default/optimization_guide_hint_cache_store/LOCK +0 -0
- package/dist/run-chrome-profile/Default/optimization_guide_hint_cache_store/LOG +0 -0
- package/dist/run-chrome-profile/Default/optimization_guide_hint_cache_store/LOG.old +0 -0
- package/dist/run-chrome-profile/Default/parcel_tracking_db/LOCK +0 -0
- package/dist/run-chrome-profile/Default/parcel_tracking_db/LOG +0 -0
- package/dist/run-chrome-profile/Default/parcel_tracking_db/LOG.old +0 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/000005.ldb +0 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/000007.log +0 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/000008.ldb +0 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/CURRENT +0 -1
- package/dist/run-chrome-profile/Default/shared_proto_db/LOCK +0 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/LOG +0 -3
- package/dist/run-chrome-profile/Default/shared_proto_db/LOG.old +0 -3
- package/dist/run-chrome-profile/Default/shared_proto_db/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/metadata/000003.log +0 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/metadata/CURRENT +0 -1
- package/dist/run-chrome-profile/Default/shared_proto_db/metadata/LOCK +0 -0
- package/dist/run-chrome-profile/Default/shared_proto_db/metadata/LOG +0 -3
- package/dist/run-chrome-profile/Default/shared_proto_db/metadata/LOG.old +0 -3
- package/dist/run-chrome-profile/Default/shared_proto_db/metadata/MANIFEST-000001 +0 -0
- package/dist/run-chrome-profile/Default/trusted_vault.pb +0 -2
- package/dist/run-chrome-profile/GrShaderCache/data_0 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/data_1 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/data_2 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/data_3 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0000fc +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0000fd +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0000fe +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0000ff +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000100 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000101 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000102 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000103 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000104 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000105 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000106 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000107 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000108 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000109 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00010a +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00010b +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00010c +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00010d +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00010e +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00010f +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000110 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000111 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000112 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000113 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000114 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000115 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000116 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000117 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000118 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000119 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00011a +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00011b +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00011c +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00011d +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00011e +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00011f +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000120 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000121 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000122 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000123 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000124 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000125 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000126 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000127 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000128 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000129 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00012a +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00012b +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00012c +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00012d +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00012e +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00012f +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000130 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000131 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000132 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000133 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000134 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000135 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000136 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000137 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000138 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000139 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00013a +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00013b +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00013c +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00013d +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00013e +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00013f +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000140 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000141 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000142 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000143 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000144 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000145 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000146 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000147 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000148 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000149 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00014a +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00014b +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00014c +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00014d +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00014e +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00014f +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000150 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000151 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000152 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000153 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000154 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000155 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000156 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000157 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000158 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000159 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00015a +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00015b +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00015c +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00015d +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00015e +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00015f +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000160 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000161 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000162 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000163 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000164 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000165 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000166 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000167 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000168 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000169 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00016a +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00016b +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00016c +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00016d +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00016e +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00016f +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000170 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000171 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000172 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000173 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000174 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000175 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000176 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000177 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000178 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000179 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00017a +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00017b +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00017c +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00017d +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00017e +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00017f +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000180 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000181 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000182 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000183 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000184 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000185 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000186 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000187 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000188 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000189 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00018a +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00018b +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00018c +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00018d +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00018e +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00018f +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000190 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000191 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000192 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000193 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000194 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000195 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000196 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000197 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000198 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000199 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00019a +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00019b +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00019c +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00019d +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00019e +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00019f +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001a0 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001a1 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001a2 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001a3 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001a4 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001a5 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001a6 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001a7 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001a8 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001a9 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001aa +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001ab +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001ac +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001ad +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001ae +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001af +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001b0 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001b1 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001b2 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001b3 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001b4 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001b5 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001b6 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001b7 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001b8 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001b9 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001ba +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001bb +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001bc +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001bd +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001be +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001bf +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001c0 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001c1 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001c2 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001c3 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001c4 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001c5 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001c6 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001c7 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001c8 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001c9 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001ca +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001cb +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001cc +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001cd +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001ce +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001cf +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001d0 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001d1 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001d2 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001d3 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001d4 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001d5 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001d6 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001d7 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001d8 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001d9 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001da +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001db +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001dc +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001dd +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001de +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001df +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001e0 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001e1 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001e2 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001e3 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001e4 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001e5 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001e6 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001e7 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001e8 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001e9 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001ea +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001eb +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001ec +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001ed +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001ee +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001ef +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001f0 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001f1 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001f2 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001f3 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001f4 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001f5 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001f6 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001f7 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001f8 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001f9 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001fa +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001fb +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001fc +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001fd +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001fe +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_0001ff +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000200 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000201 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000202 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000203 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000204 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000205 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000206 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000207 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000208 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000209 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00020a +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00020b +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00020c +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00020d +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00020e +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00020f +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000210 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000211 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000212 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000213 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000214 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000215 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000216 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000217 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000218 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000219 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00021a +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00021b +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00021c +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00021d +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00021e +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_00021f +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000220 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000221 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000222 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/f_000223 +0 -0
- package/dist/run-chrome-profile/GrShaderCache/index +0 -0
- package/dist/run-chrome-profile/GraphiteDawnCache/data_0 +0 -0
- package/dist/run-chrome-profile/GraphiteDawnCache/data_1 +0 -0
- package/dist/run-chrome-profile/GraphiteDawnCache/data_2 +0 -0
- package/dist/run-chrome-profile/GraphiteDawnCache/data_3 +0 -0
- package/dist/run-chrome-profile/GraphiteDawnCache/index +0 -0
- package/dist/run-chrome-profile/Last Version +0 -1
- package/dist/run-chrome-profile/Local State +0 -1
- package/dist/run-chrome-profile/ShaderCache/data_0 +0 -0
- package/dist/run-chrome-profile/ShaderCache/data_1 +0 -0
- package/dist/run-chrome-profile/ShaderCache/data_2 +0 -0
- package/dist/run-chrome-profile/ShaderCache/data_3 +0 -0
- package/dist/run-chrome-profile/ShaderCache/index +0 -0
- package/dist/run-chrome-profile/Variations +0 -1
- package/dist/run-chrome-profile/first_party_sets.db +0 -0
- package/dist/run-chrome-profile/first_party_sets.db-journal +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/13/E6DC4029A1E4B4C1/5214F3626098F89F/model-info.pb +0 -1
- package/dist/run-chrome-profile/optimization_guide_model_store/13/E6DC4029A1E4B4C1/5214F3626098F89F/model.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/15/E6DC4029A1E4B4C1/C042DF9858C3DC85/VERSION.txt +0 -4
- package/dist/run-chrome-profile/optimization_guide_model_store/15/E6DC4029A1E4B4C1/C042DF9858C3DC85/model-info.pb +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/15/E6DC4029A1E4B4C1/C042DF9858C3DC85/model.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/15/E6DC4029A1E4B4C1/C042DF9858C3DC85/override_list.pb.gz +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/2/E6DC4029A1E4B4C1/07ADF3AE9E215D61/model-info.pb +0 -1
- package/dist/run-chrome-profile/optimization_guide_model_store/2/E6DC4029A1E4B4C1/07ADF3AE9E215D61/model.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/20/E6DC4029A1E4B4C1/635A66BC8C3E0CB5/model-info.pb +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/20/E6DC4029A1E4B4C1/635A66BC8C3E0CB5/model.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/25/E6DC4029A1E4B4C1/D9F1A3CF8695250B/model-info.pb +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/25/E6DC4029A1E4B4C1/D9F1A3CF8695250B/model.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/25/E6DC4029A1E4B4C1/D9F1A3CF8695250B/visual_model_desktop.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/26/E6DC4029A1E4B4C1/2D18121340A61264/model-info.pb +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/26/E6DC4029A1E4B4C1/2D18121340A61264/model.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/45/E6DC4029A1E4B4C1/2AE56B5BE0A3E227/model-info.pb +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/45/E6DC4029A1E4B4C1/2AE56B5BE0A3E227/model.tflite +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/9/E6DC4029A1E4B4C1/25AA4C0185AA3F84/model-info.pb +0 -0
- package/dist/run-chrome-profile/optimization_guide_model_store/9/E6DC4029A1E4B4C1/25AA4C0185AA3F84/model.tflite +0 -0
- package/dist/run-chrome-profile/segmentation_platform/ukm_db +0 -0
- package/dist/run-chrome-profile/segmentation_platform/ukm_db-journal +0 -0
- package/dist/run-chromium-based-profile/ChromeFeatureState +0 -6
- package/dist/run-chromium-based-profile/Default/Affiliation Database +0 -0
- package/dist/run-chromium-based-profile/Default/Affiliation Database-journal +0 -0
- package/dist/run-chromium-based-profile/Default/AutofillStrikeDatabase/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/AutofillStrikeDatabase/LOG +0 -0
- package/dist/run-chromium-based-profile/Default/BraveWallet/Brave Wallet Storage/000003.log +0 -0
- package/dist/run-chromium-based-profile/Default/BraveWallet/Brave Wallet Storage/CURRENT +0 -1
- package/dist/run-chromium-based-profile/Default/BraveWallet/Brave Wallet Storage/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/BraveWallet/Brave Wallet Storage/LOG +0 -2
- package/dist/run-chromium-based-profile/Default/BraveWallet/Brave Wallet Storage/MANIFEST-000001 +0 -0
- package/dist/run-chromium-based-profile/Default/BudgetDatabase/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/BudgetDatabase/LOG +0 -0
- package/dist/run-chromium-based-profile/Default/Cache/Cache_Data/080b39634b991e2e_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Cache/Cache_Data/201270aa7dde6d0e_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Cache/Cache_Data/47b75459b543c6f3_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Cache/Cache_Data/679db9f49add709e_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Cache/Cache_Data/7a3da54aa7563d98_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Cache/Cache_Data/8b1915a279407826_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Cache/Cache_Data/a9bc07e57e1eda0f_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Cache/Cache_Data/c9bfcf6d4d6dc29d_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Cache/Cache_Data/cc0e67ed024d22be_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Cache/Cache_Data/index +0 -0
- package/dist/run-chromium-based-profile/Default/Cache/Cache_Data/index-dir/the-real-index +0 -0
- package/dist/run-chromium-based-profile/Default/ClientCertificates/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/ClientCertificates/LOG +0 -0
- package/dist/run-chromium-based-profile/Default/Code Cache/js/0861135386d2c738_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Code Cache/js/218fe828c74bdb99_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Code Cache/js/375fcc15478e2373_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Code Cache/js/3b870d8531169916_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Code Cache/js/a8bfd7ab3bf7adbd_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Code Cache/js/index +0 -0
- package/dist/run-chromium-based-profile/Default/Code Cache/js/index-dir/the-real-index +0 -0
- package/dist/run-chromium-based-profile/Default/Code Cache/wasm/index +0 -0
- package/dist/run-chromium-based-profile/Default/Code Cache/wasm/index-dir/the-real-index +0 -0
- package/dist/run-chromium-based-profile/Default/Cookies +0 -0
- package/dist/run-chromium-based-profile/Default/Cookies-journal +0 -0
- package/dist/run-chromium-based-profile/Default/DawnGraphiteCache/data_0 +0 -0
- package/dist/run-chromium-based-profile/Default/DawnGraphiteCache/data_1 +0 -0
- package/dist/run-chromium-based-profile/Default/DawnGraphiteCache/data_2 +0 -0
- package/dist/run-chromium-based-profile/Default/DawnGraphiteCache/data_3 +0 -0
- package/dist/run-chromium-based-profile/Default/DawnGraphiteCache/index +0 -0
- package/dist/run-chromium-based-profile/Default/DawnWebGPUCache/data_0 +0 -0
- package/dist/run-chromium-based-profile/Default/DawnWebGPUCache/data_1 +0 -0
- package/dist/run-chromium-based-profile/Default/DawnWebGPUCache/data_2 +0 -0
- package/dist/run-chromium-based-profile/Default/DawnWebGPUCache/data_3 +0 -0
- package/dist/run-chromium-based-profile/Default/DawnWebGPUCache/index +0 -0
- package/dist/run-chromium-based-profile/Default/Download Service/EntryDB/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/Download Service/EntryDB/LOG +0 -0
- package/dist/run-chromium-based-profile/Default/Extension Rules/000003.log +0 -0
- package/dist/run-chromium-based-profile/Default/Extension Rules/CURRENT +0 -1
- package/dist/run-chromium-based-profile/Default/Extension Rules/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/Extension Rules/LOG +0 -2
- package/dist/run-chromium-based-profile/Default/Extension Rules/MANIFEST-000001 +0 -0
- package/dist/run-chromium-based-profile/Default/Extension Scripts/000003.log +0 -0
- package/dist/run-chromium-based-profile/Default/Extension Scripts/CURRENT +0 -1
- package/dist/run-chromium-based-profile/Default/Extension Scripts/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/Extension Scripts/LOG +0 -2
- package/dist/run-chromium-based-profile/Default/Extension Scripts/MANIFEST-000001 +0 -0
- package/dist/run-chromium-based-profile/Default/Extension State/000003.log +0 -0
- package/dist/run-chromium-based-profile/Default/Extension State/CURRENT +0 -1
- package/dist/run-chromium-based-profile/Default/Extension State/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/Extension State/LOG +0 -2
- package/dist/run-chromium-based-profile/Default/Extension State/MANIFEST-000001 +0 -0
- package/dist/run-chromium-based-profile/Default/Favicons +0 -0
- package/dist/run-chromium-based-profile/Default/Favicons-journal +0 -0
- package/dist/run-chromium-based-profile/Default/Feature Engagement Tracker/AvailabilityDB/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/Feature Engagement Tracker/AvailabilityDB/LOG +0 -0
- package/dist/run-chromium-based-profile/Default/Feature Engagement Tracker/EventDB/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/Feature Engagement Tracker/EventDB/LOG +0 -0
- package/dist/run-chromium-based-profile/Default/GCM Store/Encryption/000003.log +0 -0
- package/dist/run-chromium-based-profile/Default/GCM Store/Encryption/CURRENT +0 -1
- package/dist/run-chromium-based-profile/Default/GCM Store/Encryption/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/GCM Store/Encryption/LOG +0 -2
- package/dist/run-chromium-based-profile/Default/GCM Store/Encryption/MANIFEST-000001 +0 -0
- package/dist/run-chromium-based-profile/Default/GPUCache/data_0 +0 -0
- package/dist/run-chromium-based-profile/Default/GPUCache/data_1 +0 -0
- package/dist/run-chromium-based-profile/Default/GPUCache/data_2 +0 -0
- package/dist/run-chromium-based-profile/Default/GPUCache/data_3 +0 -0
- package/dist/run-chromium-based-profile/Default/GPUCache/index +0 -0
- package/dist/run-chromium-based-profile/Default/History +0 -0
- package/dist/run-chromium-based-profile/Default/History-journal +0 -0
- package/dist/run-chromium-based-profile/Default/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/LOG +0 -0
- package/dist/run-chromium-based-profile/Default/Local Extension Settings/ohlencieiipommannpdfcmfdpjjmeolj/000003.log +0 -0
- package/dist/run-chromium-based-profile/Default/Local Extension Settings/ohlencieiipommannpdfcmfdpjjmeolj/CURRENT +0 -1
- package/dist/run-chromium-based-profile/Default/Local Extension Settings/ohlencieiipommannpdfcmfdpjjmeolj/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/Local Extension Settings/ohlencieiipommannpdfcmfdpjjmeolj/LOG +0 -2
- package/dist/run-chromium-based-profile/Default/Local Extension Settings/ohlencieiipommannpdfcmfdpjjmeolj/MANIFEST-000001 +0 -0
- package/dist/run-chromium-based-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/000003.log +0 -0
- package/dist/run-chromium-based-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/CURRENT +0 -1
- package/dist/run-chromium-based-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/LOG +0 -2
- package/dist/run-chromium-based-profile/Default/Local Extension Settings/pbpgonifamlpcahjkkkfelffkegofkgg/MANIFEST-000001 +0 -0
- package/dist/run-chromium-based-profile/Default/Local Storage/leveldb/000003.log +0 -0
- package/dist/run-chromium-based-profile/Default/Local Storage/leveldb/CURRENT +0 -1
- package/dist/run-chromium-based-profile/Default/Local Storage/leveldb/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/Local Storage/leveldb/LOG +0 -2
- package/dist/run-chromium-based-profile/Default/Local Storage/leveldb/MANIFEST-000001 +0 -0
- package/dist/run-chromium-based-profile/Default/Login Data +0 -0
- package/dist/run-chromium-based-profile/Default/Login Data For Account +0 -0
- package/dist/run-chromium-based-profile/Default/Login Data For Account-journal +0 -0
- package/dist/run-chromium-based-profile/Default/Login Data-journal +0 -0
- package/dist/run-chromium-based-profile/Default/Network Action Predictor +0 -0
- package/dist/run-chromium-based-profile/Default/Network Action Predictor-journal +0 -0
- package/dist/run-chromium-based-profile/Default/Network Persistent State +0 -1
- package/dist/run-chromium-based-profile/Default/PersistentOriginTrials/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/PersistentOriginTrials/LOG +0 -0
- package/dist/run-chromium-based-profile/Default/Preferences +0 -1
- package/dist/run-chromium-based-profile/Default/PreferredApps +0 -1
- package/dist/run-chromium-based-profile/Default/README +0 -1
- package/dist/run-chromium-based-profile/Default/Reporting and NEL +0 -0
- package/dist/run-chromium-based-profile/Default/Reporting and NEL-journal +0 -0
- package/dist/run-chromium-based-profile/Default/SCT Auditing Pending Reports +0 -1
- package/dist/run-chromium-based-profile/Default/Safe Browsing Cookies +0 -0
- package/dist/run-chromium-based-profile/Default/Safe Browsing Cookies-journal +0 -0
- package/dist/run-chromium-based-profile/Default/Secure Preferences +0 -1
- package/dist/run-chromium-based-profile/Default/Service Worker/Database/000003.log +0 -0
- package/dist/run-chromium-based-profile/Default/Service Worker/Database/CURRENT +0 -1
- package/dist/run-chromium-based-profile/Default/Service Worker/Database/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/Service Worker/Database/LOG +0 -2
- package/dist/run-chromium-based-profile/Default/Service Worker/Database/MANIFEST-000001 +0 -0
- package/dist/run-chromium-based-profile/Default/Service Worker/ScriptCache/2cc80dabc69f58b6_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Service Worker/ScriptCache/4cb013792b196a35_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Service Worker/ScriptCache/ba23d8ecda68de77_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Service Worker/ScriptCache/f1cdccba37924bda_0 +0 -0
- package/dist/run-chromium-based-profile/Default/Service Worker/ScriptCache/index +0 -0
- package/dist/run-chromium-based-profile/Default/Service Worker/ScriptCache/index-dir/the-real-index +0 -0
- package/dist/run-chromium-based-profile/Default/Session Storage/000003.log +0 -0
- package/dist/run-chromium-based-profile/Default/Session Storage/CURRENT +0 -1
- package/dist/run-chromium-based-profile/Default/Session Storage/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/Session Storage/LOG +0 -2
- package/dist/run-chromium-based-profile/Default/Session Storage/MANIFEST-000001 +0 -0
- package/dist/run-chromium-based-profile/Default/Sessions/Session_13376438252977413 +0 -0
- package/dist/run-chromium-based-profile/Default/Sessions/Tabs_13376438296572751 +0 -0
- package/dist/run-chromium-based-profile/Default/Shared Dictionary/cache/index +0 -0
- package/dist/run-chromium-based-profile/Default/Shared Dictionary/cache/index-dir/the-real-index +0 -0
- package/dist/run-chromium-based-profile/Default/Shared Dictionary/db +0 -0
- package/dist/run-chromium-based-profile/Default/Shared Dictionary/db-journal +0 -0
- package/dist/run-chromium-based-profile/Default/Shortcuts +0 -0
- package/dist/run-chromium-based-profile/Default/Shortcuts-journal +0 -0
- package/dist/run-chromium-based-profile/Default/Site Characteristics Database/000003.log +0 -0
- package/dist/run-chromium-based-profile/Default/Site Characteristics Database/CURRENT +0 -1
- package/dist/run-chromium-based-profile/Default/Site Characteristics Database/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/Site Characteristics Database/LOG +0 -2
- package/dist/run-chromium-based-profile/Default/Site Characteristics Database/MANIFEST-000001 +0 -0
- package/dist/run-chromium-based-profile/Default/Sync Data/LevelDB/000003.log +0 -0
- package/dist/run-chromium-based-profile/Default/Sync Data/LevelDB/CURRENT +0 -1
- package/dist/run-chromium-based-profile/Default/Sync Data/LevelDB/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/Sync Data/LevelDB/LOG +0 -2
- package/dist/run-chromium-based-profile/Default/Sync Data/LevelDB/MANIFEST-000001 +0 -0
- package/dist/run-chromium-based-profile/Default/Top Sites +0 -0
- package/dist/run-chromium-based-profile/Default/Top Sites-journal +0 -0
- package/dist/run-chromium-based-profile/Default/TransportSecurity +0 -1
- package/dist/run-chromium-based-profile/Default/Visited Links +0 -0
- package/dist/run-chromium-based-profile/Default/Web Data +0 -0
- package/dist/run-chromium-based-profile/Default/Web Data-journal +0 -0
- package/dist/run-chromium-based-profile/Default/WebStorage/QuotaManager +0 -0
- package/dist/run-chromium-based-profile/Default/WebStorage/QuotaManager-journal +0 -0
- package/dist/run-chromium-based-profile/Default/commerce_subscription_db/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/commerce_subscription_db/LOG +0 -0
- package/dist/run-chromium-based-profile/Default/discounts_db/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/discounts_db/LOG +0 -0
- package/dist/run-chromium-based-profile/Default/heavy_ad_intervention_opt_out.db +0 -0
- package/dist/run-chromium-based-profile/Default/heavy_ad_intervention_opt_out.db-journal +0 -0
- package/dist/run-chromium-based-profile/Default/parcel_tracking_db/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/parcel_tracking_db/LOG +0 -0
- package/dist/run-chromium-based-profile/Default/shared_proto_db/000003.log +0 -0
- package/dist/run-chromium-based-profile/Default/shared_proto_db/CURRENT +0 -1
- package/dist/run-chromium-based-profile/Default/shared_proto_db/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/shared_proto_db/LOG +0 -2
- package/dist/run-chromium-based-profile/Default/shared_proto_db/MANIFEST-000001 +0 -0
- package/dist/run-chromium-based-profile/Default/shared_proto_db/metadata/000003.log +0 -0
- package/dist/run-chromium-based-profile/Default/shared_proto_db/metadata/CURRENT +0 -1
- package/dist/run-chromium-based-profile/Default/shared_proto_db/metadata/LOCK +0 -0
- package/dist/run-chromium-based-profile/Default/shared_proto_db/metadata/LOG +0 -2
- package/dist/run-chromium-based-profile/Default/shared_proto_db/metadata/MANIFEST-000001 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/data_0 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/data_1 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/data_2 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/data_3 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_000001 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_000002 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_000003 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_000004 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_000005 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_000006 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_000007 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_000008 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_000009 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_00000a +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_00000b +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_00000c +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_00000d +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_00000e +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_00000f +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_000010 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_000011 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_000012 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_000013 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_000014 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_000015 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_000016 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/f_000017 +0 -0
- package/dist/run-chromium-based-profile/GrShaderCache/index +0 -0
- package/dist/run-chromium-based-profile/GraphiteDawnCache/data_0 +0 -0
- package/dist/run-chromium-based-profile/GraphiteDawnCache/data_1 +0 -0
- package/dist/run-chromium-based-profile/GraphiteDawnCache/data_2 +0 -0
- package/dist/run-chromium-based-profile/GraphiteDawnCache/data_3 +0 -0
- package/dist/run-chromium-based-profile/GraphiteDawnCache/index +0 -0
- package/dist/run-chromium-based-profile/Last Version +0 -1
- package/dist/run-chromium-based-profile/Local State +0 -1
- package/dist/run-chromium-based-profile/ShaderCache/data_0 +0 -0
- package/dist/run-chromium-based-profile/ShaderCache/data_1 +0 -0
- package/dist/run-chromium-based-profile/ShaderCache/data_2 +0 -0
- package/dist/run-chromium-based-profile/ShaderCache/data_3 +0 -0
- package/dist/run-chromium-based-profile/ShaderCache/index +0 -0
- package/dist/run-chromium-based-profile/Variations +0 -1
- package/dist/run-chromium-based-profile/adcocjohghhfpidemphmcmlmhnfgikei/1.0.248/list.txt +0 -3500
- package/dist/run-chromium-based-profile/adcocjohghhfpidemphmcmlmhnfgikei/1.0.248/manifest.fingerprint +0 -1
- package/dist/run-chromium-based-profile/adcocjohghhfpidemphmcmlmhnfgikei/1.0.248/manifest.json +0 -7
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/Greaselion.json +0 -163
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/clean-urls-permissions.json +0 -10
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/clean-urls.json +0 -856
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/debounce.json +0 -544
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/https-upgrade-exceptions-list.txt +0 -5870
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/localhost-permission-allow-list.txt +0 -55
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/request-otr.json +0 -44
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/scripts/brave_rewards/publisher/github/githubAutoContribution.bundle.js +0 -1
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/scripts/brave_rewards/publisher/github/githubBase.bundle.js +0 -1
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/scripts/brave_rewards/publisher/reddit/redditAutoContribution.bundle.js +0 -1
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/scripts/brave_rewards/publisher/reddit/redditBase.bundle.js +0 -1
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/scripts/brave_rewards/publisher/twitch/twitchAutoContribution.bundle.js +0 -1
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/scripts/brave_rewards/publisher/twitch/twitchBase.bundle.js +0 -1
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/scripts/brave_rewards/publisher/twitter/twitterAutoContribution.bundle.js +0 -1
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/scripts/brave_rewards/publisher/twitter/twitterBase.bundle.js +0 -1
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/scripts/brave_rewards/publisher/vimeo/vimeoAutoContribution.bundle.js +0 -1
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/scripts/brave_rewards/publisher/vimeo/vimeoBase.bundle.js +0 -1
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/scripts/brave_rewards/publisher/youtube/youtubeAutoContribution.bundle.js +0 -1
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/scripts/brave_rewards/publisher/youtube/youtubeBase.bundle.js +0 -1
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/1/webcompat-exceptions.json +0 -131
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/manifest.fingerprint +0 -1
- package/dist/run-chromium-based-profile/afalakplffnnnlkncjhbmahjfjhmlkal/1.0.969/manifest.json +0 -7
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/StudentNTP_Alyssa-Skala_x1280.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/StudentNTP_Aurora-Tennant_x1140.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/StudentNTP_Erin-Gottschalk_v2_x1295.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/StudentNTP_John-Ng_x1280.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/StudentNTP_Luke-Berrigan_x1280.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/StudentNTP_Sam-Richter_x0825_WINNER.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/aleks-eva-1.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/aleks-eva-3.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/carla-gomez-1.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/eric-patterson-1.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/eric-patterson-2.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/gordon-ross-1.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/lori-jean.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/manifest.fingerprint +0 -1
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/manifest.json +0 -1
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/minkyeong-shin.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/mohammad-usaid-abbasi.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/nabil-george.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/nadeem-choudhary-1.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/nadeem-choudhary-2.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/photo.json +0 -1
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/sean-o-riordan.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/spencer-moore-1.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/spencer-moore-2.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/spencer-moore-3.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/spencer-moore-4.jpg +0 -0
- package/dist/run-chromium-based-profile/aoojcmojmmcbpfgoecoadbdpnagfchel/1.0.15/zoltan-malovanyi.jpg +0 -0
- package/dist/run-chromium-based-profile/bfpgedeaaibpoidldhjcknekahbikncb/1.0.9679/list.txt +0 -852
- package/dist/run-chromium-based-profile/bfpgedeaaibpoidldhjcknekahbikncb/1.0.9679/manifest.fingerprint +0 -1
- package/dist/run-chromium-based-profile/bfpgedeaaibpoidldhjcknekahbikncb/1.0.9679/manifest.json +0 -7
- package/dist/run-chromium-based-profile/bpndlkddhgpmjengabcakadpcabgflca/1.0.1724/33f66fe8-0426-468b-b163-942ed3665fe0.jpg +0 -0
- package/dist/run-chromium-based-profile/bpndlkddhgpmjengabcakadpcabgflca/1.0.1724/5bd08a20-a160-44ab-881c-435ac79e8049.png +0 -0
- package/dist/run-chromium-based-profile/bpndlkddhgpmjengabcakadpcabgflca/1.0.1724/5e04d14d-b59b-4a3f-a0e7-db4b11a03a2a.jpg +0 -0
- package/dist/run-chromium-based-profile/bpndlkddhgpmjengabcakadpcabgflca/1.0.1724/74cb54d6-6075-4c98-9719-fa1b90886a47.png +0 -0
- package/dist/run-chromium-based-profile/bpndlkddhgpmjengabcakadpcabgflca/1.0.1724/79b3ad26-e0eb-4b0d-9d27-f2f699a0d75b.jpg +0 -0
- package/dist/run-chromium-based-profile/bpndlkddhgpmjengabcakadpcabgflca/1.0.1724/a4908f57-425d-48cb-9824-592beb461629.jpg +0 -0
- package/dist/run-chromium-based-profile/bpndlkddhgpmjengabcakadpcabgflca/1.0.1724/ebef1551-697d-4df2-af22-84812c409fba.png +0 -0
- package/dist/run-chromium-based-profile/bpndlkddhgpmjengabcakadpcabgflca/1.0.1724/manifest.fingerprint +0 -1
- package/dist/run-chromium-based-profile/bpndlkddhgpmjengabcakadpcabgflca/1.0.1724/manifest.json +0 -1
- package/dist/run-chromium-based-profile/bpndlkddhgpmjengabcakadpcabgflca/1.0.1724/photo.json +0 -1
- package/dist/run-chromium-based-profile/cdbbhgbmjhfnhnmgeddbliobbofkgdhe/1.0.10633/list.txt +0 -32249
- package/dist/run-chromium-based-profile/cdbbhgbmjhfnhnmgeddbliobbofkgdhe/1.0.10633/manifest.fingerprint +0 -1
- package/dist/run-chromium-based-profile/cdbbhgbmjhfnhnmgeddbliobbofkgdhe/1.0.10633/manifest.json +0 -7
- package/dist/run-chromium-based-profile/component_crx_cache/adcocjohghhfpidemphmcmlmhnfgikei_c571b43a7f1a86bdb8a7456c91476686bcc906b5e7b1839fe233b9cf21948593 +0 -0
- package/dist/run-chromium-based-profile/component_crx_cache/afalakplffnnnlkncjhbmahjfjhmlkal_5feae6bc96c5015a290216f39a6affe5360eddb4f46be35376c47091ac13eea8 +0 -0
- package/dist/run-chromium-based-profile/component_crx_cache/aoojcmojmmcbpfgoecoadbdpnagfchel_9f86d8efba865ca6f98389b7c55e368191b7954cd10b872da84de0b5382a247a +0 -0
- package/dist/run-chromium-based-profile/component_crx_cache/bfpgedeaaibpoidldhjcknekahbikncb_2476879219450ef1ab95e2e3370c0e164fb988b5f62beb294c3895d6cc8dc742 +0 -0
- package/dist/run-chromium-based-profile/component_crx_cache/bpndlkddhgpmjengabcakadpcabgflca_f9d0deaa61e2a3419c0d8df0aba944066fd2f241971d4b5af8ea87465b22d959 +0 -0
- package/dist/run-chromium-based-profile/component_crx_cache/cdbbhgbmjhfnhnmgeddbliobbofkgdhe_57374affbb998287101f5eeb06fcef5d0a609f3b7279159f24ea6aab65844c1b +0 -0
- package/dist/run-chromium-based-profile/component_crx_cache/gkboaolpopklhgplhaaiboijnklogmbc_ef46bc0eb4964941eda6cef8c6a4feba90dbd8f96a88492689485b40f3b358ff +0 -0
- package/dist/run-chromium-based-profile/component_crx_cache/iodkpdagapdfkphljnddpjlldadblomo_96510e46e793a18e631a04a6f1c4a03493b6e6a3dff797bfc3871728fac4f51d +0 -0
- package/dist/run-chromium-based-profile/component_crx_cache/mfddibmblmbccpadfndgakiopmmhebop_b34ad09c934ac476add2620f05a2fc082e30d5e937a8344021ce4774a6a8ec2d +0 -0
- package/dist/run-chromium-based-profile/first_party_sets.db +0 -0
- package/dist/run-chromium-based-profile/first_party_sets.db-journal +0 -0
- package/dist/run-chromium-based-profile/gkboaolpopklhgplhaaiboijnklogmbc/1.0.68/list_catalog.json +0 -1
- package/dist/run-chromium-based-profile/gkboaolpopklhgplhaaiboijnklogmbc/1.0.68/manifest.fingerprint +0 -1
- package/dist/run-chromium-based-profile/gkboaolpopklhgplhaaiboijnklogmbc/1.0.68/manifest.json +0 -7
- package/dist/run-chromium-based-profile/gkboaolpopklhgplhaaiboijnklogmbc/1.0.68/regional_catalog.json +0 -1
- package/dist/run-chromium-based-profile/iodkpdagapdfkphljnddpjlldadblomo/1.0.9037/list.txt +0 -178514
- package/dist/run-chromium-based-profile/iodkpdagapdfkphljnddpjlldadblomo/1.0.9037/manifest.fingerprint +0 -1
- package/dist/run-chromium-based-profile/iodkpdagapdfkphljnddpjlldadblomo/1.0.9037/manifest.json +0 -7
- package/dist/run-chromium-based-profile/mfddibmblmbccpadfndgakiopmmhebop/1.0.103/manifest.fingerprint +0 -1
- package/dist/run-chromium-based-profile/mfddibmblmbccpadfndgakiopmmhebop/1.0.103/manifest.json +0 -7
- package/dist/run-chromium-based-profile/mfddibmblmbccpadfndgakiopmmhebop/1.0.103/resources.json +0 -1
- package/dist/run-chromium-based-profile/segmentation_platform/ukm_db +0 -0
- package/dist/run-chromium-based-profile/segmentation_platform/ukm_db-journal +0 -0
- package/dist/run-gecko-based-profile/.parentlock +0 -0
- package/dist/run-gecko-based-profile/AlternateServices.bin +0 -0
- package/dist/run-gecko-based-profile/SiteSecurityServiceState.bin +0 -0
- package/dist/run-gecko-based-profile/activity-stream.weather_feed.json +0 -1
- package/dist/run-gecko-based-profile/addonStartup.json.lz4 +0 -0
- package/dist/run-gecko-based-profile/bounce-tracking-protection.sqlite +0 -0
- package/dist/run-gecko-based-profile/cache2/ce_T151c2VyQ29udGV4dElkPTUs +0 -0
- package/dist/run-gecko-based-profile/cache2/ce_T151c2VyQ29udGV4dElkPTUsYSw= +0 -0
- package/dist/run-gecko-based-profile/cache2/ce_T151c2VyQ29udGV4dElkPTYs +0 -0
- package/dist/run-gecko-based-profile/cache2/ce_T151c2VyQ29udGV4dElkPTYsYSw= +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/0A4DDCC11CEBCDAD66490C2477115E613EE22753 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/111AE63D71402EFB02DAB8AC254CA509866314D5 +0 -32
- package/dist/run-gecko-based-profile/cache2/entries/1365FF69235BAA6C45CE080BD7EEDD5270185333 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/15758DCACDAB740D5013FDFB1A7DE2E16CA99FB9 +0 -34
- package/dist/run-gecko-based-profile/cache2/entries/1C8C54682B3709CAC523039982C1103B7620A376 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/1CA100D2C0D96E081CACE16236BB9EA0F817F35D +0 -32
- package/dist/run-gecko-based-profile/cache2/entries/1E3B5A60EC7EEF66E5839B55BBFAA66405FACF63 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/24C9DF0972DD334A2DC66C223393C392A8C4BEF3 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/3DB6736909A2F89E43DFA8063B2372354D72B24B +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/3FCE666B77B79B9989860BE00CC856E3924BDBC1 +0 -34
- package/dist/run-gecko-based-profile/cache2/entries/6B5448E5DFF9D264423E4F26DC43A0DCC2576EDA +0 -32
- package/dist/run-gecko-based-profile/cache2/entries/6E27E780C7544AA7F2AAF8FB2EC13F8B8C56549B +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/6FA21C6830504629856068171294A76F2BEDF891 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/7B30395BC8EDC7C2D12D364C1B7B49D67DF89F20 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/82AE5B994AB008A265E58D91B0835AE4396CD6EF +0 -32
- package/dist/run-gecko-based-profile/cache2/entries/8439CA9AE0BD567B61EFF22EF87284C71C277A81 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/8B0017BC433ACF7C7EA6F774D308EC01F4DD8FAE +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/8C54AFCD2B13DD340E1D19895713348DA0F86E24 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/90D2374BBB78FD3C174AA1F0C1882FEAF19B069E +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/959568F6374B5CDCF1E43F481948F0F4CBF1AFDC +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/96C52BA3CB99F01D26C9454F1145BB82B188AD3F +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/99E8159CA51C2E952D060F0BE1C702685D6FD241 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/9ABA548395E26B305BA61603D734E8CE6479BD51 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/A6C7D9A14F03B65AD750D66C969024F80B57F791 +0 -32
- package/dist/run-gecko-based-profile/cache2/entries/BD327C25383E7E699D206558348E42FEC679589E +0 -32
- package/dist/run-gecko-based-profile/cache2/entries/C7323537924CDC72CDA8149C08020E045D92ACD1 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/CADBBF405AC345499780EFD34AD2411DFB74F618 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/CD4063AD344C93CB1DAFC7306CCDDC4F2B272733 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/D0435B453D27662C6AC03D6322996FFC2E0B6243 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/DA24344851FE0A3966B8F3AF5B9DBD27308DCA75 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/DB79B0F99DF85BD0944249BA6BF7922D98025803 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/DCA79A01BB193FDB63B9E7BA8B2EFA865A8BFBA6 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/DFA64071F5BAA21C643CC77683A3A33D12A5A5E1 +0 -0
- package/dist/run-gecko-based-profile/cache2/entries/FD61D1AACDDA037787ED2883D03072C1633969C0 +0 -0
- package/dist/run-gecko-based-profile/cert9.db +0 -0
- package/dist/run-gecko-based-profile/compatibility.ini +0 -5
- package/dist/run-gecko-based-profile/containers.json +0 -1
- package/dist/run-gecko-based-profile/content-prefs.sqlite +0 -0
- package/dist/run-gecko-based-profile/cookies.sqlite +0 -0
- package/dist/run-gecko-based-profile/cookies.sqlite-wal +0 -0
- package/dist/run-gecko-based-profile/datareporting/glean/db/data.safe.bin +0 -0
- package/dist/run-gecko-based-profile/datareporting/state.json +0 -1
- package/dist/run-gecko-based-profile/extension-preferences.json +0 -1
- package/dist/run-gecko-based-profile/extension-settings.json +0 -1
- package/dist/run-gecko-based-profile/extensions.json +0 -1
- package/dist/run-gecko-based-profile/favicons.sqlite +0 -0
- package/dist/run-gecko-based-profile/favicons.sqlite-wal +0 -0
- package/dist/run-gecko-based-profile/handlers.json +0 -1
- package/dist/run-gecko-based-profile/key4.db +0 -0
- package/dist/run-gecko-based-profile/permissions.sqlite +0 -0
- package/dist/run-gecko-based-profile/pkcs11.txt +0 -5
- package/dist/run-gecko-based-profile/places.sqlite +0 -0
- package/dist/run-gecko-based-profile/places.sqlite-wal +0 -0
- package/dist/run-gecko-based-profile/prefs.js +0 -210
- package/dist/run-gecko-based-profile/protections.sqlite +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/ads-track-digest256.sbstore +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/ads-track-digest256.vlpset +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/analytics-track-digest256.sbstore +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/analytics-track-digest256.vlpset +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/base-cryptomining-track-digest256.sbstore +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/base-cryptomining-track-digest256.vlpset +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/base-email-track-digest256.sbstore +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/base-email-track-digest256.vlpset +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/base-fingerprinting-track-digest256.sbstore +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/base-fingerprinting-track-digest256.vlpset +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/content-email-track-digest256.sbstore +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/content-email-track-digest256.vlpset +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/content-track-digest256.sbstore +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/content-track-digest256.vlpset +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/google-trackwhite-digest256.sbstore +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/google-trackwhite-digest256.vlpset +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/mozplugin-block-digest256.sbstore +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/mozplugin-block-digest256.vlpset +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/mozstd-trackwhite-digest256.sbstore +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/mozstd-trackwhite-digest256.vlpset +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/social-track-digest256.sbstore +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/social-track-digest256.vlpset +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/social-tracking-protection-facebook-digest256.sbstore +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/social-tracking-protection-facebook-digest256.vlpset +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/social-tracking-protection-linkedin-digest256.sbstore +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/social-tracking-protection-linkedin-digest256.vlpset +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/social-tracking-protection-twitter-digest256.sbstore +0 -0
- package/dist/run-gecko-based-profile/safebrowsing/social-tracking-protection-twitter-digest256.vlpset +0 -0
- package/dist/run-gecko-based-profile/search.json.mozlz4 +0 -0
- package/dist/run-gecko-based-profile/sessionCheckpoints.json +0 -1
- package/dist/run-gecko-based-profile/sessionstore-backups/previous.jsonlz4 +0 -0
- package/dist/run-gecko-based-profile/sessionstore-backups/recovery.baklz4 +0 -0
- package/dist/run-gecko-based-profile/sessionstore-backups/recovery.jsonlz4 +0 -0
- package/dist/run-gecko-based-profile/sessionstore-backups/upgrade.jsonlz4-20241108170000 +0 -0
- package/dist/run-gecko-based-profile/settings/data.safe.bin +0 -0
- package/dist/run-gecko-based-profile/startupCache/scriptCache-child-current.bin +0 -0
- package/dist/run-gecko-based-profile/startupCache/scriptCache-child.bin +0 -0
- package/dist/run-gecko-based-profile/startupCache/scriptCache-current.bin +0 -0
- package/dist/run-gecko-based-profile/startupCache/scriptCache.bin +0 -0
- package/dist/run-gecko-based-profile/startupCache/startupCache.8.little +0 -0
- package/dist/run-gecko-based-profile/startupCache/urlCache-current.bin +0 -0
- package/dist/run-gecko-based-profile/startupCache/urlCache.bin +0 -0
- package/dist/run-gecko-based-profile/startupCache/webext.sc.lz4 +0 -0
- package/dist/run-gecko-based-profile/storage/default/https+++www.waterfox.net/.metadata-v2 +0 -0
- package/dist/run-gecko-based-profile/storage/default/https+++www.waterfox.net/ls/data.sqlite +0 -0
- package/dist/run-gecko-based-profile/storage/default/https+++www.waterfox.net/ls/usage +0 -0
- package/dist/run-gecko-based-profile/storage/default/moz-extension+++192f61de-a9f6-44ad-8390-da9e05aa71e6^userContextId=4294967295/.metadata-v2 +0 -0
- package/dist/run-gecko-based-profile/storage/default/moz-extension+++192f61de-a9f6-44ad-8390-da9e05aa71e6^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite +0 -0
- package/dist/run-gecko-based-profile/storage/default/moz-extension+++192f61de-a9f6-44ad-8390-da9e05aa71e6^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite-wal +0 -0
- package/dist/run-gecko-based-profile/storage/default/moz-extension+++9252d891-ec21-4431-94c3-5d445e545867/.metadata-v2 +0 -0
- package/dist/run-gecko-based-profile/storage/default/moz-extension+++9252d891-ec21-4431-94c3-5d445e545867/idb/35964728TraebpFlaevHInco.sqlite +0 -0
- package/dist/run-gecko-based-profile/storage/default/moz-extension+++9252d891-ec21-4431-94c3-5d445e545867/idb/35964728TraebpFlaevHInco.sqlite-wal +0 -0
- package/dist/run-gecko-based-profile/storage/default/moz-extension+++9252d891-ec21-4431-94c3-5d445e545867/idb/514787035SeigdaerboatrS.sqlite +0 -0
- package/dist/run-gecko-based-profile/storage/default/moz-extension+++9252d891-ec21-4431-94c3-5d445e545867/idb/514787035SeigdaerboatrS.sqlite-wal +0 -0
- package/dist/run-gecko-based-profile/storage/default/moz-extension+++9252d891-ec21-4431-94c3-5d445e545867/idb/798144174PeegramraonteSnt.sqlite +0 -0
- package/dist/run-gecko-based-profile/storage/default/moz-extension+++9252d891-ec21-4431-94c3-5d445e545867/idb/798144174PeegramraonteSnt.sqlite-wal +0 -0
- package/dist/run-gecko-based-profile/storage/default/moz-extension+++9252d891-ec21-4431-94c3-5d445e545867^userContextId=4294967295/.metadata-v2 +0 -0
- package/dist/run-gecko-based-profile/storage/default/moz-extension+++9252d891-ec21-4431-94c3-5d445e545867^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite +0 -0
- package/dist/run-gecko-based-profile/storage/default/moz-extension+++9252d891-ec21-4431-94c3-5d445e545867^userContextId=4294967295/idb/3647222921wleabcEoxlt-eengsairo.sqlite-wal +0 -0
- package/dist/run-gecko-based-profile/storage/ls-archive.sqlite +0 -0
- package/dist/run-gecko-based-profile/storage/permanent/chrome/.metadata-v2 +0 -0
- package/dist/run-gecko-based-profile/storage/permanent/chrome/idb/1657114595AmcateirvtiSty.sqlite +0 -0
- package/dist/run-gecko-based-profile/storage/permanent/chrome/idb/1657114595AmcateirvtiSty.sqlite-wal +0 -0
- package/dist/run-gecko-based-profile/storage/permanent/chrome/idb/2918063365piupsah.sqlite +0 -0
- package/dist/run-gecko-based-profile/storage/permanent/chrome/idb/2918063365piupsah.sqlite-wal +0 -0
- package/dist/run-gecko-based-profile/storage/permanent/chrome/idb/3870112724rsegmnoittet-es.sqlite +0 -0
- package/dist/run-gecko-based-profile/storage/permanent/chrome/idb/3870112724rsegmnoittet-es.sqlite-wal +0 -0
- package/dist/run-gecko-based-profile/storage-sync-v2.sqlite +0 -0
- package/dist/run-gecko-based-profile/storage-sync-v2.sqlite-shm +0 -0
- package/dist/run-gecko-based-profile/storage-sync-v2.sqlite-wal +0 -0
- package/dist/run-gecko-based-profile/storage.sqlite +0 -0
- package/dist/run-gecko-based-profile/times.json +0 -1
- package/dist/run-gecko-based-profile/user.js +0 -85
- package/dist/run-gecko-based-profile/webappsstore.sqlite +0 -0
- package/dist/run-gecko-based-profile/webappsstore.sqlite-wal +0 -0
- package/dist/run-gecko-based-profile/xulstore.json +0 -1
package/dist/run-chromium-based-profile/mfddibmblmbccpadfndgakiopmmhebop/1.0.103/resources.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
[{"name":"1x1.gif","aliases":["1x1-transparent.gif"],"kind":{"mime":"image/gif"},"content":"R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="},{"name":"2x2.png","aliases":["2x2-transparent.png"],"kind":{"mime":"image/png"},"content":"iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAC0lEQVQI12NgQAcAABIAAe+JVKQAAAAASUVORK5CYII="},{"name":"3x2.png","aliases":["3x2-transparent.png"],"kind":{"mime":"image/png"},"content":"iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAC0lEQVQI12NgwAUAABoAASRETuUAAAAASUVORK5CYII="},{"name":"32x32.png","aliases":["32x32-transparent.png"],"kind":{"mime":"image/png"},"content":"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGklEQVRYw+3BAQEAAACCIP+vbkhAAQAAAO8GECAAAZf3V9cAAAAASUVORK5CYII="},{"name":"amazon_ads.js","aliases":["amazon-adsystem.com/aax2/amzn_ads.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBpZiAoIGFtem5hZHMgKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgdmFyIHcgPSB3aW5kb3c7CiAgICB2YXIgbm9vcGZuID0gZnVuY3Rpb24oKSB7CiAgICAgICAgOwogICAgfS5iaW5kKCk7CiAgICB2YXIgYW16bmFkcyA9IHsKICAgICAgICBhcHBlbmRTY3JpcHRUYWc6IG5vb3BmbiwKICAgICAgICBhcHBlbmRUYXJnZXRpbmdUb0FkU2VydmVyVXJsOiBub29wZm4sCiAgICAgICAgYXBwZW5kVGFyZ2V0aW5nVG9RdWVyeVN0cmluZzogbm9vcGZuLAogICAgICAgIGNsZWFyVGFyZ2V0aW5nRnJvbUdQVEFzeW5jOiBub29wZm4sCiAgICAgICAgZG9BbGxUYXNrczogbm9vcGZuLAogICAgICAgIGRvR2V0QWRzQXN5bmM6IG5vb3BmbiwKICAgICAgICBkb1Rhc2s6IG5vb3BmbiwKICAgICAgICBkZXRlY3RJZnJhbWVBbmRHZXRVUkw6IG5vb3BmbiwKICAgICAgICBnZXRBZHM6IG5vb3BmbiwKICAgICAgICBnZXRBZHNBc3luYzogbm9vcGZuLAogICAgICAgIGdldEFkRm9yU2xvdDogbm9vcGZuLAogICAgICAgIGdldEFkc0NhbGxiYWNrOiBub29wZm4sCiAgICAgICAgZ2V0RGlzcGxheUFkczogbm9vcGZuLAogICAgICAgIGdldERpc3BsYXlBZHNBc3luYzogbm9vcGZuLAogICAgICAgIGdldERpc3BsYXlBZHNDYWxsYmFjazogbm9vcGZuLAogICAgICAgIGdldEtleXM6IG5vb3BmbiwKICAgICAgICBnZXRSZWZlcnJlclVSTDogbm9vcGZuLAogICAgICAgIGdldFNjcmlwdFNvdXJjZTogbm9vcGZuLAogICAgICAgIGdldFRhcmdldGluZzogbm9vcGZuLAogICAgICAgIGdldFRva2Vuczogbm9vcGZuLAogICAgICAgIGdldFZhbGlkTWlsbGlzZWNvbmRzOiBub29wZm4sCiAgICAgICAgZ2V0VmlkZW9BZHM6IG5vb3BmbiwKICAgICAgICBnZXRWaWRlb0Fkc0FzeW5jOiBub29wZm4sCiAgICAgICAgZ2V0VmlkZW9BZHNDYWxsYmFjazogbm9vcGZuLAogICAgICAgIGhhbmRsZUNhbGxCYWNrOiBub29wZm4sCiAgICAgICAgaGFzQWRzOiBub29wZm4sCiAgICAgICAgcmVuZGVyQWQ6IG5vb3BmbiwKICAgICAgICBzYXZlQWRzOiBub29wZm4sCiAgICAgICAgc2V0VGFyZ2V0aW5nOiBub29wZm4sCiAgICAgICAgc2V0VGFyZ2V0aW5nRm9yR1BUQXN5bmM6IG5vb3BmbiwKICAgICAgICBzZXRUYXJnZXRpbmdGb3JHUFRTeW5jOiBub29wZm4sCiAgICAgICAgdHJ5R2V0QWRzQXN5bmM6IG5vb3BmbiwKICAgICAgICB1cGRhdGVBZHM6IG5vb3BmbgogICAgfTsKICAgIHcuYW16bmFkcyA9IGFtem5hZHM7CiAgICB3LmFtem5fYWRzID0gdy5hbXpuX2FkcyB8fCBub29wZm47CiAgICB3LmFheF93cml0ZSA9IHcuYWF4X3dyaXRlIHx8IG5vb3BmbjsKICAgIHcuYWF4X3JlbmRlcl9hZCA9IHcuYWF4X3JlbmRlcl9hZCB8fCBub29wZm47Cn0pKCk7Cg=="},{"name":"amazon_apstag.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgovLyBodHRwczovL3d3dy5yZWRkaXQuY29tL3IvdUJsb2NrT3JpZ2luL2NvbW1lbnRzL2doanFwaC8KLy8gaHR0cHM6Ly9naXRodWIuY29tL05hbm9NZW93L1F1aWNrUmVwb3J0cy9pc3N1ZXMvMzcxNwovLyBodHRwczovL3d3dy5yZWRkaXQuY29tL3IvdUJsb2NrT3JpZ2luL2NvbW1lbnRzL3F5eDdlbi8KCi8vIGh0dHBzOi8vc2VhcmNoZm94Lm9yZy9tb3ppbGxhLWNlbnRyYWwvc291cmNlL2Jyb3dzZXIvZXh0ZW5zaW9ucy93ZWJjb21wYXQvc2hpbXMvYXBzdGFnLmpzCi8vICAgSW1wb3J0IHF1ZXVlLXJlbGF0ZWQgaW5pdGlhbGl6YXRpb24gY29kZS4KCihmdW5jdGlvbigpIHsKICAgICd1c2Ugc3RyaWN0JzsKICAgIGNvbnN0IHcgPSB3aW5kb3c7CiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgICAgICA7IC8vIGpzaGludCBpZ25vcmU6bGluZQogICAgfS5iaW5kKCk7CiAgICBjb25zdCBfUSA9IHcuYXBzdGFnICYmIHcuYXBzdGFnLl9RIHx8IFtdOwogICAgY29uc3QgYXBzdGFnID0gewogICAgICAgIF9RLAogICAgICAgIGZldGNoQmlkczogZnVuY3Rpb24oYSwgYikgewogICAgICAgICAgICBpZiAoIHR5cGVvZiBiID09PSAnZnVuY3Rpb24nICkgewogICAgICAgICAgICAgICAgYihbXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGluaXQ6IG5vb3BmbiwKICAgICAgICBzZXREaXNwbGF5Qmlkczogbm9vcGZuLAogICAgICAgIHRhcmdldGluZ0tleXM6IG5vb3BmbiwKICAgIH07CiAgICB3LmFwc3RhZyA9IGFwc3RhZzsKICAgIF9RLnB1c2ggPSBmdW5jdGlvbihwcmVmaXgsIGFyZ3MpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBzd2l0Y2ggKHByZWZpeCkgewogICAgICAgICAgICBjYXNlICdmJzoKICAgICAgICAgICAgICAgIGFwc3RhZy5mZXRjaEJpZHMoLi4uYXJncyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgY29uc29sZS50cmFjZShlKTsKICAgICAgICB9CiAgICB9OwogICAgZm9yICggY29uc3QgY21kIG9mIF9RICkgewogICAgICAgIF9RLnB1c2goY21kKTsKICAgIH0KfSkoKTsK"},{"name":"ampproject_v0.js","aliases":["ampproject.org/v0.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuaGVhZDsKICAgIGlmICggIWhlYWQgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwogICAgc3R5bGUudGV4dENvbnRlbnQgPSBbCiAgICAgICAgJ2JvZHkgeycsCiAgICAgICAgJyAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7JywKICAgICAgICAnICBvdmVyZmxvdzogdW5zZXQgIWltcG9ydGFudDsnLAogICAgICAgICd9JwogICAgXS5qb2luKCdcbicpOwogICAgaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7Cn0pKCk7Cg=="},{"name":"chartbeat.js","aliases":["static.chartbeat.com/chartbeat.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICB3aW5kb3cucFNVUEVSRkxZID0gewogICAgICAgIGFjdGl2aXR5OiBub29wZm4sCiAgICAgICAgdmlydHVhbFBhZ2U6IG5vb3BmbgogICAgfTsKICAgIGZvciAoIGNvbnN0IGhpZGVyIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ3N0eWxlW2lkXj1jaGFydGJlYXQtZmxpY2tlci1jb250cm9sXScpICkgewogICAgICAgIGhpZGVyLnJlbW92ZSgpOwogICAgfQp9KSgpOwo="},{"name":"doubleclick_instream_ad_status.js","aliases":["doubleclick.net/instream/ad_status.js"],"kind":{"mime":"application/javascript"},"content":"d2luZG93Lmdvb2dsZV9hZF9zdGF0dXMgPSAxOwo="},{"name":"empty","aliases":[],"kind":{"mime":"application/octet-stream"},"content":""},{"name":"fingerprint2.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxNC1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgovLyBSZWZlcmVuY2U6Ci8vIGh0dHBzOi8vZ2l0aHViLmNvbS9maW5nZXJwcmludGpzL2ZpbmdlcnByaW50anMvdHJlZS92MgoKKGZ1bmN0aW9uKCkgewogICAgJ3VzZSBzdHJpY3QnOwogICAgY29uc3QgaGV4MzIgPSBsZW4gPT4gewogICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikKICAgICAgICAgICAgLnRvU3RyaW5nKDE2KQogICAgICAgICAgICAuc2xpY2UoLWxlbikKICAgICAgICAgICAgLnBhZFN0YXJ0KGxlbiwgJzAnKTsKICAgIH07CiAgICBjb25zdCBicm93c2VySWQgPSBgJHtoZXgzMig4KX0ke2hleDMyKDgpfSR7aGV4MzIoOCl9JHtoZXgzMig4KX1gOwogICAgY29uc3QgZnAyID0gZnVuY3Rpb24oKXt9OwogICAgZnAyLmdldCA9IGZ1bmN0aW9uKG9wdHMsIGNiKSB7CiAgICAgICAgaWYgKCAhY2IgICkgeyBjYiA9IG9wdHM7IH0KICAgICAgICBzZXRUaW1lb3V0KCggKSA9PiB7IGNiKFtdKTsgfSwgMSk7CiAgICB9OwogICAgZnAyLmdldFByb21pc2UgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTsKICAgIH07CiAgICBmcDIuZ2V0VjE4ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGJyb3dzZXJJZDsKICAgIH07CiAgICBmcDIueDY0aGFzaDEyOCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBicm93c2VySWQ7CiAgICB9OwogICAgZnAyLnByb3RvdHlwZSA9IHsKICAgICAgICBnZXQ6IGZ1bmN0aW9uKG9wdHMsIGNiKSB7CiAgICAgICAgICAgIGlmICggIWNiICApIHsgY2IgPSBvcHRzOyB9CiAgICAgICAgICAgIHNldFRpbWVvdXQoKCApID0+IHsgY2IoYnJvd3NlcklkLCBbXSk7IH0sIDEpOwogICAgICAgIH0sCiAgICB9OwogICAgc2VsZi5GaW5nZXJwcmludDIgPSBmcDI7Cn0pKCk7Cg=="},{"name":"fingerprint3.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAyMi1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCB2aXNpdG9ySWQgPSAoKCApID0+IHsKICAgICAgICBsZXQgaWQgPSAnJzsKICAgICAgICBmb3IgKCBsZXQgaSA9IDA7IGkgPCA4OyBpKysgKSB7CiAgICAgICAgICAgIGlkICs9IChNYXRoLnJhbmRvbSgpICogMHgxMDAwMCArIDB4MTAwMCB8IDApLnRvU3RyaW5nKDE2KS5zbGljZSgtNCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBpZDsKICAgIH0pKCk7CiAgICBjb25zdCBGaW5nZXJwcmludEpTID0gY2xhc3MgewogICAgICAgIHN0YXRpYyBoYXNoQ29tcG9uZW50cygpIHsKICAgICAgICAgICAgcmV0dXJuIHZpc2l0b3JJZDsKICAgICAgICB9CiAgICAgICAgc3RhdGljIGxvYWQoKSB7CiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEZpbmdlcnByaW50SlMoKSk7CiAgICAgICAgfQogICAgICAgIGdldCgpIHsKICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7CiAgICAgICAgICAgICAgICB2aXNpdG9ySWQsCiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH07CiAgICB3aW5kb3cuRmluZ2VycHJpbnRKUyA9IEZpbmdlcnByaW50SlM7Cn0pKCk7Cg=="},{"name":"google-analytics_analytics.js","aliases":["google-analytics.com/analytics.js","googletagmanager_gtm.js","googletagmanager.com/gtm.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICAvLyBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9hbmFseXRpY3MvZGV2Z3VpZGVzL2NvbGxlY3Rpb24vYW5hbHl0aWNzanMvCiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICAvLwogICAgY29uc3QgVHJhY2tlciA9IGZ1bmN0aW9uKCkgewogICAgfTsKICAgIGNvbnN0IHAgPSBUcmFja2VyLnByb3RvdHlwZTsKICAgIHAuZ2V0ID0gbm9vcGZuOwogICAgcC5zZXQgPSBub29wZm47CiAgICBwLnNlbmQgPSBub29wZm47CiAgICAvLwogICAgY29uc3QgdyA9IHdpbmRvdzsKICAgIGNvbnN0IGdhTmFtZSA9IHcuR29vZ2xlQW5hbHl0aWNzT2JqZWN0IHx8ICdnYSc7CiAgICBjb25zdCBnYVF1ZXVlID0gd1tnYU5hbWVdOwogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VCbG9ja09yaWdpbi91QXNzZXRzL3B1bGwvNDExNQogICAgY29uc3QgZ2EgPSBmdW5jdGlvbigpIHsKICAgICAgICBjb25zdCBsZW4gPSBhcmd1bWVudHMubGVuZ3RoOwogICAgICAgIGlmICggbGVuID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCBhcmdzID0gQXJyYXkuZnJvbShhcmd1bWVudHMpOwogICAgICAgIGxldCBmbjsKICAgICAgICBsZXQgYSA9IGFyZ3NbbGVuLTFdOwogICAgICAgIGlmICggYSBpbnN0YW5jZW9mIE9iamVjdCAmJiBhLmhpdENhbGxiYWNrIGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgIGZuID0gYS5oaXRDYWxsYmFjazsKICAgICAgICB9IGVsc2UgaWYgKCBhIGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgIGZuID0gKCApID0+IHsgYShnYS5jcmVhdGUoKSk7IH07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgY29uc3QgcG9zID0gYXJncy5pbmRleE9mKCdoaXRDYWxsYmFjaycpOwogICAgICAgICAgICBpZiAoIHBvcyAhPT0gLTEgJiYgYXJnc1twb3MrMV0gaW5zdGFuY2VvZiBGdW5jdGlvbiApIHsKICAgICAgICAgICAgICAgIGZuID0gYXJnc1twb3MrMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCBmbiBpbnN0YW5jZW9mIEZ1bmN0aW9uID09PSBmYWxzZSApIHsgcmV0dXJuOyB9CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgZm4oKTsKICAgICAgICB9IGNhdGNoIChleCkgewogICAgICAgIH0KICAgIH07CiAgICBnYS5jcmVhdGUgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gbmV3IFRyYWNrZXIoKTsKICAgIH07CiAgICBnYS5nZXRCeU5hbWUgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gbmV3IFRyYWNrZXIoKTsKICAgIH07CiAgICBnYS5nZXRBbGwgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gW25ldyBUcmFja2VyKCldOwogICAgfTsKICAgIGdhLnJlbW92ZSA9IG5vb3BmbjsKICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91QmxvY2tPcmlnaW4vdUFzc2V0cy9pc3N1ZXMvMjEwNwogICAgZ2EubG9hZGVkID0gdHJ1ZTsKICAgIHdbZ2FOYW1lXSA9IGdhOwogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrL2lzc3Vlcy8zMDc1CiAgICBjb25zdCBkbCA9IHcuZGF0YUxheWVyOwogICAgaWYgKCBkbCBpbnN0YW5jZW9mIE9iamVjdCApIHsKICAgICAgICBpZiAoIGRsLmhpZGUgaW5zdGFuY2VvZiBPYmplY3QgJiYgdHlwZW9mIGRsLmhpZGUuZW5kID09PSAnZnVuY3Rpb24nICkgewogICAgICAgICAgICBkbC5oaWRlLmVuZCgpOwogICAgICAgICAgICBkbC5oaWRlLmVuZCA9ICgpPT57fTsKICAgICAgICB9CiAgICAgICAgaWYgKCB0eXBlb2YgZGwucHVzaCA9PT0gJ2Z1bmN0aW9uJyApIHsKICAgICAgICAgICAgY29uc3QgZG9DYWxsYmFjayA9IGZ1bmN0aW9uKGl0ZW0pIHsKICAgICAgICAgICAgICAgIGlmICggaXRlbSBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgaXRlbS5ldmVudENhbGxiYWNrICE9PSAnZnVuY3Rpb24nICkgeyByZXR1cm47IH0KICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoaXRlbS5ldmVudENhbGxiYWNrLCAxKTsKICAgICAgICAgICAgICAgIGl0ZW0uZXZlbnRDYWxsYmFjayA9ICgpPT57fTsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgZGwucHVzaCA9IG5ldyBQcm94eShkbC5wdXNoLCB7CiAgICAgICAgICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgICAgICAgICAgZG9DYWxsYmFjayhhcmdzWzBdKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgaWYgKCBBcnJheS5pc0FycmF5KGRsKSApIHsKICAgICAgICAgICAgICAgIGNvbnN0IHEgPSBkbC5zbGljZSgpOwogICAgICAgICAgICAgICAgZm9yICggY29uc3QgaXRlbSBvZiBxICkgewogICAgICAgICAgICAgICAgICAgIGRvQ2FsbGJhY2soaXRlbSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAvLyBlbXB0eSBnYSBxdWV1ZQogICAgaWYgKCBnYVF1ZXVlIGluc3RhbmNlb2YgRnVuY3Rpb24gJiYgQXJyYXkuaXNBcnJheShnYVF1ZXVlLnEpICkgewogICAgICAgIGNvbnN0IHEgPSBnYVF1ZXVlLnEuc2xpY2UoKTsKICAgICAgICBnYVF1ZXVlLnEubGVuZ3RoID0gMDsKICAgICAgICBmb3IgKCBjb25zdCBlbnRyeSBvZiBxICkgewogICAgICAgICAgICBnYSguLi5lbnRyeSk7CiAgICAgICAgfQogICAgfQp9KSgpOwo="},{"name":"google-analytics_cx_api.js","aliases":["google-analytics.com/cx/api.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICB3aW5kb3cuY3hBcGkgPSB7CiAgICAgICAgY2hvb3NlVmFyaWF0aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfSwKICAgICAgICBnZXRDaG9zZW5WYXJpYXRpb246IG5vb3BmbiwKICAgICAgICBzZXRBbGxvd0hhc2g6IG5vb3BmbiwKICAgICAgICBzZXRDaG9zZW5WYXJpYXRpb246IG5vb3BmbiwKICAgICAgICBzZXRDb29raWVQYXRoOiBub29wZm4sCiAgICAgICAgc2V0RG9tYWluTmFtZTogbm9vcGZuCiAgICAgICAgfTsKfSkoKTsK"},{"name":"google-analytics_ga.js","aliases":["google-analytics.com/ga.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICAvLwogICAgY29uc3QgR2FxID0gZnVuY3Rpb24oKSB7CiAgICB9OwogICAgR2FxLnByb3RvdHlwZS5OYSA9IG5vb3BmbjsKICAgIEdhcS5wcm90b3R5cGUuTyA9IG5vb3BmbjsKICAgIEdhcS5wcm90b3R5cGUuU2EgPSBub29wZm47CiAgICBHYXEucHJvdG90eXBlLlRhID0gbm9vcGZuOwogICAgR2FxLnByb3RvdHlwZS5WYSA9IG5vb3BmbjsKICAgIEdhcS5wcm90b3R5cGUuX2NyZWF0ZUFzeW5jVHJhY2tlciA9IG5vb3BmbjsKICAgIEdhcS5wcm90b3R5cGUuX2dldEFzeW5jVHJhY2tlciA9IG5vb3BmbjsKICAgIEdhcS5wcm90b3R5cGUuX2dldFBsdWdpbiA9IG5vb3BmbjsKICAgIEdhcS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICBpZiAoIHR5cGVvZiBhID09PSAnZnVuY3Rpb24nICkgewogICAgICAgICAgICBhKCk7IHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKCBBcnJheS5pc0FycmF5KGEpID09PSBmYWxzZSApIHsgcmV0dXJuOyB9CiAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vYW5hbHl0aWNzL2Rldmd1aWRlcy9jb2xsZWN0aW9uL2dhanMvbWV0aG9kcy9nYUpTQXBpRG9tYWluRGlyZWN0b3J5I19nYXQuR0FfVHJhY2tlcl8uX2xpbmsKICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdUJsb2NrT3JpZ2luL3VCbG9jay1pc3N1ZXMvaXNzdWVzLzE4MDcKICAgICAgICBpZiAoCiAgICAgICAgICAgIHR5cGVvZiBhWzBdID09PSAnc3RyaW5nJyAmJgogICAgICAgICAgICAvKF58XC4pX2xpbmskLy50ZXN0KGFbMF0pICYmCiAgICAgICAgICAgIHR5cGVvZiBhWzFdID09PSAnc3RyaW5nJwogICAgICAgICkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihhWzFdKTsKICAgICAgICAgICAgfSBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nb3JoaWxsL3VCbG9jay9pc3N1ZXMvMjE2MgogICAgICAgIGlmICggYVswXSA9PT0gJ19zZXQnICYmIGFbMV0gPT09ICdoaXRDYWxsYmFjaycgJiYgdHlwZW9mIGFbMl0gPT09ICdmdW5jdGlvbicgKSB7CiAgICAgICAgICAgIGFbMl0oKTsKICAgICAgICB9CiAgICB9OwogICAgLy8KICAgIGNvbnN0IHRyYWNrZXIgPSAoZnVuY3Rpb24oKSB7CiAgICAgICAgY29uc3Qgb3V0ID0ge307CiAgICAgICAgY29uc3QgYXBpID0gWwogICAgICAgICAgICAnX2FkZElnbm9yZWRPcmdhbmljIF9hZGRJZ25vcmVkUmVmIF9hZGRJdGVtIF9hZGRPcmdhbmljJywKICAgICAgICAgICAgJ19hZGRUcmFucyBfY2xlYXJJZ25vcmVkT3JnYW5pYyBfY2xlYXJJZ25vcmVkUmVmIF9jbGVhck9yZ2FuaWMnLAogICAgICAgICAgICAnX2Nvb2tpZVBhdGhDb3B5IF9kZWxldGVDdXN0b21WYXIgX2dldE5hbWUgX3NldEFjY291bnQnLAogICAgICAgICAgICAnX2dldEFjY291bnQgX2dldENsaWVudEluZm8gX2dldERldGVjdEZsYXNoIF9nZXREZXRlY3RUaXRsZScsCiAgICAgICAgICAgICdfZ2V0TGlua2VyVXJsIF9nZXRMb2NhbEdpZlBhdGggX2dldFNlcnZpY2VNb2RlIF9nZXRWZXJzaW9uJywKICAgICAgICAgICAgJ19nZXRWaXNpdG9yQ3VzdG9tVmFyIF9pbml0RGF0YSBfbGlua0J5UG9zdCcsCiAgICAgICAgICAgICdfc2V0QWxsb3dBbmNob3IgX3NldEFsbG93SGFzaCBfc2V0QWxsb3dMaW5rZXIgX3NldENhbXBDb250ZW50S2V5JywKICAgICAgICAgICAgJ19zZXRDYW1wTWVkaXVtS2V5IF9zZXRDYW1wTmFtZUtleSBfc2V0Q2FtcE5PS2V5IF9zZXRDYW1wU291cmNlS2V5JywKICAgICAgICAgICAgJ19zZXRDYW1wVGVybUtleSBfc2V0Q2FtcGFpZ25Db29raWVUaW1lb3V0IF9zZXRDYW1wYWlnblRyYWNrIF9zZXRDbGllbnRJbmZvJywKICAgICAgICAgICAgJ19zZXRDb29raWVQYXRoIF9zZXRDb29raWVQZXJzaXN0ZW5jZSBfc2V0Q29va2llVGltZW91dCBfc2V0Q3VzdG9tVmFyJywKICAgICAgICAgICAgJ19zZXREZXRlY3RGbGFzaCBfc2V0RGV0ZWN0VGl0bGUgX3NldERvbWFpbk5hbWUgX3NldExvY2FsR2lmUGF0aCcsCiAgICAgICAgICAgICdfc2V0TG9jYWxSZW1vdGVTZXJ2ZXJNb2RlIF9zZXRMb2NhbFNlcnZlck1vZGUgX3NldFJlZmVycmVyT3ZlcnJpZGUgX3NldFJlbW90ZVNlcnZlck1vZGUnLAogICAgICAgICAgICAnX3NldFNhbXBsZVJhdGUgX3NldFNlc3Npb25UaW1lb3V0IF9zZXRTaXRlU3BlZWRTYW1wbGVSYXRlIF9zZXRTZXNzaW9uQ29va2llVGltZW91dCcsCiAgICAgICAgICAgICdfc2V0VmFyIF9zZXRWaXNpdG9yQ29va2llVGltZW91dCBfdHJhY2tFdmVudCBfdHJhY2tQYWdlTG9hZFRpbWUnLAogICAgICAgICAgICAnX3RyYWNrUGFnZXZpZXcgX3RyYWNrU29jaWFsIF90cmFja1RpbWluZyBfdHJhY2tUcmFucycsCiAgICAgICAgICAgICdfdmlzaXRDb2RlJwogICAgICAgIF0uam9pbignICcpLnNwbGl0KC9ccysvKTsKICAgICAgICBmb3IgKCBjb25zdCBtZXRob2Qgb2YgYXBpICkgewogICAgICAgICAgICBvdXRbbWV0aG9kXSA9IG5vb3BmbjsKICAgICAgICB9CiAgICAgICAgb3V0Ll9nZXRMaW5rZXJVcmwgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIHJldHVybiBhOwogICAgICAgIH07CiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0FkZ3VhcmRUZWFtL1NjcmlwdGxldHMvaXNzdWVzLzE1NAogICAgICAgIG91dC5fbGluayA9IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgaWYgKCB0eXBlb2YgYSAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbihhKTsKICAgICAgICAgICAgfSBjYXRjaChleCkgewogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gb3V0OwogICAgfSkoKTsKICAgIC8vCiAgICBjb25zdCBHYXQgPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICBHYXQucHJvdG90eXBlLl9hbm9ueW1pemVJUCA9IG5vb3BmbjsKICAgIEdhdC5wcm90b3R5cGUuX2NyZWF0ZVRyYWNrZXIgPSBub29wZm47CiAgICBHYXQucHJvdG90eXBlLl9mb3JjZVNTTCA9IG5vb3BmbjsKICAgIEdhdC5wcm90b3R5cGUuX2dldFBsdWdpbiA9IG5vb3BmbjsKICAgIEdhdC5wcm90b3R5cGUuX2dldFRyYWNrZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdHJhY2tlcjsKICAgIH07CiAgICBHYXQucHJvdG90eXBlLl9nZXRUcmFja2VyQnlOYW1lID0gZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIHRyYWNrZXI7CiAgICB9OwogICAgR2F0LnByb3RvdHlwZS5fZ2V0VHJhY2tlcnMgPSBub29wZm47CiAgICBHYXQucHJvdG90eXBlLmFhID0gbm9vcGZuOwogICAgR2F0LnByb3RvdHlwZS5hYiA9IG5vb3BmbjsKICAgIEdhdC5wcm90b3R5cGUuaGIgPSBub29wZm47CiAgICBHYXQucHJvdG90eXBlLmxhID0gbm9vcGZuOwogICAgR2F0LnByb3RvdHlwZS5vYSA9IG5vb3BmbjsKICAgIEdhdC5wcm90b3R5cGUucGEgPSBub29wZm47CiAgICBHYXQucHJvdG90eXBlLnUgPSBub29wZm47CiAgICBjb25zdCBnYXQgPSBuZXcgR2F0KCk7CiAgICB3aW5kb3cuX2dhdCA9IGdhdDsKICAgIC8vCiAgICBjb25zdCBnYXEgPSBuZXcgR2FxKCk7CiAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgY29uc3QgYWEgPSB3aW5kb3cuX2dhcSB8fCBbXTsKICAgICAgICBpZiAoIEFycmF5LmlzQXJyYXkoYWEpICkgewogICAgICAgICAgICB3aGlsZSAoIGFhWzBdICkgewogICAgICAgICAgICAgICAgZ2FxLnB1c2goYWEuc2hpZnQoKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KSgpOwogICAgd2luZG93Ll9nYXEgPSBnYXEucWYgPSBnYXE7Cn0pKCk7Cg=="},{"name":"google-analytics_inpage_linkid.js","aliases":["google-analytics.com/inpage_linkid.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICB3aW5kb3cuX2dhcSA9IHdpbmRvdy5fZ2FxIHx8IHsKICAgICAgICBwdXNoOiBmdW5jdGlvbigpIHsKICAgICAgICB9CiAgICB9Owp9KSgpOwo="},{"name":"google-ima.js","aliases":["google-ima3"],"kind":{"mime":"application/javascript"},"content":"LyoqCiAqIAogKiBTb3VyY2UgYmVsb3cgaXMgYmFzZWQgb24gTW96aWxsYSBzb3VyY2UgY29kZToKICogaHR0cHM6Ly9zZWFyY2hmb3gub3JnL21vemlsbGEtY2VudHJhbC9yZXYvZDMxN2U5M2Q5YTU5YzllNGMwNmFkYTg1ZmJmZjlmNmExY2VhYWFkMS9icm93c2VyL2V4dGVuc2lvbnMvd2ViY29tcGF0L3NoaW1zL2dvb2dsZS1pbWEuanMKICogCiAqIE1vZGlmaWNhdGlvbnMgdG8gdGhlIG9yaWdpbmFsIGNvZGUgYmVsb3cgdGhpcyBjb21tZW50OgogKiAtIEF2b2lkIEpTIHN5bnRheCBub3Qgc3VwcG9ydGVkIGJ5IG9sZGVyIGJyb3dzZXIgdmVyc2lvbnMKICogLSBBZGQgbWlzc2luZyBzaGltIGV2ZW50CiAqIC0gTW9kaWZpZWQgdG8gYXZvaWQganNoaW50IHdhcm5pbmdzIGFzIHBlciB1Qk8ncyBjb25maWcKICogLSBBZGRlZCBgT21pZFZlcmlmaWNhdGlvblZlbmRvcmAgdG8gYGltYWAKICogLSBIYXZlIGBBZEVycm9yLmdldElubmVyRXJyb3IoKWAgcmV0dXJuIGBudWxsYAogKiAtIEhhdmUgYEFkRGlzcGxheUNvbnRhaW5lcmAgY29uc3RydWN0b3IgYWRkIERJViBlbGVtZW50IHRvIGNvbnRhaW5lcgogKiAtIEFkZGVkIG1pc3NpbmcgZXZlbnQgZGlzcGF0Y2hlciBmdW5jdGlvbmFsaXR5CiAqIC0gQ29ycmVjdGVkIHJldHVybiB0eXBlIG9mIGBBZC5nZXRVbml2ZXJzYWxBZElkcygpYAogKiAtIENvcnJlY3RlZCB0eXBvIGluIGBVbml2ZXJzYWxBZElkSW5mby5nZXRBZElkVmFsdWUoKWAgbWV0aG9kIG5hbWUKICogLSBDb3JyZWN0ZWQgZGlzcGF0Y2ggb2YgTE9BRCBldmVudCB3aGVuIHByZWxvYWRpbmcgaXMgZW5hYmxlZAogKiAtIENvcnJlY3RlZCBkaXNwYXRjaCBvZiBDT05URU5UX1BBVVNFL1JFU1VNRV9SRVFVRVNURUQgZXZlbnRzCiAqIAogKiBSZWxhdGVkIGlzc3VlOgogKiAtIGh0dHBzOi8vZ2l0aHViLmNvbS91QmxvY2tPcmlnaW4vdUJsb2NrLWlzc3Vlcy9pc3N1ZXMvMjE1OAogKiAKKiovCiAKJ3VzZSBzdHJpY3QnOwoKLyogVGhpcyBTb3VyY2UgQ29kZSBGb3JtIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBNb3ppbGxhIFB1YmxpYwogKiBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCiAqIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uICovCgovKioKICogQnVnIDE3MTM2OTAgLSBTaGltIEdvb2dsZSBJbnRlcmFjdGl2ZSBNZWRpYSBBZHMgaW1hMy5qcwogKgogKiBNYW55IHNpdGVzIHVzZSBpbWEzLmpzIGZvciBhZCBiaWRkaW5nIGFuZCBwbGFjZW1lbnQsIG9mdGVuIGluIGNvbmp1bmN0aW9uCiAqIHdpdGggR29vZ2xlIFB1Ymxpc2hlciBUYWdzLCBQcmViaWQuanMgYW5kL29yIG90aGVyIHNjcmlwdHMuIFRoaXMgc2hpbQogKiBwcm92aWRlcyBhIHN0dWJiZWQtb3V0IHZlcnNpb24gb2YgdGhlIEFQSSB3aGljaCBoZWxwcyB3b3JrIGFyb3VuZCByZWxhdGVkCiAqIHNpdGUgYnJlYWthZ2UsIHN1Y2ggYXMgYmxhY2sgYnhvZXMgd2hlcmUgdmlkZW9zIG91Z2h0IHRvIGJlIHBsYWNlZC4KICovCgppZiAoIXdpbmRvdy5nb29nbGUgfHwgIXdpbmRvdy5nb29nbGUuaW1hIHx8ICF3aW5kb3cuZ29vZ2xlLmltYS5WRVJTSU9OKSB7CiAgY29uc3QgVkVSU0lPTiA9ICIzLjUxNy4yIjsKCiAgY29uc3QgQ2hlY2tDYW5BdXRvcGxheSA9IChmdW5jdGlvbigpIHsKICAgIC8vIFNvdXJjZWQgZnJvbTogaHR0cHM6Ly9zZWFyY2hmb3gub3JnL21vemlsbGEtY2VudHJhbC9zb3VyY2UvZG9tL21lZGlhL2d0ZXN0L25lZ2F0aXZlX2R1cmF0aW9uLm1wNAogICAgY29uc3QgVEVTVF9WSURFTyA9IG5ldyBCbG9iKAogICAgICBbCiAgICAgICAgbmV3IFVpbnQzMkFycmF5KFsKICAgICAgICAgIDQ2OTc2MjA0OCwKICAgICAgICAgIDE4ODcwMDc4NDYsCiAgICAgICAgICAxNzUyMzkyMDM2LAogICAgICAgICAgMCwKICAgICAgICAgIDkxMzI3MzcwNSwKICAgICAgICAgIDE3MTc5ODc2OTYsCiAgICAgICAgICA4Mjg2MDE5NTMsCiAgICAgICAgICAtMTg3ODkxNzEyMCwKICAgICAgICAgIDE5ODcwMTQ1MDksCiAgICAgICAgICAxODExOTM5MzI4LAogICAgICAgICAgMTY4NDU2NzY2MSwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIC00MDI0NTY1NzYsCiAgICAgICAgICAwLAogICAgICAgICAgMjU2LAogICAgICAgICAgMSwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMjU2LAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMjU2LAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgNjQsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAzMzU1NDQzMiwKICAgICAgICAgIC0yMDEyNjEwNTYsCiAgICAgICAgICAxODAxNTQ4NDA0LAogICAgICAgICAgMTc0NDgzMDQ2NCwKICAgICAgICAgIDE2ODQ1NjQ4NTIsCiAgICAgICAgICAyNTE2NTgyNDEsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMTY3NzcyMTYsCiAgICAgICAgICAwLAogICAgICAgICAgLTEsCiAgICAgICAgICAtMSwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAyNTYsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAyNTYsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICA2NCwKICAgICAgICAgIDUsCiAgICAgICAgICA1MzI1MCwKICAgICAgICAgIC0yMDgwMzA5MjQ4LAogICAgICAgICAgMTYzNDI5Njk0MSwKICAgICAgICAgIDczODE5NzUwNCwKICAgICAgICAgIDE2ODQ1NjMwNTMsCiAgICAgICAgICAxLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIC0yMTM3NjE0MzM2LAogICAgICAgICAgLTEsCiAgICAgICAgICAtMSwKICAgICAgICAgIDUwMjYxLAogICAgICAgICAgNzU0OTc0NzIwLAogICAgICAgICAgMTkxOTcwNjIxNiwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMTcwMTA3OTQxNCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDE3MDEwNzkzODIsCiAgICAgICAgICAxODUxODY5Mjk1LAogICAgICAgICAgMTkxOTI0OTUwOCwKICAgICAgICAgIDE2Nzc3MjE2LAogICAgICAgICAgMTg1MjQwMjk3OSwKICAgICAgICAgIDEwMiwKICAgICAgICAgIDE3NTIwMDQxMTYsCiAgICAgICAgICAxMDAsCiAgICAgICAgICAxLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAxODUyNDAwNjc2LAogICAgICAgICAgMTAyLAogICAgICAgICAgMTcwMTk5NTU0OCwKICAgICAgICAgIDEwMiwKICAgICAgICAgIDAsCiAgICAgICAgICAxLAogICAgICAgICAgMTgxOTQ0MDM5NiwKICAgICAgICAgIDMyLAogICAgICAgICAgMSwKICAgICAgICAgIDE2NTE3OTkwMTEsCiAgICAgICAgICAxMDgsCiAgICAgICAgICAxOTM3MDExNjA3LAogICAgICAgICAgMTAwLAogICAgICAgICAgMCwKICAgICAgICAgIDEsCiAgICAgICAgICAxNjY4NzAyNTk5LAogICAgICAgICAgNDksCiAgICAgICAgICAwLAogICAgICAgICAgMSwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDMzNTU1NzEyLAogICAgICAgICAgNDcxODgwMCwKICAgICAgICAgIDQ3MTg1OTIsCiAgICAgICAgICAwLAogICAgICAgICAgNjU1MzYsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDE2Nzc2OTg0LAogICAgICAgICAgMTYzMDYwMTIxNiwKICAgICAgICAgIDIxMTkzNTkwLAogICAgICAgICAgLTE0NzQ1NTAwLAogICAgICAgICAgMTcyOTYyNjMzNywKICAgICAgICAgIC0xNDA3MjU0NDI4LAogICAgICAgICAgODkxNjE5NDUsCiAgICAgICAgICAxMDQ5MDE5LAogICAgICAgICAgOTQ1MzA1NiwKICAgICAgICAgIC0yNTE2MTExMjUsCiAgICAgICAgICAyNzI2OTUwNywKICAgICAgICAgIC0zNzkwNTg2ODgsCiAgICAgICAgICAtMTMyOTAyNDM5MiwKICAgICAgICAgIDI2ODQzNTQ1NiwKICAgICAgICAgIDE5MzcwMTE4MjcsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDI2ODQzNTQ1NiwKICAgICAgICAgIDE2Njg1MTA4MzUsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDMzNTU0NDMyMCwKICAgICAgICAgIDIwNTQzODY4MDMsCiAgICAgICAgICAwLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAyNjg0MzU0NTYsCiAgICAgICAgICAxODY4Nzg4ODUxLAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICA2NzEwODg2NDAsCiAgICAgICAgICAyMDE5OTE1MzczLAogICAgICAgICAgNTM2ODcwOTEyLAogICAgICAgICAgMjAxOTkxNDM1NiwKICAgICAgICAgIDAsCiAgICAgICAgICAxNjc3NzIxNiwKICAgICAgICAgIDE2Nzc3MjE2LAogICAgICAgICAgMCwKICAgICAgICAgIDAsCiAgICAgICAgICAwLAogICAgICAgIF0pLAogICAgICBdLAogICAgICB7IHR5cGU6ICJ2aWRlby9tcDQiIH0KICAgICk7CgogICAgbGV0IHRlc3RWaWRlbzsKCiAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgIGlmICghdGVzdFZpZGVvKSB7CiAgICAgICAgdGVzdFZpZGVvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidmlkZW8iKTsKICAgICAgICB0ZXN0VmlkZW8uc3R5bGUgPQogICAgICAgICAgInBvc2l0aW9uOmFic29sdXRlOyB3aWR0aDowOyBoZWlnaHQ6MDsgbGVmdDowOyByaWdodDowOyB6LWluZGV4Oi0xOyBib3JkZXI6MCI7CiAgICAgICAgdGVzdFZpZGVvLnNldEF0dHJpYnV0ZSgibXV0ZWQiLCAibXV0ZWQiKTsKICAgICAgICB0ZXN0VmlkZW8uc2V0QXR0cmlidXRlKCJwbGF5c2lubGluZSIsICJwbGF5c2lubGluZSIpOwogICAgICAgIHRlc3RWaWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKFRFU1RfVklERU8pOwogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGVzdFZpZGVvKTsKICAgICAgfQogICAgICByZXR1cm4gdGVzdFZpZGVvLnBsYXkoKTsKICAgIH07CiAgfSkoKTsKCiAgY29uc3QgaW1hID0ge307CgogIGNsYXNzIEFkRGlzcGxheUNvbnRhaW5lciB7CiAgICBjb25zdHJ1Y3Rvcihjb250YWluZXJFbGVtZW50KSB7CiAgICAgIGNvbnN0IGRpdkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgZGl2RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgiZGlzcGxheSIsICJub25lIiwgImltcG9ydGFudCIpOwogICAgICBkaXZFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCJ2aXNpYmlsaXR5IiwgImNvbGxhcHNlIiwgImltcG9ydGFudCIpOwogICAgICBjb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKGRpdkVsZW1lbnQpOwogICAgfQogICAgZGVzdHJveSgpIHt9CiAgICBpbml0aWFsaXplKCkge30KICB9CgogIGNsYXNzIEltYVNka1NldHRpbmdzIHsKICAgIGNvbnN0cnVjdG9yKCkgewogICAgICB0aGlzLmMgPSB0cnVlOwogICAgICB0aGlzLmYgPSB7fTsKICAgICAgdGhpcy5pID0gZmFsc2U7CiAgICAgIHRoaXMubCA9ICIiOwogICAgICB0aGlzLnAgPSAiIjsKICAgICAgdGhpcy5yID0gMDsKICAgICAgdGhpcy50ID0gIiI7CiAgICAgIHRoaXMudiA9ICIiOwogICAgfQogICAgZ2V0Q29tcGFuaW9uQmFja2ZpbGwoKSB7fQogICAgZ2V0RGlzYWJsZUN1c3RvbVBsYXliYWNrRm9ySU9TMTBQbHVzKCkgewogICAgICByZXR1cm4gdGhpcy5pOwogICAgfQogICAgZ2V0RmVhdHVyZUZsYWdzKCkgewogICAgICByZXR1cm4gdGhpcy5mOwogICAgfQogICAgZ2V0TG9jYWxlKCkgewogICAgICByZXR1cm4gdGhpcy5sOwogICAgfQogICAgZ2V0TnVtUmVkaXJlY3RzKCkgewogICAgICByZXR1cm4gdGhpcy5yOwogICAgfQogICAgZ2V0UGxheWVyVHlwZSgpIHsKICAgICAgcmV0dXJuIHRoaXMudDsKICAgIH0KICAgIGdldFBsYXllclZlcnNpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLnY7CiAgICB9CiAgICBnZXRQcGlkKCkgewogICAgICByZXR1cm4gdGhpcy5wOwogICAgfQogICAgaXNDb29raWVzRW5hYmxlZCgpIHsKICAgICAgcmV0dXJuIHRoaXMuYzsKICAgIH0KICAgIHNldEF1dG9QbGF5QWRCcmVha3MoKSB7fQogICAgc2V0Q29tcGFuaW9uQmFja2ZpbGwoKSB7fQogICAgc2V0Q29va2llc0VuYWJsZWQoYykgewogICAgICB0aGlzLmMgPSAhIWM7CiAgICB9CiAgICBzZXREaXNhYmxlQ3VzdG9tUGxheWJhY2tGb3JJT1MxMFBsdXMoaSkgewogICAgICB0aGlzLmkgPSAhIWk7CiAgICB9CiAgICBzZXRGZWF0dXJlRmxhZ3MoZikgewogICAgICB0aGlzLmYgPSBmOwogICAgfQogICAgc2V0TG9jYWxlKGwpIHsKICAgICAgdGhpcy5sID0gbDsKICAgIH0KICAgIHNldE51bVJlZGlyZWN0cyhyKSB7CiAgICAgIHRoaXMuciA9IHI7CiAgICB9CiAgICBzZXRQbGF5ZXJUeXBlKHQpIHsKICAgICAgdGhpcy50ID0gdDsKICAgIH0KICAgIHNldFBsYXllclZlcnNpb24odikgewogICAgICB0aGlzLnYgPSB2OwogICAgfQogICAgc2V0UHBpZChwKSB7CiAgICAgIHRoaXMucCA9IHA7CiAgICB9CiAgICBzZXRTZXNzaW9uSWQoLypzKi8pIHt9CiAgICBzZXRWcGFpZEFsbG93ZWQoLyphKi8pIHt9CiAgICBzZXRWcGFpZE1vZGUoLyptKi8pIHt9CgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VCbG9ja09yaWdpbi91QmxvY2staXNzdWVzL2lzc3Vlcy8yMjY1I2lzc3VlY29tbWVudC0xNjM3MDk0MTQ5CiAgICBnZXREaXNhYmxlRmxhc2hBZHMoKSB7CiAgICB9CiAgICBzZXREaXNhYmxlRmxhc2hBZHMoKSB7CiAgICB9CiAgfQogIEltYVNka1NldHRpbmdzLkNvbXBhbmlvbkJhY2tmaWxsTW9kZSA9IHsKICAgIEFMV0FZUzogImFsd2F5cyIsCiAgICBPTl9NQVNURVJfQUQ6ICJvbl9tYXN0ZXJfYWQiLAogIH07CiAgSW1hU2RrU2V0dGluZ3MuVnBhaWRNb2RlID0gewogICAgRElTQUJMRUQ6IDAsCiAgICBFTkFCTEVEOiAxLAogICAgSU5TRUNVUkU6IDIsCiAgfTsKCiAgY2xhc3MgRXZlbnRIYW5kbGVyIHsKICAgIGNvbnN0cnVjdG9yKCkgewogICAgICB0aGlzLmxpc3RlbmVycyA9IG5ldyBNYXAoKTsKICAgIH0KCiAgICBfZGlzcGF0Y2goZSkgewogICAgICBsZXQgbGlzdGVuZXJzID0gdGhpcy5saXN0ZW5lcnMuZ2V0KGUudHlwZSk7CiAgICAgIGxpc3RlbmVycyA9IGxpc3RlbmVycyA/IEFycmF5LmZyb20obGlzdGVuZXJzLnZhbHVlcygpKSA6IFtdOwogICAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIGxpc3RlbmVycykgewogICAgICAgIHRyeSB7CiAgICAgICAgICBsaXN0ZW5lcihlKTsKICAgICAgICB9IGNhdGNoIChyKSB7CiAgICAgICAgICBjb25zb2xlLmVycm9yKHIpOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIGFkZEV2ZW50TGlzdGVuZXIodHlwZXMsIGMsIG9wdGlvbnMsIGNvbnRleHQpIHsKICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHR5cGVzKSkgewogICAgICAgIHR5cGVzID0gW3R5cGVzXTsKICAgICAgfQoKICAgICAgZm9yIChjb25zdCB0IG9mIHR5cGVzKSB7CiAgICAgICAgaWYgKCF0aGlzLmxpc3RlbmVycy5oYXModCkpIHsKICAgICAgICAgIHRoaXMubGlzdGVuZXJzLnNldCh0LCBuZXcgTWFwKCkpOwogICAgICAgIH0KICAgICAgICB0aGlzLmxpc3RlbmVycy5nZXQodCkuc2V0KGMsIGMuYmluZChjb250ZXh0IHx8IHRoaXMpKTsKICAgICAgfQogICAgfQoKICAgIHJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZXMsIGMpIHsKICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHR5cGVzKSkgewogICAgICAgIHR5cGVzID0gW3R5cGVzXTsKICAgICAgfQoKICAgICAgZm9yIChjb25zdCB0IG9mIHR5cGVzKSB7CiAgICAgICAgY29uc3QgdHlwZVNldCA9IHRoaXMubGlzdGVuZXJzLmdldCh0KTsKICAgICAgICBpZiAodHlwZVNldCkgewogICAgICAgICAgdHlwZVNldC5kZWxldGUoYyk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQoKICBjbGFzcyBBZHNMb2FkZXIgZXh0ZW5kcyBFdmVudEhhbmRsZXIgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIHRoaXMuc2V0dGluZ3MgPSBuZXcgSW1hU2RrU2V0dGluZ3MoKTsKICAgIH0KICAgIGNvbnRlbnRDb21wbGV0ZSgpIHt9CiAgICBkZXN0cm95KCkge30KICAgIGdldFNldHRpbmdzKCkgewogICAgICByZXR1cm4gdGhpcy5zZXR0aW5nczsKICAgIH0KICAgIGdldFZlcnNpb24oKSB7CiAgICAgIHJldHVybiBWRVJTSU9OOwogICAgfQogICAgcmVxdWVzdEFkcygvKnIsIGMqLykgewogICAgICAvLyBJZiBhdXRvcGxheSBpcyBkaXNhYmxlZCBhbmQgdGhlIHBhZ2UgaXMgdHJ5aW5nIHRvIGF1dG9wbGF5IGEgdHJhY2tpbmcKICAgICAgLy8gYWQsIHRoZW4gSU1BIGZhaWxzIHdpdGggYW4gZXJyb3IsIGFuZCB0aGUgcGFnZSBpcyBleHBlY3RlZCB0byByZXF1ZXN0CiAgICAgIC8vIGFkcyBhZ2FpbiBsYXRlciB3aGVuIHRoZSB1c2VyIGNsaWNrcyB0byBwbGF5LgogICAgICBDaGVja0NhbkF1dG9wbGF5KCkudGhlbigKICAgICAgICAoKSA9PiB7CiAgICAgICAgICBjb25zdCB7IEFEU19NQU5BR0VSX0xPQURFRCB9ID0gQWRzTWFuYWdlckxvYWRlZEV2ZW50LlR5cGU7CiAgICAgICAgICB0aGlzLl9kaXNwYXRjaChuZXcgaW1hLkFkc01hbmFnZXJMb2FkZWRFdmVudChBRFNfTUFOQUdFUl9MT0FERUQpKTsKICAgICAgICB9LAogICAgICAgICgpID0+IHsKICAgICAgICAgIGNvbnN0IGUgPSBuZXcgaW1hLkFkRXJyb3IoCiAgICAgICAgICAgICJhZFBsYXlFcnJvciIsCiAgICAgICAgICAgIDEyMDUsCiAgICAgICAgICAgIDEyMDUsCiAgICAgICAgICAgICJUaGUgYnJvd3NlciBwcmV2ZW50ZWQgcGxheWJhY2sgaW5pdGlhdGVkIHdpdGhvdXQgdXNlciBpbnRlcmFjdGlvbi4iCiAgICAgICAgICApOwogICAgICAgICAgdGhpcy5fZGlzcGF0Y2gobmV3IGltYS5BZEVycm9yRXZlbnQoZSkpOwogICAgICAgIH0KICAgICAgKTsKICAgIH0KICB9CgogIGNsYXNzIEFkc01hbmFnZXIgZXh0ZW5kcyBFdmVudEhhbmRsZXIgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgIHN1cGVyKCk7CiAgICAgIHRoaXMudm9sdW1lID0gMTsKICAgICAgdGhpcy5fZW5hYmxlUHJlbG9hZGluZyA9IGZhbHNlOwogICAgfQogICAgY29sbGFwc2UoKSB7fQogICAgY29uZmlndXJlQWRzTWFuYWdlcigpIHt9CiAgICBkZXN0cm95KCkge30KICAgIGRpc2NhcmRBZEJyZWFrKCkge30KICAgIGV4cGFuZCgpIHt9CiAgICBmb2N1cygpIHt9CiAgICBnZXRBZFNraXBwYWJsZVN0YXRlKCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBnZXRDdWVQb2ludHMoKSB7CiAgICAgIHJldHVybiBbMF07CiAgICB9CiAgICBnZXRDdXJyZW50QWQoKSB7CiAgICAgIHJldHVybiBjdXJyZW50QWQ7CiAgICB9CiAgICBnZXRDdXJyZW50QWRDdWVQb2ludHMoKSB7CiAgICAgIHJldHVybiBbXTsKICAgIH0KICAgIGdldFJlbWFpbmluZ1RpbWUoKSB7CiAgICAgIHJldHVybiAwOwogICAgfQogICAgZ2V0Vm9sdW1lKCkgewogICAgICByZXR1cm4gdGhpcy52b2x1bWU7CiAgICB9CiAgICBpbml0KC8qdywgaCwgbSwgZSovKSB7CiAgICAgIGlmICh0aGlzLl9lbmFibGVQcmVsb2FkaW5nKSB7CiAgICAgICAgdGhpcy5fZGlzcGF0Y2gobmV3IGltYS5BZEV2ZW50KEFkRXZlbnQuVHlwZS5MT0FERUQpKTsKICAgICAgfQogICAgfQogICAgaXNDdXN0b21DbGlja1RyYWNraW5nVXNlZCgpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgaXNDdXN0b21QbGF5YmFja1VzZWQoKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHBhdXNlKCkge30KICAgIHJlcXVlc3ROZXh0QWRCcmVhaygpIHt9CiAgICByZXNpemUoLyp3LCBoLCBtKi8pIHt9CiAgICByZXN1bWUoKSB7fQogICAgc2V0Vm9sdW1lKHYpIHsKICAgICAgdGhpcy52b2x1bWUgPSB2OwogICAgfQogICAgc2tpcCgpIHt9CiAgICBzdGFydCgpIHsKICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsKICAgICAgICBmb3IgKGNvbnN0IHR5cGUgb2YgWwogICAgICAgICAgQWRFdmVudC5UeXBlLkxPQURFRCwKICAgICAgICAgIEFkRXZlbnQuVHlwZS5TVEFSVEVELAogICAgICAgICAgQWRFdmVudC5UeXBlLkNPTlRFTlRfUEFVU0VfUkVRVUVTVEVELAogICAgICAgICAgQWRFdmVudC5UeXBlLkFEX0JVRkZFUklORywKICAgICAgICAgIEFkRXZlbnQuVHlwZS5GSVJTVF9RVUFSVElMRSwKICAgICAgICAgIEFkRXZlbnQuVHlwZS5NSURQT0lOVCwKICAgICAgICAgIEFkRXZlbnQuVHlwZS5USElSRF9RVUFSVElMRSwKICAgICAgICAgIEFkRXZlbnQuVHlwZS5DT01QTEVURSwKICAgICAgICAgIEFkRXZlbnQuVHlwZS5BTExfQURTX0NPTVBMRVRFRCwKICAgICAgICAgIEFkRXZlbnQuVHlwZS5DT05URU5UX1JFU1VNRV9SRVFVRVNURUQsCiAgICAgICAgXSkgewogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgdGhpcy5fZGlzcGF0Y2gobmV3IGltYS5BZEV2ZW50KHR5cGUpKTsKICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0pOwogICAgfQogICAgc3RvcCgpIHt9CiAgICB1cGRhdGVBZHNSZW5kZXJpbmdTZXR0aW5ncygvKnMqLykge30KICB9CgogIGNsYXNzIEFkc1JlbmRlcmluZ1NldHRpbmdzIHt9CgogIGNsYXNzIEFkc1JlcXVlc3QgewogICAgc2V0QWRXaWxsQXV0b1BsYXkoKSB7fQogICAgc2V0QWRXaWxsUGxheU11dGVkKCkge30KICAgIHNldENvbnRpbnVvdXNQbGF5YmFjaygpIHt9CiAgfQoKICBjbGFzcyBBZFBvZEluZm8gewogICAgZ2V0QWRQb3NpdGlvbigpIHsKICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICBnZXRJc0J1bXBlcigpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgZ2V0TWF4RHVyYXRpb24oKSB7CiAgICAgIHJldHVybiAtMTsKICAgIH0KICAgIGdldFBvZEluZGV4KCkgewogICAgICByZXR1cm4gMTsKICAgIH0KICAgIGdldFRpbWVPZmZzZXQoKSB7CiAgICAgIHJldHVybiAwOwogICAgfQogICAgZ2V0VG90YWxBZHMoKSB7CiAgICAgIHJldHVybiAxOwogICAgfQogIH0KCiAgY2xhc3MgQWQgewogICAgY29uc3RydWN0b3IoKSB7CiAgICAgIHRoaXMuX3BpID0gbmV3IEFkUG9kSW5mbygpOwogICAgfQogICAgZ2V0QWRJZCgpIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogICAgZ2V0QWRQb2RJbmZvKCkgewogICAgICByZXR1cm4gdGhpcy5fcGk7CiAgICB9CiAgICBnZXRBZFN5c3RlbSgpIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogICAgZ2V0QWR2ZXJ0aXNlck5hbWUoKSB7CiAgICAgIHJldHVybiAiIjsKICAgIH0KICAgIGdldEFwaUZyYW1ld29yaygpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgICBnZXRDb21wYW5pb25BZHMoKSB7CiAgICAgIHJldHVybiBbXTsKICAgIH0KICAgIGdldENvbnRlbnRUeXBlKCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CiAgICBnZXRDcmVhdGl2ZUFkSWQoKSB7CiAgICAgIHJldHVybiAiIjsKICAgIH0KICAgIGdldENyZWF0aXZlSWQoKSB7CiAgICAgIHJldHVybiAiIjsKICAgIH0KICAgIGdldERlYWxJZCgpIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogICAgZ2V0RGVzY3JpcHRpb24oKSB7CiAgICAgIHJldHVybiAiIjsKICAgIH0KICAgIGdldER1cmF0aW9uKCkgewogICAgICByZXR1cm4gOC41OwogICAgfQogICAgZ2V0SGVpZ2h0KCkgewogICAgICByZXR1cm4gMDsKICAgIH0KICAgIGdldE1lZGlhVXJsKCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICAgIGdldE1pblN1Z2dlc3RlZER1cmF0aW9uKCkgewogICAgICByZXR1cm4gLTI7CiAgICB9CiAgICBnZXRTa2lwVGltZU9mZnNldCgpIHsKICAgICAgcmV0dXJuIC0xOwogICAgfQogICAgZ2V0U3VydmV5VXJsKCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICAgIGdldFRpdGxlKCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CiAgICBnZXRUcmFmZmlja2luZ1BhcmFtZXRlcnMoKSB7CiAgICAgIHJldHVybiB7fTsKICAgIH0KICAgIGdldFRyYWZmaWNraW5nUGFyYW1ldGVyc1N0cmluZygpIHsKICAgICAgcmV0dXJuICIiOwogICAgfQogICAgZ2V0VWlFbGVtZW50cygpIHsKICAgICAgcmV0dXJuIFsiIl07CiAgICB9CiAgICBnZXRVbml2ZXJzYWxBZElkUmVnaXN0cnkoKSB7CiAgICAgIHJldHVybiAidW5rbm93biI7CiAgICB9CiAgICBnZXRVbml2ZXJzYWxBZElkcygpIHsKICAgICAgcmV0dXJuIFtuZXcgVW5pdmVyc2FsQWRJZEluZm8oKV07CiAgICB9CiAgICBnZXRVbml2ZXJzYWxBZElkVmFsdWUoKSB7CiAgICAgIHJldHVybiAidW5rbm93biI7CiAgICB9CiAgICBnZXRWYXN0TWVkaWFCaXRyYXRlKCkgewogICAgICByZXR1cm4gMDsKICAgIH0KICAgIGdldFZhc3RNZWRpYUhlaWdodCgpIHsKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBnZXRWYXN0TWVkaWFXaWR0aCgpIHsKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBnZXRXaWR0aCgpIHsKICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBnZXRXcmFwcGVyQWRJZHMoKSB7CiAgICAgIHJldHVybiBbIiJdOwogICAgfQogICAgZ2V0V3JhcHBlckFkU3lzdGVtcygpIHsKICAgICAgcmV0dXJuIFsiIl07CiAgICB9CiAgICBnZXRXcmFwcGVyQ3JlYXRpdmVJZHMoKSB7CiAgICAgIHJldHVybiBbIiJdOwogICAgfQogICAgaXNMaW5lYXIoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgaXNTa2lwcGFibGUoKSB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogIH0KCiAgY2xhc3MgQ29tcGFuaW9uQWQgewogICAgZ2V0QWRTbG90SWQoKSB7CiAgICAgIHJldHVybiAiIjsKICAgIH0KICAgIGdldENvbnRlbnQoKSB7CiAgICAgIHJldHVybiAiIjsKICAgIH0KICAgIGdldENvbnRlbnRUeXBlKCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CiAgICBnZXRIZWlnaHQoKSB7CiAgICAgIHJldHVybiAxOwogICAgfQogICAgZ2V0V2lkdGgoKSB7CiAgICAgIHJldHVybiAxOwogICAgfQogIH0KCiAgY2xhc3MgQWRFcnJvciB7CiAgICBjb25zdHJ1Y3Rvcih0eXBlLCBjb2RlLCB2YXN0LCBtZXNzYWdlKSB7CiAgICAgIHRoaXMuZXJyb3JDb2RlID0gY29kZTsKICAgICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKICAgICAgdGhpcy50eXBlID0gdHlwZTsKICAgICAgdGhpcy52YXN0RXJyb3JDb2RlID0gdmFzdDsKICAgIH0KICAgIGdldEVycm9yQ29kZSgpIHsKICAgICAgcmV0dXJuIHRoaXMuZXJyb3JDb2RlOwogICAgfQogICAgZ2V0SW5uZXJFcnJvcigpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KICAgIGdldE1lc3NhZ2UoKSB7CiAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2U7CiAgICB9CiAgICBnZXRUeXBlKCkgewogICAgICByZXR1cm4gdGhpcy50eXBlOwogICAgfQogICAgZ2V0VmFzdEVycm9yQ29kZSgpIHsKICAgICAgcmV0dXJuIHRoaXMudmFzdEVycm9yQ29kZTsKICAgIH0KICAgIHRvU3RyaW5nKCkgewogICAgICByZXR1cm4gYEFkRXJyb3IgJHt0aGlzLmVycm9yQ29kZX06ICR7dGhpcy5tZXNzYWdlfWA7CiAgICB9CiAgfQogIEFkRXJyb3IuRXJyb3JDb2RlID0ge307CiAgQWRFcnJvci5UeXBlID0ge307CgogIGNvbnN0IGlzRW5nYWRnZXQgPSAoKSA9PiB7CiAgICB0cnkgewogICAgICBmb3IgKGNvbnN0IGN0eCBvZiBPYmplY3QudmFsdWVzKHdpbmRvdy52aWRpYmxlLl9nZXRDb250ZXh0cygpKSkgewogICAgICAgIGNvbnN0IHBsYXllciA9IGN0eC5nZXRQbGF5ZXIoKTsKICAgICAgICBpZiAoIXBsYXllcikgeyBjb250aW51ZTt9CiAgICAgICAgY29uc3QgZGl2ID0gcGxheWVyLmRpdjsKICAgICAgICBpZiAoIWRpdikgeyBjb250aW51ZTsgfQogICAgICAgIGlmIChkaXYuaW5uZXJIVE1MLmluY2x1ZGVzKCJ3d3cuZW5nYWRnZXQuY29tIikpIHsKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgfQogICAgfSBjYXRjaCAoXykge30KICAgIHJldHVybiBmYWxzZTsKICB9OwoKICBjb25zdCBjdXJyZW50QWQgPSBpc0VuZ2FkZ2V0KCkgPyB1bmRlZmluZWQgOiBuZXcgQWQoKTsKCiAgY2xhc3MgQWRFdmVudCB7CiAgICBjb25zdHJ1Y3Rvcih0eXBlKSB7CiAgICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgICB9CiAgICBnZXRBZCgpIHsKICAgICAgcmV0dXJuIGN1cnJlbnRBZDsKICAgIH0KICAgIGdldEFkRGF0YSgpIHsKICAgICAgcmV0dXJuIHt9OwogICAgfQogIH0KICBBZEV2ZW50LlR5cGUgPSB7CiAgICBBRF9CUkVBS19SRUFEWTogImFkQnJlYWtSZWFkeSIsCiAgICBBRF9CVUZGRVJJTkc6ICJhZEJ1ZmZlcmluZyIsCiAgICBBRF9DQU5fUExBWTogImFkQ2FuUGxheSIsCiAgICBBRF9NRVRBREFUQTogImFkTWV0YWRhdGEiLAogICAgQURfUFJPR1JFU1M6ICJhZFByb2dyZXNzIiwKICAgIEFMTF9BRFNfQ09NUExFVEVEOiAiYWxsQWRzQ29tcGxldGVkIiwKICAgIENMSUNLOiAiY2xpY2siLAogICAgQ09NUExFVEU6ICJjb21wbGV0ZSIsCiAgICBDT05URU5UX1BBVVNFX1JFUVVFU1RFRDogImNvbnRlbnRQYXVzZVJlcXVlc3RlZCIsCiAgICBDT05URU5UX1JFU1VNRV9SRVFVRVNURUQ6ICJjb250ZW50UmVzdW1lUmVxdWVzdGVkIiwKICAgIERVUkFUSU9OX0NIQU5HRTogImR1cmF0aW9uQ2hhbmdlIiwKICAgIEVYUEFOREVEX0NIQU5HRUQ6ICJleHBhbmRlZENoYW5nZWQiLAogICAgRklSU1RfUVVBUlRJTEU6ICJmaXJzdFF1YXJ0aWxlIiwKICAgIElNUFJFU1NJT046ICJpbXByZXNzaW9uIiwKICAgIElOVEVSQUNUSU9OOiAiaW50ZXJhY3Rpb24iLAogICAgTElORUFSX0NIQU5HRTogImxpbmVhckNoYW5nZSIsCiAgICBMSU5FQVJfQ0hBTkdFRDogImxpbmVhckNoYW5nZWQiLAogICAgTE9BREVEOiAibG9hZGVkIiwKICAgIExPRzogImxvZyIsCiAgICBNSURQT0lOVDogIm1pZHBvaW50IiwKICAgIFBBVVNFRDogInBhdXNlIiwKICAgIFJFU1VNRUQ6ICJyZXN1bWUiLAogICAgU0tJUFBBQkxFX1NUQVRFX0NIQU5HRUQ6ICJza2lwcGFibGVTdGF0ZUNoYW5nZWQiLAogICAgU0tJUFBFRDogInNraXAiLAogICAgU1RBUlRFRDogInN0YXJ0IiwKICAgIFRISVJEX1FVQVJUSUxFOiAidGhpcmRRdWFydGlsZSIsCiAgICBVU0VSX0NMT1NFOiAidXNlckNsb3NlIiwKICAgIFZJREVPX0NMSUNLRUQ6ICJ2aWRlb0NsaWNrZWQiLAogICAgVklERU9fSUNPTl9DTElDS0VEOiAidmlkZW9JY29uQ2xpY2tlZCIsCiAgICBWSUVXQUJMRV9JTVBSRVNTSU9OOiAidmlld2FibGVfaW1wcmVzc2lvbiIsCiAgICBWT0xVTUVfQ0hBTkdFRDogInZvbHVtZUNoYW5nZSIsCiAgICBWT0xVTUVfTVVURUQ6ICJtdXRlIiwKICB9OwoKICBjbGFzcyBBZEVycm9yRXZlbnQgewogICAgY29uc3RydWN0b3IoZXJyb3IpIHsKICAgICAgdGhpcy50eXBlID0gImFkRXJyb3IiOwogICAgICB0aGlzLmVycm9yID0gZXJyb3I7CiAgICB9CiAgICBnZXRFcnJvcigpIHsKICAgICAgcmV0dXJuIHRoaXMuZXJyb3I7CiAgICB9CiAgICBnZXRVc2VyUmVxdWVzdENvbnRleHQoKSB7CiAgICAgIHJldHVybiB7fTsKICAgIH0KICB9CiAgQWRFcnJvckV2ZW50LlR5cGUgPSB7CiAgICBBRF9FUlJPUjogImFkRXJyb3IiLAogIH07CgogIGNvbnN0IG1hbmFnZXIgPSBuZXcgQWRzTWFuYWdlcigpOwoKICBjbGFzcyBBZHNNYW5hZ2VyTG9hZGVkRXZlbnQgewogICAgY29uc3RydWN0b3IodHlwZSkgewogICAgICB0aGlzLnR5cGUgPSB0eXBlOwogICAgfQogICAgZ2V0QWRzTWFuYWdlcihjLCBzZXR0aW5ncykgewogICAgICBpZiAoc2V0dGluZ3MgJiYgc2V0dGluZ3MuZW5hYmxlUHJlbG9hZGluZykgewogICAgICAgIG1hbmFnZXIuX2VuYWJsZVByZWxvYWRpbmcgPSB0cnVlOwogICAgICB9CiAgICAgIHJldHVybiBtYW5hZ2VyOwogICAgfQogICAgZ2V0VXNlclJlcXVlc3RDb250ZXh0KCkgewogICAgICByZXR1cm4ge307CiAgICB9CiAgfQogIEFkc01hbmFnZXJMb2FkZWRFdmVudC5UeXBlID0gewogICAgQURTX01BTkFHRVJfTE9BREVEOiAiYWRzTWFuYWdlckxvYWRlZCIsCiAgfTsKCiAgY2xhc3MgQ3VzdG9tQ29udGVudExvYWRlZEV2ZW50IHt9CiAgQ3VzdG9tQ29udGVudExvYWRlZEV2ZW50LlR5cGUgPSB7CiAgICBDVVNUT01fQ09OVEVOVF9MT0FERUQ6ICJkZXByZWNhdGVkLWV2ZW50IiwKICB9OwoKICBjbGFzcyBDb21wYW5pb25BZFNlbGVjdGlvblNldHRpbmdzIHt9CiAgQ29tcGFuaW9uQWRTZWxlY3Rpb25TZXR0aW5ncy5DcmVhdGl2ZVR5cGUgPSB7CiAgICBBTEw6ICJBbGwiLAogICAgRkxBU0g6ICJGbGFzaCIsCiAgICBJTUFHRTogIkltYWdlIiwKICB9OwogIENvbXBhbmlvbkFkU2VsZWN0aW9uU2V0dGluZ3MuUmVzb3VyY2VUeXBlID0gewogICAgQUxMOiAiQWxsIiwKICAgIEhUTUw6ICJIdG1sIiwKICAgIElGUkFNRTogIklGcmFtZSIsCiAgICBTVEFUSUM6ICJTdGF0aWMiLAogIH07CiAgQ29tcGFuaW9uQWRTZWxlY3Rpb25TZXR0aW5ncy5TaXplQ3JpdGVyaWEgPSB7CiAgICBJR05PUkU6ICJJZ25vcmVTaXplIiwKICAgIFNFTEVDVF9FWEFDVF9NQVRDSDogIlNlbGVjdEV4YWN0TWF0Y2giLAogICAgU0VMRUNUX05FQVJfTUFUQ0g6ICJTZWxlY3ROZWFyTWF0Y2giLAogIH07CgogIGNsYXNzIEFkQ3VlUG9pbnRzIHsKICAgIGdldEN1ZVBvaW50cygpIHsKICAgICAgcmV0dXJuIFtdOwogICAgfQogIH0KCiAgY2xhc3MgQWRQcm9ncmVzc0RhdGEge30KCiAgY2xhc3MgVW5pdmVyc2FsQWRJZEluZm8gewogICAgZ2V0QWRJZFJlZ2lzdHJ5KCkgewogICAgICByZXR1cm4gIiI7CiAgICB9CiAgICBnZXRBZElkVmFsdWUoKSB7CiAgICAgIHJldHVybiAiIjsKICAgIH0KICB9CgogIE9iamVjdC5hc3NpZ24oaW1hLCB7CiAgICBBZEN1ZVBvaW50cywKICAgIEFkRGlzcGxheUNvbnRhaW5lciwKICAgIEFkRXJyb3IsCiAgICBBZEVycm9yRXZlbnQsCiAgICBBZEV2ZW50LAogICAgQWRQb2RJbmZvLAogICAgQWRQcm9ncmVzc0RhdGEsCiAgICBBZHNMb2FkZXIsCiAgICBBZHNNYW5hZ2VyOiBtYW5hZ2VyLAogICAgQWRzTWFuYWdlckxvYWRlZEV2ZW50LAogICAgQWRzUmVuZGVyaW5nU2V0dGluZ3MsCiAgICBBZHNSZXF1ZXN0LAogICAgQ29tcGFuaW9uQWQsCiAgICBDb21wYW5pb25BZFNlbGVjdGlvblNldHRpbmdzLAogICAgQ3VzdG9tQ29udGVudExvYWRlZEV2ZW50LAogICAgZ3B0UHJveHlJbnN0YW5jZToge30sCiAgICBJbWFTZGtTZXR0aW5ncywKICAgIE9taWRBY2Nlc3NNb2RlOiB7CiAgICAgIERPTUFJTjogImRvbWFpbiIsCiAgICAgIEZVTEw6ICJmdWxsIiwKICAgICAgTElNSVRFRDogImxpbWl0ZWQiLAogICAgfSwKICAgIE9taWRWZXJpZmljYXRpb25WZW5kb3I6IHsKICAgICAgMTogIk9USEVSIiwKICAgICAgMjogIkdPT0dMRSIsCiAgICAgIEdPT0dMRTogMiwKICAgICAgT1RIRVI6IDEKICAgIH0sCiAgICBzZXR0aW5nczogbmV3IEltYVNka1NldHRpbmdzKCksCiAgICBVaUVsZW1lbnRzOiB7CiAgICAgIEFEX0FUVFJJQlVUSU9OOiAiYWRBdHRyaWJ1dGlvbiIsCiAgICAgIENPVU5URE9XTjogImNvdW50ZG93biIsCiAgICB9LAogICAgVW5pdmVyc2FsQWRJZEluZm8sCiAgICBWRVJTSU9OLAogICAgVmlld01vZGU6IHsKICAgICAgRlVMTFNDUkVFTjogImZ1bGxzY3JlZW4iLAogICAgICBOT1JNQUw6ICJub3JtYWwiLAogICAgfSwKICB9KTsKCiAgaWYgKCF3aW5kb3cuZ29vZ2xlKSB7CiAgICB3aW5kb3cuZ29vZ2xlID0ge307CiAgfQoKICB3aW5kb3cuZ29vZ2xlLmltYSA9IGltYTsKfQo="},{"name":"googlesyndication_adsbygoogle.js","aliases":["googlesyndication.com/adsbygoogle.js","googlesyndication-adsbygoogle"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBpbml0ID0gKCApID0+IHsKICAgICAgICB3aW5kb3cuYWRzYnlnb29nbGUgPSB7CiAgICAgICAgICAgIGxvYWRlZDogdHJ1ZSwKICAgICAgICAgICAgcHVzaDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGNvbnN0IHBocyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5hZHNieWdvb2dsZScpOwogICAgICAgIGNvbnN0IGNzcyA9ICdoZWlnaHQ6MXB4IWltcG9ydGFudDttYXgtaGVpZ2h0OjFweCFpbXBvcnRhbnQ7bWF4LXdpZHRoOjFweCFpbXBvcnRhbnQ7d2lkdGg6MXB4IWltcG9ydGFudDsnOwogICAgICAgIGZvciAoIGxldCBpID0gMDsgaSA8IHBocy5sZW5ndGg7IGkrKyApIHsKICAgICAgICAgICAgY29uc3QgaWQgPSBgYXN3aWZ0XyR7aX1gOwogICAgICAgICAgICBpZiAoIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYGlmcmFtZSMke2lkfWApICE9PSBudWxsICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICBjb25zdCBmciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwogICAgICAgICAgICBmci5pZCA9IGlkOwogICAgICAgICAgICBmci5zdHlsZSA9IGNzczsKICAgICAgICAgICAgY29uc3QgY2ZyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CiAgICAgICAgICAgIGNmci5pZCA9IGBnb29nbGVfYWRzX2ZyYW1lJHtpfWA7CiAgICAgICAgICAgIGZyLmFwcGVuZENoaWxkKGNmcik7CiAgICAgICAgICAgIGNvbnN0IHBoID0gcGhzW2ldOwogICAgICAgICAgICBwaC5hcHBlbmRDaGlsZChmcik7CiAgICAgICAgICAgIHBoLnNldEF0dHJpYnV0ZSgnZGF0YS1hZHNieWdvb2dsZS1zdGF0dXMnLCAnZG9uZScpOwogICAgICAgIH0KICAgIH07CiAgICBpZiAoCiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmFkc2J5Z29vZ2xlJykubGVuZ3RoID09PSAwICYmCiAgICAgICAgZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnCiAgICApIHsKICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXQsIHsgb25jZTogdHJ1ZSB9KTsKICAgIH0gZWxzZSB7CiAgICAgICAgaW5pdCgpOwogICAgfQp9KSgpOwoKLyoKcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2pzL2Fkc2J5Z29vZ2xlLmpzLGFkc2J5Z29vZ2xlLXBsYWNlaG9sZGVyLGFkc2J5Z29vZ2xlU3RhdHVzLGdvb2dsZV9hZF9jaGFubmVsLGdvb2dsZV9hZF9jbGllbnQsZ29vZ2xlX2FkX2Zvcm1hdCxnb29nbGVfYWRfZnJlcXVlbmN5X2hpbnQsZ29vZ2xlX2FkX2hlaWdodCxnb29nbGVfYWRfaG9zdCxnb29nbGVfYWRfaG9zdF9jaGFubmVsLGdvb2dsZV9hZF9tb2RpZmljYXRpb25zLGdvb2dsZV9hZF9yZWdpb24sZ29vZ2xlX2FkX3Jlc2l6YWJsZSxnb29nbGVfYWRfcmVzaXplLGdvb2dsZV9hZF9zZWN0aW9uLGdvb2dsZV9hZF9zZW1hbnRpY19hcmVhLGdvb2dsZV9hZF93aWR0aCxnb29nbGVfYWRicmVha190ZXN0LGdvb2dsZV9hZHNfZnJhbWUsZ29vZ2xlX2Fkc19pZnJhbWUsZ29vZ2xlX2FkdGVzdCxnb29nbGVfYWRtb2JfaW50ZXJzdGl0aWFsX3Nsb3QsZ29vZ2xlX2FkbW9iX3Jld2FyZGVkX3Nsb3QsZ29vZ2xlX2FkbW9iX2Fkc19vbmx5LGdvb2dsZS1hZHNlbnNlLXBsYXRmb3JtLWFjY291bnQsZ29vZ2xlX2Fkc2Vuc2Vfc2V0dGluZ3MsZ29vZ2xlX2FtYV9jb25maWcsZ29vZ2xlLWFtYS1vcmRlci1hc3N1cmFuY2UsZ29vZ2xlX2FtYV9zZXR0aW5ncyxnb29nbGVfYW1hX3N0YXRlLGdvb2dsZV9hcGx0bGFkLGdvb2dsZV9hdWRpb19zZW5zZSxnb29nbGUtYXV0by1wbGFjZWQtcmVhZC1hbG91ZC1wbGF5ZXItcmVzZXJ2ZWQsZ29vZ2xlX2RlYnVnX3BhcmFtcyxnb29nbGVfZnVsbF93aWR0aF9yZXNwb25zaXZlLGdvb2dsZV9mdWxsX3dpZHRoX3Jlc3BvbnNpdmVfYWxsb3dlZCxnb29nbGVfaW1hZ2VfcmVxdWVzdHMsZ29vZ2xlX2pzX2Vycm9ycyxnb29nbGVfanNfcmVwb3J0aW5nX3F1ZXVlLGdvb2dsZV9sb2FkZXJfZmVhdHVyZXNfdXNlZCxnb29nbGVfbGxwLGdvb2dsZV9sb2dnaW5nX3F1ZXVlLGdvb2dsZV9tYXhfYWRfY29udGVudF9yYXRpbmcsZ29vZ2xlX21lYXN1cmVfanNfdGltaW5nLGdvb2dsZV9tbF9yYW5rLGdvb2dsZV9vdmVybGF5cyxnb29nbGVfb3ZlcnJpZGVfZm9ybWF0LGdvb2dsZV9wYWNrYWdlLGdvb2dsZV9wYWdlX3VybCxnb29nbGVfcGVyc2lzdGVudF9zdGF0ZV9hc3luYyxnb29nbGVfcGdiX3JlYWN0aXZlLGdvb2dsZV9wbGFjZW1lbnRfaWQsZ29vZ2xlX3ByZXZfYWRfZm9ybWF0c19ieV9yZWdpb24sZ29vZ2xlX3ByZXZfYWRfc2xvdG5hbWVzX2J5X3JlZ2lvbixnb29nbGVfcmVhY3RpdmVfYWRfZm9ybWF0LGdvb2dsZV9yZWFjdGl2ZV9hZHNfZ2xvYmFsX3N0YXRlLGdvb2dsZV9yZXNpemluZ19oZWlnaHQsZ29vZ2xlX3Jlc2l6aW5nX3dpZHRoLGdvb2dsZV9yZXNwb25zaXZlX2F1dG9fZm9ybWF0LGdvb2dsZV9yZXNwb25zaXZlX2R1bW15X2FkLGdvb2dsZV9yZXNwb25zaXZlX2Zvcm1hdHMsZ29vZ2xlX3Jlc3RyaWN0X2RhdGFfcHJvY2Vzc2luZyxnb29nbGVfcnVtX3Rhc2tfaWRfY291bnRlcixnb29nbGVfc2FmZV9mb3JfcmVzcG9uc2l2ZV9vdmVycmlkZSxnb29nbGVfc2hhZG93X21vZGUsZ29vZ2xlX3NydCxnb29nbGVfdGFnX2Zvcl91bmRlcl9hZ2Vfb2ZfY29uc2VudCxnb29nbGVfdGFnX29yaWdpbixnb29nbGVfdGFnX3BhcnRuZXIsZ29vZ2xlX3RyYWZmaWNfc291cmNlLGdvb2dsZV91bmlxdWVfaWQsZ29vZ2xldGFnCiovCg=="},{"name":"googletagservices_gpt.js","aliases":["googletagservices.com/gpt.js","googletagservices-gpt"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICAvLyBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9kb3VibGVjbGljay1ncHQvcmVmZXJlbmNlCiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH0uYmluZCgpOwogICAgY29uc3Qgbm9vcHRoaXNmbiA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgfTsKICAgIGNvbnN0IG5vb3BudWxsZm4gPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH07CiAgICBjb25zdCBub29wYXJyYXlmbiA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBbXTsKICAgIH07CiAgICBjb25zdCBub29wc3RyZm4gPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gJyc7CiAgICB9OwogICAgLy8KICAgIGNvbnN0IGNvbXBhbmlvbkFkc1NlcnZpY2UgPSB7CiAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcjogbm9vcHRoaXNmbiwKICAgICAgICBlbmFibGVTeW5jTG9hZGluZzogbm9vcGZuLAogICAgICAgIHNldFJlZnJlc2hVbmZpbGxlZFNsb3RzOiBub29wZm4KICAgIH07CiAgICBjb25zdCBjb250ZW50U2VydmljZSA9IHsKICAgICAgICBhZGRFdmVudExpc3RlbmVyOiBub29wdGhpc2ZuLAogICAgICAgIHNldENvbnRlbnQ6IG5vb3BmbgogICAgfTsKICAgIGNvbnN0IFBhc3NiYWNrU2xvdCA9IGZ1bmN0aW9uKCkgewogICAgfTsKICAgIGxldCBwID0gUGFzc2JhY2tTbG90LnByb3RvdHlwZTsKICAgIHAuZGlzcGxheSA9IG5vb3BmbjsKICAgIHAuZ2V0ID0gbm9vcG51bGxmbjsKICAgIHAuc2V0ID0gbm9vcHRoaXNmbjsKICAgIHAuc2V0Q2xpY2tVcmwgPSBub29wdGhpc2ZuOwogICAgcC5zZXRUYWdGb3JDaGlsZERpcmVjdGVkVHJlYXRtZW50ID0gbm9vcHRoaXNmbjsKICAgIHAuc2V0VGFyZ2V0aW5nID0gbm9vcHRoaXNmbjsKICAgIHAudXBkYXRlVGFyZ2V0aW5nRnJvbU1hcCA9IG5vb3B0aGlzZm47CiAgICBjb25zdCBwdWJBZHNTZXJ2aWNlID0gewogICAgICAgIGFkZEV2ZW50TGlzdGVuZXI6IG5vb3B0aGlzZm4sCiAgICAgICAgY2xlYXI6IG5vb3BmbiwKICAgICAgICBjbGVhckNhdGVnb3J5RXhjbHVzaW9uczogbm9vcHRoaXNmbiwKICAgICAgICBjbGVhclRhZ0ZvckNoaWxkRGlyZWN0ZWRUcmVhdG1lbnQ6IG5vb3B0aGlzZm4sCiAgICAgICAgY2xlYXJUYXJnZXRpbmc6IG5vb3B0aGlzZm4sCiAgICAgICAgY29sbGFwc2VFbXB0eURpdnM6IG5vb3BmbiwKICAgICAgICBkZWZpbmVPdXRPZlBhZ2VQYXNzYmFjazogZnVuY3Rpb24oKSB7IHJldHVybiBuZXcgUGFzc2JhY2tTbG90KCk7IH0sCiAgICAgICAgZGVmaW5lUGFzc2JhY2s6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbmV3IFBhc3NiYWNrU2xvdCgpOyB9LAogICAgICAgIGRpc2FibGVJbml0aWFsTG9hZDogbm9vcGZuLAogICAgICAgIGRpc3BsYXk6IG5vb3BmbiwKICAgICAgICBlbmFibGVBc3luY1JlbmRlcmluZzogbm9vcGZuLAogICAgICAgIGVuYWJsZUxhenlMb2FkOiBub29wZm4sCiAgICAgICAgZW5hYmxlU2luZ2xlUmVxdWVzdDogbm9vcGZuLAogICAgICAgIGVuYWJsZVN5bmNSZW5kZXJpbmc6IG5vb3BmbiwKICAgICAgICBlbmFibGVWaWRlb0Fkczogbm9vcGZuLAogICAgICAgIGdldDogbm9vcG51bGxmbiwKICAgICAgICBnZXRBdHRyaWJ1dGVLZXlzOiBub29wYXJyYXlmbiwKICAgICAgICBnZXRUYXJnZXRpbmc6IG5vb3BhcnJheWZuLAogICAgICAgIGdldFRhcmdldGluZ0tleXM6IG5vb3BhcnJheWZuLAogICAgICAgIGdldFNsb3RzOiBub29wYXJyYXlmbiwKICAgICAgICByZWZyZXNoOiBub29wZm4sCiAgICAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogbm9vcGZuLAogICAgICAgIHNldDogbm9vcHRoaXNmbiwKICAgICAgICBzZXRDYXRlZ29yeUV4Y2x1c2lvbjogbm9vcHRoaXNmbiwKICAgICAgICBzZXRDZW50ZXJpbmc6IG5vb3BmbiwKICAgICAgICBzZXRDb29raWVPcHRpb25zOiBub29wdGhpc2ZuLAogICAgICAgIHNldEZvcmNlU2FmZUZyYW1lOiBub29wdGhpc2ZuLAogICAgICAgIHNldExvY2F0aW9uOiBub29wdGhpc2ZuLAogICAgICAgIHNldFB1Ymxpc2hlclByb3ZpZGVkSWQ6IG5vb3B0aGlzZm4sCiAgICAgICAgc2V0UHJpdmFjeVNldHRpbmdzOiBub29wdGhpc2ZuLAogICAgICAgIHNldFJlcXVlc3ROb25QZXJzb25hbGl6ZWRBZHM6IG5vb3B0aGlzZm4sCiAgICAgICAgc2V0U2FmZUZyYW1lQ29uZmlnOiBub29wdGhpc2ZuLAogICAgICAgIHNldFRhZ0ZvckNoaWxkRGlyZWN0ZWRUcmVhdG1lbnQ6IG5vb3B0aGlzZm4sCiAgICAgICAgc2V0VGFyZ2V0aW5nOiBub29wdGhpc2ZuLAogICAgICAgIHNldFZpZGVvQ29udGVudDogbm9vcHRoaXNmbiwKICAgICAgICB1cGRhdGVDb3JyZWxhdG9yOiBub29wZm4KICAgIH07CiAgICBjb25zdCBTaXplTWFwcGluZ0J1aWxkZXIgPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICBwID0gU2l6ZU1hcHBpbmdCdWlsZGVyLnByb3RvdHlwZTsKICAgIHAuYWRkU2l6ZSA9IG5vb3B0aGlzZm47CiAgICBwLmJ1aWxkID0gbm9vcG51bGxmbjsKICAgIGNvbnN0IFNsb3QgPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICBwID0gU2xvdC5wcm90b3R5cGU7CiAgICBwLmFkZFNlcnZpY2UgPSBub29wdGhpc2ZuOwogICAgcC5jbGVhckNhdGVnb3J5RXhjbHVzaW9ucyA9IG5vb3B0aGlzZm47CiAgICBwLmNsZWFyVGFyZ2V0aW5nID0gbm9vcHRoaXNmbjsKICAgIHAuZGVmaW5lU2l6ZU1hcHBpbmcgPSBub29wdGhpc2ZuOwogICAgcC5nZXQgPSBub29wbnVsbGZuOwogICAgcC5nZXRBZFVuaXRQYXRoID0gbm9vcGFycmF5Zm47CiAgICBwLmdldEF0dHJpYnV0ZUtleXMgPSBub29wYXJyYXlmbjsKICAgIHAuZ2V0Q2F0ZWdvcnlFeGNsdXNpb25zID0gbm9vcGFycmF5Zm47CiAgICBwLmdldERvbUlkID0gbm9vcHN0cmZuOwogICAgcC5nZXRSZXNwb25zZUluZm9ybWF0aW9uID0gbm9vcG51bGxmbjsKICAgIHAuZ2V0U2xvdEVsZW1lbnRJZCA9IG5vb3BzdHJmbjsKICAgIHAuZ2V0U2xvdElkID0gbm9vcHRoaXNmbjsKICAgIHAuZ2V0VGFyZ2V0aW5nID0gbm9vcGFycmF5Zm47CiAgICBwLmdldFRhcmdldGluZ0tleXMgPSBub29wYXJyYXlmbjsKICAgIHAuc2V0ID0gbm9vcHRoaXNmbjsKICAgIHAuc2V0Q2F0ZWdvcnlFeGNsdXNpb24gPSBub29wdGhpc2ZuOwogICAgcC5zZXRDbGlja1VybCA9IG5vb3B0aGlzZm47CiAgICBwLnNldENvbGxhcHNlRW1wdHlEaXYgPSBub29wdGhpc2ZuOwogICAgcC5zZXRUYXJnZXRpbmcgPSBub29wdGhpc2ZuOwogICAgcC51cGRhdGVUYXJnZXRpbmdGcm9tTWFwID0gbm9vcHRoaXNmbjsKICAgIC8vCiAgICBjb25zdCBncHQgPSB3aW5kb3cuZ29vZ2xldGFnIHx8IHt9OwogICAgY29uc3QgY21kID0gZ3B0LmNtZCB8fCBbXTsKICAgIGdwdC5hcGlSZWFkeSA9IHRydWU7CiAgICBncHQuY21kID0gW107CiAgICBncHQuY21kLnB1c2ggPSBmdW5jdGlvbihhKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgYSgpOwogICAgICAgIH0gY2F0Y2ggKGV4KSB7CiAgICAgICAgfQogICAgICAgIHJldHVybiAxOwogICAgfTsKICAgIGdwdC5jb21wYW5pb25BZHMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGNvbXBhbmlvbkFkc1NlcnZpY2U7IH07CiAgICBncHQuY29udGVudCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gY29udGVudFNlcnZpY2U7IH07CiAgICBncHQuZGVmaW5lT3V0T2ZQYWdlU2xvdCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gbmV3IFNsb3QoKTsgfTsKICAgIGdwdC5kZWZpbmVTbG90ID0gZnVuY3Rpb24oKSB7IHJldHVybiBuZXcgU2xvdCgpOyB9OwogICAgZ3B0LmRlc3Ryb3lTbG90cyA9IG5vb3BmbjsKICAgIGdwdC5kaXNhYmxlUHVibGlzaGVyQ29uc29sZSA9IG5vb3BmbjsKICAgIGdwdC5kaXNwbGF5ID0gbm9vcGZuOwogICAgZ3B0LmVuYWJsZVNlcnZpY2VzID0gbm9vcGZuOwogICAgZ3B0LmdldFZlcnNpb24gPSBub29wc3RyZm47CiAgICBncHQucHViYWRzID0gZnVuY3Rpb24oKSB7IHJldHVybiBwdWJBZHNTZXJ2aWNlOyB9OwogICAgZ3B0LnB1YmFkc1JlYWR5ID0gdHJ1ZTsKICAgIGdwdC5zZXRBZElmcmFtZVRpdGxlID0gbm9vcGZuOwogICAgZ3B0LnNpemVNYXBwaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiBuZXcgU2l6ZU1hcHBpbmdCdWlsZGVyKCk7IH07CiAgICB3aW5kb3cuZ29vZ2xldGFnID0gZ3B0OwogICAgd2hpbGUgKCBjbWQubGVuZ3RoICE9PSAwICkgewogICAgICAgIGdwdC5jbWQucHVzaChjbWQuc2hpZnQoKSk7CiAgICB9Cn0pKCk7Cg=="},{"name":"hd-main.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBsID0ge307CiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICBjb25zdCBwcm9wcyA9IFsKICAgICAgICAiJGoiLCJBZCIsIkJkIiwiQ2QiLCJEZCIsIkVkIiwiRmQiLCJHZCIsIkhkIiwiSWQiLCJKZCIsIk5qIiwiT2MiLCJQYyIsIlBlIiwKICAgICAgICAiUWMiLCJRZSIsIlJjIiwiUmUiLCJSaSIsIlNjIiwiVGMiLCJVYyIsIlZjIiwiV2MiLCJXZyIsIlhjIiwiWGciLCJZYyIsIllkIiwKICAgICAgICAiYWQiLCJhZSIsImJkIiwiYmYiLCJjZCIsImRkIiwiZWQiLCJlZiIsImVrIiwiZmQiLCJmZyIsImZoIiwiZmsiLCJnZCIsImhkIiwKICAgICAgICAiaWciLCJpaiIsImpkIiwia2QiLCJrZSIsImxkIiwibWQiLCJtaSIsIm5kIiwib2QiLCJvaCIsInBkIiwicGYiLCJxZCIsInJkIiwKICAgICAgICAic2QiLCJ0ZCIsInVkIiwidmQiLCJ3ZCIsIndnIiwieGQiLCJ4aCIsInlkIiwiemQiLAogICAgICAgICIkZCIsIiRlIiwiJGsiLCJBZSIsIkFmIiwiQWoiLCJCZSIsIkNlIiwiRGUiLCJFZSIsIkVrIiwiRW8iLCJFcCIsIkZlIiwiRm8iLAogICAgICAgICJHZSIsIkdoIiwiSGsiLCJJZSIsIklwIiwiSmUiLCJLZSIsIktrIiwiS3EiLCJMZSIsIkxoIiwiTGsiLCJNZSIsIk1tIiwiTmUiLAogICAgICAgICJPZSIsIlBlIiwiUWUiLCJSZSIsIlJwIiwiU2UiLCJUZSIsIlVlIiwiVmUiLCJWcCIsIldlIiwiWGQiLCJYZSIsIllkIiwiWWUiLAogICAgICAgICJaZCIsIlplIiwiWmYiLCJaayIsImFlIiwiYWYiLCJhbCIsImJlIiwiYmYiLCJiZyIsImNlIiwiY3AiLCJkZiIsImRpIiwiZWUiLAogICAgICAgICJlZiIsImZlIiwiZmYiLCJnZiIsImdtIiwiaGUiLCJoZiIsImllIiwiamUiLCJqZiIsImtlIiwia2YiLCJrbCIsImxlIiwibGYiLAogICAgICAgICJsayIsIm1mIiwibWciLCJtbiIsIm5mIiwib2UiLCJvZiIsInBlIiwicGYiLCJwZyIsInFlIiwicWYiLCJyZSIsInJmIiwic2UiLAogICAgICAgICJzZiIsInRlIiwidGYiLCJ0aSIsInVlIiwidWYiLCJ2ZSIsInZmIiwid2UiLCJ3ZiIsIndnIiwid2kiLCJ4ZSIsInllIiwieWYiLAogICAgICAgICJ5ayIsInlsIiwiemUiLCJ6ZiIsInprIgogICAgXTsKICAgIGZvciAoIGxldCBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrICkgewogICAgICAgIGxbcHJvcHNbaV1dID0gbm9vcGZuOwogICAgfQogICAgd2luZG93LkwgPSB3aW5kb3cuSiA9IGw7Cn0pKCk7Cg=="},{"name":"nobab.js","aliases":["bab-defuser.js","prevent-bab.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBzaWduYXR1cmVzID0gWwogICAgICAgIFsgJ2Jsb2NrYWRibG9jaycgXSwKICAgICAgICBbICdiYWJhc2JtJyBdLAogICAgICAgIFsgL2dldEl0ZW1cKCdiYWJuJ1wpLyBdLAogICAgICAgIFsKICAgICAgICAgICAgJ2dldEVsZW1lbnRCeUlkJywKICAgICAgICAgICAgJ1N0cmluZy5mcm9tQ2hhckNvZGUnLAogICAgICAgICAgICAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknLAogICAgICAgICAgICAnY2hhckF0JywKICAgICAgICAgICAgJ0RPTUNvbnRlbnRMb2FkZWQnLAogICAgICAgICAgICAnQWRCbG9jaycsCiAgICAgICAgICAgICdhZGRFdmVudExpc3RlbmVyJywKICAgICAgICAgICAgJ2RvU2Nyb2xsJywKICAgICAgICAgICAgJ2Zyb21DaGFyQ29kZScsCiAgICAgICAgICAgICc8PDJ8cj4+NCcsCiAgICAgICAgICAgICdzZXNzaW9uU3RvcmFnZScsCiAgICAgICAgICAgICdjbGllbnRXaWR0aCcsCiAgICAgICAgICAgICdsb2NhbFN0b3JhZ2UnLAogICAgICAgICAgICAnTWF0aCcsCiAgICAgICAgICAgICdyYW5kb20nCiAgICAgICAgXSwKICAgIF07CiAgICBjb25zdCBjaGVjayA9IGZ1bmN0aW9uKHMpIHsKICAgICAgICBmb3IgKCBsZXQgaSA9IDA7IGkgPCBzaWduYXR1cmVzLmxlbmd0aDsgaSsrICkgewogICAgICAgICAgICBjb25zdCB0b2tlbnMgPSBzaWduYXR1cmVzW2ldOwogICAgICAgICAgICBsZXQgbWF0Y2ggPSAwOwogICAgICAgICAgICBmb3IgKCBsZXQgaiA9IDA7IGogPCB0b2tlbnMubGVuZ3RoOyBqKysgKSB7CiAgICAgICAgICAgICAgICBjb25zdCB0b2tlbiA9IHRva2Vuc1tqXTsKICAgICAgICAgICAgICAgIGNvbnN0IHBvcyA9IHRva2VuIGluc3RhbmNlb2YgUmVnRXhwCiAgICAgICAgICAgICAgICAgICAgPyBzLnNlYXJjaCh0b2tlbikKICAgICAgICAgICAgICAgICAgICA6IHMuaW5kZXhPZih0b2tlbik7CiAgICAgICAgICAgICAgICBpZiAoIHBvcyAhPT0gLTEgKSB7IG1hdGNoICs9IDE7IH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIChtYXRjaCAvIHRva2Vucy5sZW5ndGgpID49IDAuOCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfTsKICAgIHdpbmRvdy5ldmFsID0gbmV3IFByb3h5KHdpbmRvdy5ldmFsLCB7ICAgICAgICAgICAgICAvLyBqc2hpbnQgaWdub3JlOiBsaW5lCiAgICAgICAgYXBwbHk6IGZ1bmN0aW9uKHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICBjb25zdCBhID0gYXJnc1swXTsKICAgICAgICAgICAgaWYgKCB0eXBlb2YgYSAhPT0gJ3N0cmluZycgfHwgIWNoZWNrKGEpICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5hcHBseSh0aGlzQXJnLCBhcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIGRvY3VtZW50LmJvZHkgKSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KCd2aXNpYmlsaXR5Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JhYmFzYm1zZ3gnKTsKICAgICAgICAgICAgaWYgKCBlbCApIHsKICAgICAgICAgICAgICAgIGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWwpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7CiAgICB3aW5kb3cuc2V0VGltZW91dCA9IG5ldyBQcm94eSh3aW5kb3cuc2V0VGltZW91dCwgewogICAgICAgIGFwcGx5OiBmdW5jdGlvbih0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpIHsKICAgICAgICAgICAgY29uc3QgYSA9IGFyZ3NbMF07CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgIHR5cGVvZiBhICE9PSAnc3RyaW5nJyB8fAogICAgICAgICAgICAgICAgL1wuYmFiX2VsZW1lbnRpZC4kLy50ZXN0KGEpID09PSBmYWxzZQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQuYXBwbHkodGhpc0FyZywgYXJncyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9KTsKfSkoKTsK"},{"name":"nobab2.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAyMS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0OwogICAgaWYgKCBzY3JpcHQgPT09IG51bGwgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc3JjID0gc2NyaXB0LnNyYzsKICAgIGlmICggdHlwZW9mIHNyYyAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgLy8gVGhlIHNjcmlwbGV0IGlzIG1lYW50IHRvIGFjdCBPTkxZIHdoZW4gaXQncyBiZWluZyB1c2VkIGFzIGEgcmVkaXJlY3Rpb24KICAgIC8vIGZvciBzcGVjaWZpYyBkb21haW5zLgogICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKAogICAgICAgICdeaHR0cHM/Oi8vW1xcdy1dK1xcLignICsKICAgICAgICBbCiAgICAgICAgICAgICdhZGNsaXh4XFwubmV0JywKICAgICAgICAgICAgJ2FkbmV0YXNpYVxcLmNvbScsCiAgICAgICAgICAgICdhZHRyYWNrZXJzXFwubmV0JywKICAgICAgICAgICAgJ2Jhbm5lcnRyYWNrXFwubmV0JywKICAgICAgICBdLmpvaW4oJ3wnKSArCiAgICAgICAgJykvLicKICAgICk7CiAgICBpZiAoIHJlLnRlc3Qoc3JjKSA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgd2luZG93Lm5IN2VYek9zRyA9IDg1ODsKfSkoKTsK"},{"name":"noeval.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBsb2cgPSBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpOwogICAgd2luZG93LmV2YWwgPSBuZXcgUHJveHkod2luZG93LmV2YWwsIHsgICAgICAgICAgLy8ganNoaW50IGlnbm9yZTogbGluZQogICAgICAgIGFwcGx5OiBmdW5jdGlvbih0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpIHsKICAgICAgICAgICAgbG9nKGBEb2N1bWVudCB0cmllZCB0byBldmFsLi4uICR7YXJnc1swXX1cbmApOwogICAgICAgIH0KICAgIH0pOwp9KSgpOwo="},{"name":"noeval-silent.js","aliases":["silent-noeval.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICB3aW5kb3cuZXZhbCA9IG5ldyBQcm94eSh3aW5kb3cuZXZhbCwgeyAgICAgICAgICAvLyBqc2hpbnQgaWdub3JlOiBsaW5lCiAgICAgICAgYXBwbHk6IGZ1bmN0aW9uKCkgewogICAgICAgIH0KICAgIH0pOwp9KSgpOwo="},{"name":"nofab.js","aliases":["fuckadblock.js-3.2.0"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICBjb25zdCBGYWIgPSBmdW5jdGlvbigpIHt9OwogICAgRmFiLnByb3RvdHlwZS5jaGVjayA9IG5vb3BmbjsKICAgIEZhYi5wcm90b3R5cGUuY2xlYXJFdmVudCA9IG5vb3BmbjsKICAgIEZhYi5wcm90b3R5cGUuZW1pdEV2ZW50ID0gbm9vcGZuOwogICAgRmFiLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICBpZiAoICFhICkgeyBiKCk7IH0KICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CiAgICBGYWIucHJvdG90eXBlLm9uRGV0ZWN0ZWQgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CiAgICBGYWIucHJvdG90eXBlLm9uTm90RGV0ZWN0ZWQgPSBmdW5jdGlvbihhKSB7CiAgICAgICAgYSgpOwogICAgICAgIHJldHVybiB0aGlzOwogICAgfTsKICAgIEZhYi5wcm90b3R5cGUuc2V0T3B0aW9uID0gbm9vcGZuOwogICAgRmFiLnByb3RvdHlwZS5vcHRpb25zID0gewogICAgICAgIHNldDogbm9vcGZuLAogICAgICAgIGdldDogbm9vcGZuLAogICAgfTsKICAgIGNvbnN0IGZhYiA9IG5ldyBGYWIoKTsKICAgIGNvbnN0IGdldFNldEZhYiA9IHsKICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gRmFiOyB9LAogICAgICAgIHNldDogZnVuY3Rpb24oKSB7fQogICAgfTsKICAgIGNvbnN0IGdldHNldGZhYiA9IHsKICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gZmFiOyB9LAogICAgICAgIHNldDogZnVuY3Rpb24oKSB7fQogICAgfTsKICAgIGlmICggd2luZG93Lmhhc093blByb3BlcnR5KCdGdWNrQWRCbG9jaycpICkgeyB3aW5kb3cuRnVja0FkQmxvY2sgPSBGYWI7IH0KICAgIGVsc2UgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnRnVja0FkQmxvY2snLCBnZXRTZXRGYWIpOyB9CiAgICBpZiAoIHdpbmRvdy5oYXNPd25Qcm9wZXJ0eSgnQmxvY2tBZEJsb2NrJykgKSB7IHdpbmRvdy5CbG9ja0FkQmxvY2sgPSBGYWI7IH0KICAgIGVsc2UgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnQmxvY2tBZEJsb2NrJywgZ2V0U2V0RmFiKTsgfQogICAgaWYgKCB3aW5kb3cuaGFzT3duUHJvcGVydHkoJ1NuaWZmQWRCbG9jaycpICkgeyB3aW5kb3cuU25pZmZBZEJsb2NrID0gRmFiOyB9CiAgICBlbHNlIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywgJ1NuaWZmQWRCbG9jaycsIGdldFNldEZhYik7IH0KICAgIGlmICggd2luZG93Lmhhc093blByb3BlcnR5KCdmdWNrQWRCbG9jaycpICkgeyB3aW5kb3cuZnVja0FkQmxvY2sgPSBmYWI7IH0KICAgIGVsc2UgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnZnVja0FkQmxvY2snLCBnZXRzZXRmYWIpOyB9CiAgICBpZiAoIHdpbmRvdy5oYXNPd25Qcm9wZXJ0eSgnYmxvY2tBZEJsb2NrJykgKSB7IHdpbmRvdy5ibG9ja0FkQmxvY2sgPSBmYWI7IH0KICAgIGVsc2UgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkod2luZG93LCAnYmxvY2tBZEJsb2NrJywgZ2V0c2V0ZmFiKTsgfQogICAgaWYgKCB3aW5kb3cuaGFzT3duUHJvcGVydHkoJ3NuaWZmQWRCbG9jaycpICkgeyB3aW5kb3cuc25pZmZBZEJsb2NrID0gZmFiOyB9CiAgICBlbHNlIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHdpbmRvdywgJ3NuaWZmQWRCbG9jaycsIGdldHNldGZhYik7IH0KfSkoKTsK"},{"name":"noop-0.1s.mp3","aliases":["noopmp3-0.1s","abp-resource:blank-mp3"],"kind":{"mime":"audio/mp3"},"content":"SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU2LjQwLjEwMQAAAAAAAAAAAAAA//tUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAGAAADAABgYGBgYGBgYGBgYGBgYGBggICAgICAgICAgICAgICAgICgoKCgoKCgoKCgoKCgoKCgwMDAwMDAwMDAwMDAwMDAwMDg4ODg4ODg4ODg4ODg4ODg4P////////////////////8AAAAATGF2YzU2LjYwAAAAAAAAAAAAAAAAJAAAAAAAAAAAAwDNZKlY//sUZAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZB4P8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZDwP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZFoP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZHgP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZJYP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"},{"name":"noop-0.5s.mp3","aliases":[],"kind":{"mime":"audio/mp3"},"content":"SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA//tUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAAWAAAJAAAgICAgKioqKio1NTU1QEBAQEBKSkpKVVVVVVVgYGBgampqamp1dXV1gICAgICKioqKlZWVlZWgoKCgoKqqqqq1tbW1tcDAwMDKysrKytXV1dXg4ODg4Orq6ur19fX19f////8AAAAATGF2YzU4LjU0AAAAAAAAAAAAAAAAJAMAAAAAAAAACQDI0dkC//sUZAAP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAETEFNRTMuMTAwVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZB4P8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZDwP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZFoP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZHgP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZJYP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZLQP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZNIP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sUZOGP8AAAaQAAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"},{"name":"noop-1s.mp4","aliases":["noopmp4-1s","abp-resource:blank-mp4"],"kind":{"mime":"video/mp4"},"content":"AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAAGF21kYXTeBAAAbGliZmFhYyAxLjI4AABCAJMgBDIARwAAArEGBf//rdxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxNDIgcjIgOTU2YzhkOCAtIEguMjY0L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMTQgLSBodHRwOi8vd3d3LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0wIHJlZj0zIGRlYmxvY2s9MTowOjAgYW5hbHlzZT0weDE6MHgxMTEgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTEgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LTIgdGhyZWFkcz02IGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCB2YnZfbWF4cmF0ZT03NjggdmJ2X2J1ZnNpemU9MzAwMCBjcmZfbWF4PTAuMCBuYWxfaHJkPW5vbmUgZmlsbGVyPTAgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAFZliIQL8mKAAKvMnJycnJycnJycnXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXiEASZACGQAjgCEASZACGQAjgAAAAAdBmjgX4GSAIQBJkAIZACOAAAAAB0GaVAX4GSAhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGagC/AySEASZACGQAjgAAAAAZBmqAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZrAL8DJIQBJkAIZACOAAAAABkGa4C/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmwAvwMkhAEmQAhkAI4AAAAAGQZsgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGbQC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm2AvwMkhAEmQAhkAI4AAAAAGQZuAL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGboC/AySEASZACGQAjgAAAAAZBm8AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZvgL8DJIQBJkAIZACOAAAAABkGaAC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmiAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpAL8DJIQBJkAIZACOAAAAABkGaYC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmoAvwMkhAEmQAhkAI4AAAAAGQZqgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGawC/AySEASZACGQAjgAAAAAZBmuAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZsAL8DJIQBJkAIZACOAAAAABkGbIC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm0AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZtgL8DJIQBJkAIZACOAAAAABkGbgCvAySEASZACGQAjgCEASZACGQAjgAAAAAZBm6AnwMkhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AAAAhubW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAABDcAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzB0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAA+kAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAALAAAACQAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAPpAAAAAAABAAAAAAKobWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAB1MAAAdU5VxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAACU21pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAhNzdGJsAAAAr3N0c2QAAAAAAAAAAQAAAJ9hdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAALAAkABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAALWF2Y0MBQsAN/+EAFWdCwA3ZAsTsBEAAAPpAADqYA8UKkgEABWjLg8sgAAAAHHV1aWRraEDyXyRPxbo5pRvPAyPzAAAAAAAAABhzdHRzAAAAAAAAAAEAAAAeAAAD6QAAABRzdHNzAAAAAAAAAAEAAAABAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAAIxzdHN6AAAAAAAAAAAAAAAeAAADDwAAAAsAAAALAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAAiHN0Y28AAAAAAAAAHgAAAEYAAANnAAADewAAA5gAAAO0AAADxwAAA+MAAAP2AAAEEgAABCUAAARBAAAEXQAABHAAAASMAAAEnwAABLsAAATOAAAE6gAABQYAAAUZAAAFNQAABUgAAAVkAAAFdwAABZMAAAWmAAAFwgAABd4AAAXxAAAGDQAABGh0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAABDcAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAQkAAADcAABAAAAAAPgbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAC7gAAAykBVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAADi21pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAADT3N0YmwAAABnc3RzZAAAAAAAAAABAAAAV21wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAAC7gAAAAAAAM2VzZHMAAAAAA4CAgCIAAgAEgICAFEAVBbjYAAu4AAAADcoFgICAAhGQBoCAgAECAAAAIHN0dHMAAAAAAAAAAgAAADIAAAQAAAAAAQAAAkAAAAFUc3RzYwAAAAAAAAAbAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAwAAAAEAAAABAAAABAAAAAIAAAABAAAABgAAAAEAAAABAAAABwAAAAIAAAABAAAACAAAAAEAAAABAAAACQAAAAIAAAABAAAACgAAAAEAAAABAAAACwAAAAIAAAABAAAADQAAAAEAAAABAAAADgAAAAIAAAABAAAADwAAAAEAAAABAAAAEAAAAAIAAAABAAAAEQAAAAEAAAABAAAAEgAAAAIAAAABAAAAFAAAAAEAAAABAAAAFQAAAAIAAAABAAAAFgAAAAEAAAABAAAAFwAAAAIAAAABAAAAGAAAAAEAAAABAAAAGQAAAAIAAAABAAAAGgAAAAEAAAABAAAAGwAAAAIAAAABAAAAHQAAAAEAAAABAAAAHgAAAAIAAAABAAAAHwAAAAQAAAABAAAA4HN0c3oAAAAAAAAAAAAAADMAAAAaAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAACMc3RjbwAAAAAAAAAfAAAALAAAA1UAAANyAAADhgAAA6IAAAO+AAAD0QAAA+0AAAQAAAAEHAAABC8AAARLAAAEZwAABHoAAASWAAAEqQAABMUAAATYAAAE9AAABRAAAAUjAAAFPwAABVIAAAVuAAAFgQAABZ0AAAWwAAAFzAAABegAAAX7AAAGFwAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTUuMzMuMTAw"},{"name":"noop.css","aliases":[],"kind":{"mime":"text/css"},"content":"LyogKi8K"},{"name":"noop.html","aliases":["noopframe"],"kind":{"mime":"text/html"},"content":"PCFET0NUWVBFIGh0bWw+CjxodG1sPgogICAgPGhlYWQ+PHRpdGxlPjwvdGl0bGU+PC9oZWFkPgogICAgPGJvZHk+PC9ib2R5Pgo8L2h0bWw+Cg=="},{"name":"noop.js","aliases":["noopjs","abp-resource:blank-js"],"kind":{"mime":"application/javascript"},"content":"KGZ1bmN0aW9uKCkgewogICAgJ3VzZSBzdHJpY3QnOwp9KSgpOwo="},{"name":"noop.json","aliases":["noopjson"],"kind":{"mime":"application/json"},"content":"e30="},{"name":"noop.txt","aliases":["nooptext"],"kind":{"mime":"text/plain"},"content":"Cg=="},{"name":"noop-vast2.xml","aliases":["noopvast-2.0"],"kind":{"mime":"text/xml"},"content":"PFZBU1QgdmVyc2lvbj0iMi4wIj48L1ZBU1Q+Cg=="},{"name":"noop-vast3.xml","aliases":["noopvast-3.0"],"kind":{"mime":"text/xml"},"content":"PFZBU1QgdmVyc2lvbj0iMy4wIj48L1ZBU1Q+Cg=="},{"name":"noop-vast4.xml","aliases":["noopvast-4.0"],"kind":{"mime":"text/xml"},"content":"PFZBU1QgdmVyc2lvbj0iNC4wIj48L1ZBU1Q+Cg=="},{"name":"noop-vmap1.xml","aliases":["noop-vmap1.0.xml","noopvmap-1.0"],"kind":{"mime":"text/xml"},"content":"PHZtYXA6Vk1BUCB4bWxuczp2bWFwPSJodHRwOi8vd3d3LmlhYi5uZXQvdmlkZW9zdWl0ZS92bWFwIiB2ZXJzaW9uPSIxLjAiPjwvdm1hcDpWTUFQPgo="},{"name":"outbrain-widget.js","aliases":["widgets.outbrain.com/outbrain.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBub29wZm4gPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICBjb25zdCBvYnIgPSB7fTsKICAgIGNvbnN0IG1ldGhvZHMgPSBbCiAgICAgICAgJ2NhbGxDbGljaycsCiAgICAgICAgJ2NhbGxMb2FkTW9yZScsCiAgICAgICAgJ2NhbGxSZWNzJywKICAgICAgICAnY2FsbFVzZXJaYXBwaW5nJywKICAgICAgICAnY2FsbFdoYXRJcycsCiAgICAgICAgJ2NhbmNlbFJlY29tbWVuZGF0aW9uJywKICAgICAgICAnY2FuY2VsUmVjcycsCiAgICAgICAgJ2Nsb3NlQ2FyZCcsCiAgICAgICAgJ2Nsb3NlTW9kYWwnLAogICAgICAgICdjbG9zZVRieCcsCiAgICAgICAgJ2Vycm9ySW5qZWN0aW9uSGFuZGxlcicsCiAgICAgICAgJ2dldENvdW50T2ZSZWNzJywKICAgICAgICAnZ2V0U3RhdCcsCiAgICAgICAgJ2ltYWdlRXJyb3InLAogICAgICAgICdtYW51YWxWaWRlb0NsaWNrZWQnLAogICAgICAgICdvbk9kYlJldHVybicsCiAgICAgICAgJ29uVmlkZW9DbGljaycsCiAgICAgICAgJ3BhZ2VyTG9hZCcsCiAgICAgICAgJ3JlY0NsaWNrZWQnLAogICAgICAgICdyZWZyZXNoU3BlY2lmaWNXaWRnZXQnLAogICAgICAgICdyZW5kZXJTcGFXaWRnZXRzJywKICAgICAgICAncmVmcmVzaFdpZGdldCcsCiAgICAgICAgJ3JlbG9hZFdpZGdldCcsCiAgICAgICAgJ3Jlc2VhcmNoV2lkZ2V0JywKICAgICAgICAncmV0dXJuZWRFcnJvcicsCiAgICAgICAgJ3JldHVybmVkSHRtbERhdGEnLAogICAgICAgICdyZXR1cm5lZElyZERhdGEnLAogICAgICAgICdyZXR1cm5lZEpzb25EYXRhJywKICAgICAgICAnc2Nyb2xsTG9hZCcsCiAgICAgICAgJ3Nob3dEZXNjcmlwdGlvbicsCiAgICAgICAgJ3Nob3dSZWNJbklmcmFtZScsCiAgICAgICAgJ3VzZXJaYXBwaW5nTWVzc2FnZScsCiAgICAgICAgJ3phcHBpbmdGb3JtQWN0aW9uJwogICAgXTsKICAgIG9ici5leHRlcm4gPSB7CiAgICAgICAgdmlkZW86IHsKICAgICAgICAgICAgZ2V0VmlkZW9SZWNzOiBub29wZm4sCiAgICAgICAgICAgIHZpZGVvQ2xpY2tlZDogbm9vcGZuCiAgICAgICAgfQogICAgfTsKICAgIG1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihhKSB7CiAgICAgICAgb2JyLmV4dGVyblthXSA9IG5vb3BmbjsKICAgIH0pOwogICAgd2luZG93Lk9CUiA9IHdpbmRvdy5PQlIgfHwgb2JyOwp9KSgpOwo="},{"name":"popads.js","aliases":["popads.net.js","prevent-popads-net.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBjb25zdCBtYWdpYyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoRGF0ZS5ub3coKSAlIDI2ICsgOTcpICsKICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOTgyNDUxNjUzICsgOTgyNDUxNjUzKS50b1N0cmluZygzNik7CiAgICBjb25zdCBvZSA9IHdpbmRvdy5vbmVycm9yOwogICAgd2luZG93Lm9uZXJyb3IgPSBmdW5jdGlvbihtc2csIHNyYywgbGluZSwgY29sLCBlcnJvcikgewogICAgICAgIGlmICggdHlwZW9mIG1zZyA9PT0gJ3N0cmluZycgJiYgbXNnLmluZGV4T2YobWFnaWMpICE9PSAtMSApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICBpZiAoIG9lIGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgIHJldHVybiBvZShtc2csIHNyYywgbGluZSwgY29sLCBlcnJvcik7CiAgICAgICAgfQogICAgfS5iaW5kKCk7CiAgICBjb25zdCB0aHJvd01hZ2ljID0gZnVuY3Rpb24oKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihtYWdpYyk7IH07CiAgICBkZWxldGUgd2luZG93LlBvcEFkczsKICAgIGRlbGV0ZSB3aW5kb3cucG9wbnM7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh3aW5kb3csIHsKICAgICAgICBQb3BBZHM6IHsgc2V0OiB0aHJvd01hZ2ljIH0sCiAgICAgICAgcG9wbnM6IHsgc2V0OiB0aHJvd01hZ2ljIH0KICAgIH0pOwp9KSgpOwo="},{"name":"popads-dummy.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICBkZWxldGUgd2luZG93LlBvcEFkczsKICAgIGRlbGV0ZSB3aW5kb3cucG9wbnM7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh3aW5kb3csIHsKICAgICAgICBQb3BBZHM6IHsgdmFsdWU6IHt9IH0sCiAgICAgICAgcG9wbnM6IHsgdmFsdWU6IHt9IH0KICAgIH0pOwp9KSgpOwo="},{"name":"prebid-ads.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAyMi1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICB3aW5kb3cuY2FuUnVuQWRzID0gdHJ1ZTsKICAgIHdpbmRvdy5pc0FkQmxvY2tBY3RpdmUgPSBmYWxzZTsKfSkoKTsK"},{"name":"scorecardresearch_beacon.js","aliases":["scorecardresearch.com/beacon.js"],"kind":{"mime":"application/javascript"},"content":"LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiAgICB1QmxvY2sgT3JpZ2luIC0gYSBicm93c2VyIGV4dGVuc2lvbiB0byBibG9jayByZXF1ZXN0cy4KICAgIENvcHlyaWdodCAoQykgMjAxOS1wcmVzZW50IFJheW1vbmQgSGlsbAoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSB7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL30uCgogICAgSG9tZTogaHR0cHM6Ly9naXRodWIuY29tL2dvcmhpbGwvdUJsb2NrCiovCgooZnVuY3Rpb24oKSB7CiAgICAndXNlIHN0cmljdCc7CiAgICB3aW5kb3cuQ09NU0NPUkUgPSB7CiAgICAgICAgcHVyZ2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB3aW5kb3cuX2NvbXNjb3JlID0gW107CiAgICAgICAgfSwKICAgICAgICBiZWFjb246IGZ1bmN0aW9uKCkgewogICAgICAgIH0KICAgIH07Cn0pKCk7Cg=="},{"name":"async-sugarcoat-04394153a7ce417b88e3fe1790a4e6a269bfebe5.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"e2NvbnN0IGE9e307KGU9PnsidXNlIHN0cmljdCI7Y29uc3QgdD1TeW1ib2woImRlZmVycmVkSGFuZGxlIiksbj1TeW1ib2woIm9ubG9hZHN0YXJ0IiksaT1TeW1ib2woIm9ucHJvZ3Jlc3MiKSxyPVN5bWJvbCgib25hYm9ydCIpLGE9U3ltYm9sKCJvbmVycm9yIiksbz1TeW1ib2woIm9ubG9hZCIpLHM9U3ltYm9sKCJvbnRpbWVvdXQiKSxnPVN5bWJvbCgib25sb2FkZW5kIiksbD1TeW1ib2woIm9ucmVhZHlzdGF0ZWNoYW5nZSIpLGQ9U3ltYm9sKCJyZWFkeVN0YXRlIiksdT1TeW1ib2woInRpbWVvdXQiKSxjPVN5bWJvbCgid2l0aENyZWRlbnRpYWxzIikscD1TeW1ib2woInVwbG9hZCIpLGg9U3ltYm9sKCJyZXNwb25zZVR5cGUiKSx2PShlLG4pPT57dmFyIHQ9bi5kZXNjcmlwdGlvbi5zdWJzdHJpbmcoMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITEsdmFsdWU6bnVsbCx3cml0YWJsZTohMH0pLGUuYWRkRXZlbnRMaXN0ZW5lcih0LGZ1bmN0aW9uKGUpe2NvbnN0IHQ9dGhpc1tuXTt0JiZ0LmNhbGwodGhpcyxlKX0pfSxrPShlLHQpPT57ZVtkXT10LGUuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoInJlYWR5c3RhdGVjaGFuZ2UiKSl9O2xldCBNPSEwO2NsYXNzIG0gZXh0ZW5kcyBFdmVudFRhcmdldHtjb25zdHJ1Y3Rvcigpe2lmKHN1cGVyKCksISh0aGlzIGluc3RhbmNlb2YgZnx8dGhpcyBpbnN0YW5jZW9mIHkpKXRocm93IG5ldyBUeXBlRXJyb3IoIklsbGVnYWwgY29uc3RydWN0b3IiKTt2KHRoaXMsbiksdih0aGlzLGkpLHYodGhpcyxyKSx2KHRoaXMsYSksdih0aGlzLG8pLHYodGhpcyxzKSx2KHRoaXMsZyl9Z2V0IG9ubG9hZHN0YXJ0KCl7cmV0dXJuIHRoaXNbbl19c2V0IG9ubG9hZHN0YXJ0KGUpe3RoaXNbbl09ZX1nZXQgb25wcm9ncmVzcygpe3JldHVybiB0aGlzW2ldfXNldCBvbnByb2dyZXNzKGUpe3RoaXNbaV09ZX1nZXQgb25hYm9ydCgpe3JldHVybiB0aGlzW3JdfXNldCBvbmFib3J0KGUpe3RoaXNbcl09ZX1nZXQgb25lcnJvcigpe3JldHVybiB0aGlzW2FdfXNldCBvbmVycm9yKGUpe3RoaXNbYV09ZX1nZXQgb250aW1lb3V0KCl7cmV0dXJuIHRoaXNbc119c2V0IG9udGltZW91dChlKXt0aGlzW3NdPWV9Z2V0IG9ubG9hZGVuZCgpe3JldHVybiB0aGlzW2ddfXNldCBvbmxvYWRlbmQoZSl7dGhpc1tnXT1lfX1lLlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ9e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOm0sd3JpdGFibGU6ITB9O2NsYXNzIHkgZXh0ZW5kcyBte2NvbnN0cnVjdG9yKCl7aWYoTSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbGxlZ2FsIGNvbnN0cnVjdG9yIik7c3VwZXIoKX19ZS5YTUxIdHRwUmVxdWVzdFVwbG9hZD17Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6eSx3cml0YWJsZTohMH07Y2xhc3MgZiBleHRlbmRzIG17Y29uc3RydWN0b3IoKXtzdXBlcigpLE09ITE7dmFyIGU9bmV3IHk7TT0hMCxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyx0LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMSx2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSksdih0aGlzLGwpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGQse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiExLHZhbHVlOjAsd3JpdGFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyx1LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMSx2YWx1ZTowLHdyaXRhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsYyx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITEsdmFsdWU6ITEsd3JpdGFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxwLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMSx2YWx1ZTplLHdyaXRhYmxlOiExfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsaCx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITEsdmFsdWU6IiIsd3JpdGFibGU6ITB9KX1nZXQgb25yZWFkeXN0YXRlY2hhbmdlKCl7cmV0dXJuIHRoaXNbbF19c2V0IG9ucmVhZHlzdGF0ZWNoYW5nZShlKXt0aGlzW2xdPWV9Z2V0IHJlYWR5U3RhdGUoKXtyZXR1cm4gdGhpc1tkXX1vcGVuKGUsdCl7c3dpdGNoKHRoaXNbZF0pe2Nhc2UgMDpjYXNlIDQ6ayh0aGlzLDEpfX1zZXRSZXF1ZXN0SGVhZGVyKGUsdCl7fXNldFRydXN0VG9rZW4oZSl7fWdldCB0aW1lb3V0KCl7cmV0dXJuIHRoaXNbdV19c2V0IHRpbWVvdXQoZSl7dGhpc1t1XT1lfWdldCB3aXRoQ3JlZGVudGlhbHMoKXtyZXR1cm4gdGhpc1tjXX1zZXQgd2l0aENyZWRlbnRpYWxzKGUpe3N3aXRjaCh0aGlzW2RdKXtjYXNlIDA6Y2FzZSAxOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IERPTUV4Y2VwdGlvbigiRmFpbGVkIHRvIHNldCB0aGUgJ3dpdGhDcmVkZW50aWFscycgcHJvcGVydHkgb24gJ1hNTEh0dHBSZXF1ZXN0JzogVGhlIHZhbHVlIG1heSBvbmx5IGJlIHNldCBpZiB0aGUgb2JqZWN0J3Mgc3RhdGUgaXMgVU5TRU5UIG9yIE9QRU5FRC4iKX10aGlzW2NdPSEhZX1nZXQgdXBsb2FkKCl7cmV0dXJuIHRoaXNbcF19c2VuZCgpe2lmKDEhPT10aGlzW2RdfHxudWxsIT09dGhpc1t0XSl0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCJGYWlsZWQgdG8gZXhlY3V0ZSAnc2VuZCcgb24gJ1hNTEh0dHBSZXF1ZXN0JzogVGhlIG9iamVjdCdzIHN0YXRlIG11c3QgYmUgT1BFTkVELiIpO3RoaXNbdF09c2V0VGltZW91dCgoKT0+e3RoaXNbdF09bnVsbCxrKHRoaXMsNCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBQcm9ncmVzc0V2ZW50KCJlcnJvciIpKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFByb2dyZXNzRXZlbnQoImxvYWRlbmQiKSl9LDApfWFib3J0KCl7MT09PXRoaXNbZF0mJm51bGwhPT10aGlzW3RdJiYoY2xlYXJUaW1lb3V0KHRoaXNbdF0pLHRoaXNbdF09bnVsbCxrKHRoaXMsMCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBQcm9ncmVzc0V2ZW50KCJhYm9ydCIpKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFByb2dyZXNzRXZlbnQoImxvYWRlbmQiKSkpfWdldCByZXNwb25zZVVSTCgpe3JldHVybiIifWdldCBzdGF0dXMoKXtyZXR1cm4gMH1nZXQgc3RhdHVzVGV4dCgpe3JldHVybiIifWdldFJlc3BvbnNlSGVhZGVyKGUpe3JldHVybiBudWxsfW92ZXJyaWRlTWltZVR5cGUoZSl7fWdldCByZXNwb25zZVR5cGUoKXtyZXR1cm4gdGhpc1toXX1zZXQgcmVzcG9uc2VUeXBlKGUpe2lmKDQ9PT10aGlzW2RdKXRocm93IG5ldyBET01FeGNlcHRpb24oIkZhaWxlZCB0byBzZXQgdGhlICdyZXNwb25zZVR5cGUnIHByb3BlcnR5IG9uICdYTUxIdHRwUmVxdWVzdCc6IFRoZSByZXNwb25zZSB0eXBlIGNhbm5vdCBiZSBzZXQgaWYgdGhlIG9iamVjdCdzIHN0YXRlIGlzIExPQURJTkcgb3IgRE9ORS4iKTtzd2l0Y2goZSl7Y2FzZSIiOmNhc2UiYXJyYXlidWZmZXIiOmNhc2UiYmxvYiI6Y2FzZSJkb2N1bWVudCI6Y2FzZSJqc29uIjpjYXNlInRleHQiOnRoaXNbaF09ZX19Z2V0IHJlc3BvbnNlKCl7dmFyIGU9dGhpc1toXTtyZXR1cm4iIj09PWV8fCJ0ZXh0Ij09PWU/IiI6bnVsbH1nZXQgcmVzcG9uc2VUZXh0KCl7dmFyIGU9dGhpc1toXTtpZigiIj09PWV8fCJ0ZXh0Ij09PWUpcmV0dXJuIiI7dGhyb3cgbmV3IERPTUV4Y2VwdGlvbigiRmFpbGVkIHRvIHJlYWQgdGhlICdyZXNwb25zZVRleHQnIHByb3BlcnR5IGZyb20gJ1hNTEh0dHBSZXF1ZXN0JzogVGhlIHZhbHVlIGlzIG9ubHkgYWNjZXNzaWJsZSBpZiB0aGUgb2JqZWN0J3MgJ3Jlc3BvbnNlVHlwZScgaXMgJycgb3IgJ3RleHQnICh3YXMgJ2FycmF5YnVmZmVyJykuIil9Z2V0IHJlc3BvbnNlWE1MKCl7cmV0dXJuIG51bGx9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShmLCJVTlNFTlQiLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCx2YWx1ZTowfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIk9QRU5FRCIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOjF9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwiSEVBREVSU19SRUNFSVZFRCIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOjJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwiTE9BRElORyIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOjN9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZiwiRE9ORSIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOjR9KSxlLlhNTEh0dHBSZXF1ZXN0PXtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTpmLHdyaXRhYmxlOiEwfX0pKGEpO2NvbnN0IGI9e307KGU9PnsidXNlIHN0cmljdCI7bGV0IHQ9ITE7Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe2lmKHQpdGhyb3cgbmV3IFR5cGVFcnJvcigiSWxsZWdhbCBjb25zdHJ1Y3RvciIpfWdldCBsZW5ndGgoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcykubGVuZ3RofWtleShlKXt2YXIgdD1PYmplY3Qua2V5cyh0aGlzKTtyZXR1cm4gZTwwfHxlPj10Lmxlbmd0aD9udWxsOnRbZV19Z2V0SXRlbShlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMsZSk/dGhpc1tlXTpudWxsfXNldEl0ZW0oZSx0KXt0aGlzW2VdPVN0cmluZyh0KX1yZW1vdmVJdGVtKGUpe2RlbGV0ZSB0aGlzW2VdfWNsZWFyKCl7Zm9yKGNvbnN0IGUgb2YgT2JqZWN0LmtleXModGhpcykpZGVsZXRlIHRoaXNbZV19fWUuU3RvcmFnZT17Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6bix3cml0YWJsZTohMH07Y29uc3QgaT1uZXcgbjtlLmxvY2FsU3RvcmFnZT17Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0KCl7cmV0dXJuIGl9fTtjb25zdCByPW5ldyBuO2Uuc2Vzc2lvblN0b3JhZ2U9e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLGdldCgpe3JldHVybiByfX0sdD0hMH0pKGIpLE1hcmtldGluZy5iaW5kRGVwZW5kZW5jeUltbWVkaWF0ZShmdW5jdGlvbigpe3dpbmRvdy5NYXJrZXRpbmcsTWFya2V0aW5nLmVuc2lnaHRlbk9wdGlvbnM7dHJ5e01hcmtldGluZy5VRE8ucGVyZlRpbWluZ1N0YXJ0KCJydWxlSWQtIit0aGlzLmlkKyItZGVwbG95bWVudElkLSIrdGhpcy5kZXBsb3ltZW50SWQpLCJ0cnVlIj09ZGVsbF9tYXJrZXRpbmdfdXRpbC5nZXRQYXJhbWV0ZXJCeU5hbWUoIm1kZWJ1ZyIsbG9jYXRpb24uc2VhcmNoKSYmKGRlbGxfbWFya2V0aW5nX3V0aWwuZ2V0RHBpZD1mdW5jdGlvbigpe3JldHVybihuZXcgRGF0ZSkuZ2V0VGltZSgpfSxNYXJrZXRpbmcuZ0V2ZW50KCJEQy05NjMyNjQ1L3NhbGVzMC9jc2JfdGVzdCt0cmFuc2FjdGlvbnMiLCJwdXJjaGFzZSIpLGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImlmcmFtZSIpLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5zcmMuaW5jbHVkZXMoInR5cGU9c2FsZXMiKSYmZS5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KE1hcmtldGluZyksIioiKX0pKSxNYXJrZXRpbmcuVURPLnBlcmZUaW1pbmdFbmQoInJ1bGVJZC0iK3RoaXMuaWQrIi1kZXBsb3ltZW50SWQtIit0aGlzLmRlcGxveW1lbnRJZCl9Y2F0Y2goZSl7ZGVsbF9tYXJrZXRpbmdfdXRpbC5kZWJ1ZyhlKX19LDM2MDAzMTEsWzM2MTc2ODJdLDYzNjE0MixbNjE5NDA0XSksTWFya2V0aW5nLmJpbmREZXBlbmRlbmN5RE9NUGFyc2VkKGZ1bmN0aW9uKCl7dmFyIG4sZSxpLHQscjt3aW5kb3cuTWFya2V0aW5nLE1hcmtldGluZy5lbnNpZ2h0ZW5PcHRpb25zO3RyeXtNYXJrZXRpbmcuVURPLnBlcmZUaW1pbmdTdGFydCgicnVsZUlkLSIrdGhpcy5pZCsiLWRlcGxveW1lbnRJZC0iK3RoaXMuZGVwbG95bWVudElkKSxuPXdpbmRvdyxlPWRvY3VtZW50LG5baT0idWV0cSJdPW5baV18fFtdLHQ9ZnVuY3Rpb24oKXt2YXIgZT17fS5jb25zdHJ1Y3Rvci5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iod2luZG93LCJYTUxIdHRwUmVxdWVzdCIpLHQ9e30uY29uc3RydWN0b3IuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHdpbmRvdywibG9jYWxTdG9yYWdlIik7dHJ5e3JldHVybiBlJiZ7fS5jb25zdHJ1Y3Rvci5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csIlhNTEh0dHBSZXF1ZXN0IixhLlhNTEh0dHBSZXF1ZXN0KSx0JiZ7fS5jb25zdHJ1Y3Rvci5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csImxvY2FsU3RvcmFnZSIsYi5sb2NhbFN0b3JhZ2UpLGZ1bmN0aW9uKCl7dmFyIGU9e3RpOiI1MTAyMjYxIn07ZS5xPW5baV0sbltpXT1uZXcgVUVUKGUpLG5baV0ucHVzaCgicGFnZUxvYWQiKX0uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7ZSYme30uY29uc3RydWN0b3IuZGVmaW5lUHJvcGVydHkod2luZG93LCJYTUxIdHRwUmVxdWVzdCIsZSksdCYme30uY29uc3RydWN0b3IuZGVmaW5lUHJvcGVydHkod2luZG93LCJsb2NhbFN0b3JhZ2UiLHQpfX0sKHI9ZS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSkuc3JjPSIvL2JhdC5iaW5nLmNvbS9iYXQuanMiLHIuYXN5bmM9MSxyLm9ubG9hZD1yLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMucmVhZHlTdGF0ZTtlJiYibG9hZGVkIiE9PWUmJiJjb21wbGV0ZSIhPT1lfHwodCgpLHIub25sb2FkPXIub25yZWFkeXN0YXRlY2hhbmdlPW51bGwpfSwoZT1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXSkucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocixlKSxNYXJrZXRpbmcuVURPLnBlcmZUaW1pbmdFbmQoInJ1bGVJZC0iK3RoaXMuaWQrIi1kZXBsb3ltZW50SWQtIit0aGlzLmRlcGxveW1lbnRJZCl9Y2F0Y2goZSl7ZGVsbF9tYXJrZXRpbmdfdXRpbC5kZWJ1ZyhlKX19LDM2MDUyNDIsWzM2MDYzMjldLDY5NTg3NCxbNjEwMzIzXSksTWFya2V0aW5nLmJpbmREZXBlbmRlbmN5RE9NUGFyc2VkKGZ1bmN0aW9uKCl7dmFyIGU7d2luZG93Lk1hcmtldGluZyxNYXJrZXRpbmcuZW5zaWdodGVuT3B0aW9uczt0cnl7TWFya2V0aW5nLlVETy5wZXJmVGltaW5nU3RhcnQoInJ1bGVJZC0iK3RoaXMuaWQrIi1kZXBsb3ltZW50SWQtIit0aGlzLmRlcGxveW1lbnRJZCksTWFya2V0aW5nLlVETy5wcmlvcmNvbnNlbnQmJigidXMiPT09KGU9TWFya2V0aW5nLnNjRGF0YU9iai5jb3VudHJ5KSYmTWFya2V0aW5nLmluc2VydFNjcmlwdCgiLy92dC5teXZpc3VhbGlxLm5ldC8yL1R4VVFOSFNLdkdXSWlNajFPaDN0ZnclM0QlM0QvdnQtMjg4LmpzIiksImNhIj09PWUmJk1hcmtldGluZy5pbnNlcnRTY3JpcHQoIi8vdnQubXl2aXN1YWxpcS5uZXQvMi9UeFVRTkhTS3ZHV0lpTWoxT2gzdGZ3JTNEJTNEL3Z0LTI4OS5qcyIpLCJiciI9PT1lJiZNYXJrZXRpbmcuaW5zZXJ0U2NyaXB0KCIvL3Z0Lm15dmlzdWFsaXEubmV0LzIvd1FRdFRpaXpsNFNpeHJoSVR5VHFiZyUzRCUzRC92dC0yODYuanMiKSwidWsiPT09ZSYmTWFya2V0aW5nLmluc2VydFNjcmlwdCgiLy92dC5teXZpc3VhbGlxLm5ldC8yL2FtaTdlV0Q3TWE5cWt1OUhERzIzMnclM0QlM0QvdnQtMjEzLmpzIiksImpwIj09PWUmJk1hcmtldGluZy5pbnNlcnRTY3JpcHQoIi8vdnQubXl2aXN1YWxpcS5uZXQvMi82JTJCeFQlMkJPM3oxemgxNHl1bEpCRE42ZyUzRCUzRC92dC0yODcuanMiKSwiYXUiPT09ZSYmTWFya2V0aW5nLmluc2VydFNjcmlwdCgiLy92dC5teXZpc3VhbGlxLm5ldC8yL2lwZWV5SGh0NG5wUUVpemlDV2FZenclM0QlM0QvdnQtMjk5LmpzIiksIm56Ij09PWUmJk1hcmtldGluZy5pbnNlcnRTY3JpcHQoIi8vdnQubXl2aXN1YWxpcS5uZXQvMi9pcGVleUhodDRucFFFaXppQ1dhWXp3JTNEJTNEL3Z0LTMwMS5qcyIpLCJpbiI9PT1lJiZNYXJrZXRpbmcuaW5zZXJ0U2NyaXB0KCIvL3Z0Lm15dmlzdWFsaXEubmV0LzIvdUJGJTJCbmRKVDduMHI5V3lzTkkxVnd3JTNEJTNEL3Z0LTI5OC5qcyIpLCJmciI9PT1lJiZNYXJrZXRpbmcuaW5zZXJ0U2NyaXB0KCIvL3Z0Lm15dmlzdWFsaXEubmV0LzIvR1hPZE4lMkJXdWdZM04zbjRhNUxBa05RJTNEJTNEL3Z0LTMwMC5qcyIpLCJkZSI9PT1lJiZNYXJrZXRpbmcuaW5zZXJ0U2NyaXB0KCIvL3Z0Lm15dmlzdWFsaXEubmV0LzIvdjlCSk9HY2dsNHdmam43cFhCaHVuQSUzRCUzRC92dC0zMDIuanMiKSksTWFya2V0aW5nLlVETy5wZXJmVGltaW5nRW5kKCJydWxlSWQtIit0aGlzLmlkKyItZGVwbG95bWVudElkLSIrdGhpcy5kZXBsb3ltZW50SWQpfWNhdGNoKGUpe2RlbGxfbWFya2V0aW5nX3V0aWwuZGVidWcoZSl9fSwzNTkzMzY1LFszNTA2OTI0LDM2MDYzMjldLDYyMTkxOSxbNjEwMzEwLDYxMDMyM10pLE1hcmtldGluZy5iaW5kRE9NUGFyc2VkKGZ1bmN0aW9uKCl7d2luZG93Lk1hcmtldGluZyxNYXJrZXRpbmcuZW5zaWdodGVuT3B0aW9uczt0cnl7TWFya2V0aW5nLlVETy5wZXJmVGltaW5nU3RhcnQoInJ1bGVJZC0iK3RoaXMuaWQrIi1kZXBsb3ltZW50SWQtIit0aGlzLmRlcGxveW1lbnRJZCksTWFya2V0aW5nLlVETy5wcmlvcmNvbnNlbnQmJk1hcmtldGluZy5pbWFnZVJlcXVlc3QoImh0dHBzOi8vcHguYWRzLmxpbmtlZGluLmNvbS9jb2xsZWN0Lz9waWQ9NzUxMyZmbXQ9Z2lmIiksTWFya2V0aW5nLlVETy5wZXJmVGltaW5nRW5kKCJydWxlSWQtIit0aGlzLmlkKyItZGVwbG95bWVudElkLSIrdGhpcy5kZXBsb3ltZW50SWQpfWNhdGNoKGUpe2RlbGxfbWFya2V0aW5nX3V0aWwuZGVidWcoZSl9fSwzNTkzMjg3LDYxOTA4OSksTWFya2V0aW5nLmJpbmREZXBlbmRlbmN5SW1tZWRpYXRlKGZ1bmN0aW9uKCl7dmFyIGkscixlO3dpbmRvdy5NYXJrZXRpbmcsTWFya2V0aW5nLmVuc2lnaHRlbk9wdGlvbnM7TWFya2V0aW5nLlVETy5mbF9sb2FkZWQ9ITEsTWFya2V0aW5nLlVETy5wcmlvcmNvbnNlbnQmJihNYXJrZXRpbmcubG9hZFNjcmlwdENhbGxiYWNrKCJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPURDLTk2MzI2NDUiLGZ1bmN0aW9uKCl7ZGVsbF9tYXJrZXRpbmdfdXRpbC5jdXN0b21fbWFya2V0aW5nX2V2ZW50KCJmbF9sb2FkZWQiKSxNYXJrZXRpbmcuVURPLmZsX2xvYWRlZD0hMH0pLHdpbmRvdy5kYXRhTGF5ZXI9d2luZG93LmRhdGFMYXllcnx8W10sd2luZG93Lmd0YWc9ZnVuY3Rpb24oKXtkYXRhTGF5ZXIucHVzaChhcmd1bWVudHMpfSxndGFnKCJqcyIsbmV3IERhdGUpLGd0YWcoImNvbmZpZyIsIkRDLTk2MzI2NDUiKSxndGFnKCJjb25maWciLCJEQy05NjMyOTIxIiksZ3RhZygiY29uZmlnIiwiREMtOTYzMjY0OCIpLGk9ZnVuY3Rpb24oKXtyZXR1cm57YWxsb3dfY3VzdG9tX3NjcmlwdHM6ITAsdTE6TWFya2V0aW5nLlVETy5sYW5ndWFnZSx1MTA6TWFya2V0aW5nLlVETy5jc2VnLHUxMTpNYXJrZXRpbmcuVURPLmRlYWxzLHUxMjpNYXJrZXRpbmcuVURPLmRldmljZSx1MTM6TWFya2V0aW5nLlVETy5kaXNjb3VudCx1MTQ6TWFya2V0aW5nLlVETy5mYW1pbHksdTE1Ok1hcmtldGluZy5VRE8ub2dpZCx1MTY6TWFya2V0aW5nLlVETy5vcmRlcmNvZGUsdTE3Ok1hcmtldGluZy5VRE8ucGxhdGZvcm0sdTE4Ok1hcmtldGluZy5VRE8ucHJvZGNhdCx1MTk6TWFya2V0aW5nLlVETy5wcm9kdWN0LHUyOk1hcmtldGluZy5VRE8uc2VnbWVudCx1MjA6TWFya2V0aW5nLlVETy5wcm9tb2lkLHUyMTpNYXJrZXRpbmcuVURPLnR5cGUsdTIyOmRlbGxfbWFya2V0aW5nX3V0aWwuZ2V0UGFyYW1ldGVyQnlOYW1lKCJkZ2MiLGxvY2F0aW9uLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSksdTIzOk1hcmtldGluZy5VRE8uZ2FjZCx1MjQ6ZGVsbF9tYXJrZXRpbmdfdXRpbC5nZXRQYXJhbWV0ZXJCeU5hbWUoImxpZCIsbG9jYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSx1MjU6TWFya2V0aW5nLlVETy52ZW4xLHUyNjpNYXJrZXRpbmcuVURPLnZlbjIsdTI4OmRlbGxfbWFya2V0aW5nX3V0aWwuZ2V0UGFyYW1ldGVyQnlOYW1lKCJ0ZmNpZCIsbG9jYXRpb24udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpKSx1Mjk6TWFya2V0aW5nLlVETy5yZXZlbnVlLHUzOk1hcmtldGluZy5VRE8uY3VycmVuY3ksdTMwOk1hcmtldGluZy5VRE8udXNkcmV2LHUzNTpNYXJrZXRpbmcuVURPLmRwaWQsdTM2Ok1hcmtldGluZy5VRE8ubGFuZCx1Mzc6TWFya2V0aW5nLlVETy5zZXJpYWxwcm9kbGlzdCx1Mzg6TWFya2V0aW5nLlVETy5jamV2ZW50LHU0Ok1hcmtldGluZy5VRE8uY291bnRyeSx1NTpNYXJrZXRpbmcuVURPLmFjY291bnRpZCx1NjpNYXJrZXRpbmcuVURPLmNhdGVnb3J5LHU3Ok1hcmtldGluZy5VRE8uY2F0ZWdvcnlwYXRoLHU4Ok1hcmtldGluZy5VRE8uY2lkLHU5Ok1hcmtldGluZy5VRE8uY291cG9ufX0sTWFya2V0aW5nLlVETy5yZWFkRGF0YSgpLChyPWkoKSkudTMxPSIiLChlPWRlbGxfbWFya2V0aW5nX3V0aWwuZ2V0Q29va2llKCJBTUNWXzRERDgwODYxNTE1Q0FCOTkwQTQ5MEQ0NSU0MEFkb2JlT3JnIikpJiYoci51MzE9ZS5zcGxpdCgiTUNNSUR8IilbMV0uc3BsaXQoInwiKVswXSksTWFya2V0aW5nLmdFdmVudD1NYXJrZXRpbmcuZ0V2ZW50fHxmdW5jdGlvbih0LG4pe3ZhciBlO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJmbF9sb2FkZWQiLGZ1bmN0aW9uKCl7dmFyIGU9cjsicHVyY2hhc2UiPT09biYmKGUudmFsdWU9TWFya2V0aW5nLlVETy51c2RyZXZ8fE1hcmtldGluZy5VRE8ucmV2ZW51ZSxlLnRyYW5zYWN0aW9uX2lkPWRlbGxfbWFya2V0aW5nX3V0aWwuZ2V0RHBpZCgpKSxlLnNlbmRfdG89dCxndGFnKCJldmVudCIsbixlKX0pLE1hcmtldGluZy5VRE8uZmxfbG9hZGVkJiYoZT1yPWkoKSwicHVyY2hhc2UiPT09biYmKGUudmFsdWU9TWFya2V0aW5nLlVETy51c2RyZXZ8fE1hcmtldGluZy5VRE8ucmV2ZW51ZSxlLnRyYW5zYWN0aW9uX2lkPWRlbGxfbWFya2V0aW5nX3V0aWwuZ2V0RHBpZCgpKSxlLnNlbmRfdG89dCxndGFnKCJldmVudCIsbixlKSl9KX0sMzYxNzY4MixbMzYwNjMyOV0sNjE5NDA0LFs2MTAzMjNdKSxNYXJrZXRpbmcuYmluZERlcGVuZGVuY3lJbW1lZGlhdGUoZnVuY3Rpb24oKXt3aW5kb3cuTWFya2V0aW5nLE1hcmtldGluZy5lbnNpZ2h0ZW5PcHRpb25zO01hcmtldGluZy5VRE8uZ19kb3dubG9hZD1mdW5jdGlvbih0LG4pe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJodmUiLGZ1bmN0aW9uKGUpe01hcmtldGluZy5VRE8uaHZlb3ZlcmxheT0hMSwiZG93bmxvYWQiPT09ZS5kZXRhaWwudHlwZSYmTWFya2V0aW5nLmdFdmVudCh0LG4pfSksTWFya2V0aW5nLlVETy5odmVvdmVybGF5JiZNYXJrZXRpbmcuZ0V2ZW50KHQsbil9LE1hcmtldGluZy5VRE8uZ19zaGFyZT1mdW5jdGlvbih0LG4pe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJodmUiLGZ1bmN0aW9uKGUpeyJzaGFyZSI9PT1lLmRldGFpbC50eXBlJiZNYXJrZXRpbmcuZ0V2ZW50KHQsbil9KX0sTWFya2V0aW5nLlVETy5nX21wdj1mdW5jdGlvbihlLHQpezM9PXNlc3Npb25TdG9yYWdlLmVuc3BhZ2Vjb3VudEZMVCYmTWFya2V0aW5nLmdFdmVudChlLHQpfSxNYXJrZXRpbmcuVURPLmdfYmNfc3RhcnQ9ZnVuY3Rpb24obixpKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHZpZGVvanMmJnZpZGVvanMucGxheWVycylmb3IodmFyIGUgaW4gdmlkZW9qcy5wbGF5ZXJzKXZpZGVvanMucGxheWVyc1tlXS5yZWFkeShmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5lbF8uaGFzQXR0cmlidXRlKCJtdXRlZCIpfHxlLm9uKCJzdGFydCIsZnVuY3Rpb24oKXtlLnZpZGVvX3N0YXJ0fHwoZS52aWRlb181MF9wZXJjZW50PSExLGUudmlkZW9fODBfcGVyY2VudD0hMSxNYXJrZXRpbmcuZ0V2ZW50KG4saSkpfSl9KTtlbHNlIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJodmUiLGZ1bmN0aW9uIGUodCl7ImJyaWdodGNvdmUiPT09dC5kZXRhaWwudHlwZSYmKE1hcmtldGluZy5VRE8uZ19iY19zdGFydChuLGkpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJodmUiLGUpKX0pfSxNYXJrZXRpbmcuVURPLmdfYmNfNTA9ZnVuY3Rpb24odCxuKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYnJpZ2h0Y292ZTUwIixmdW5jdGlvbihlKXtNYXJrZXRpbmcuZ0V2ZW50KHQsbil9KX0sTWFya2V0aW5nLlVETy5nX2JjXzgwPWZ1bmN0aW9uKHQsbil7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImJyaWdodGNvdmU4MCIsZnVuY3Rpb24oZSl7TWFya2V0aW5nLmdFdmVudCh0LG4pfSl9LE1hcmtldGluZy5VRE8uZ19iY19lbmQ9ZnVuY3Rpb24obixpKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHZpZGVvanMmJnZpZGVvanMucGxheWVycylmb3IodmFyIGUgaW4gdmlkZW9qcy5wbGF5ZXJzKXZpZGVvanMucGxheWVyc1tlXS5yZWFkeShmdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS5lbF8uaGFzQXR0cmlidXRlKCJtdXRlZCIpfHxlLm9uKCJlbmRlZCIsZnVuY3Rpb24oKXtNYXJrZXRpbmcuZ0V2ZW50KG4saSksZS52aWRlb19zdGFydD0hMX0pfSk7ZWxzZSB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiaHZlIixmdW5jdGlvbiBlKHQpeyJicmlnaHRjb3ZlIj09PXQuZGV0YWlsLnR5cGUmJihNYXJrZXRpbmcuVURPLmdfYmNfZW5kKG4saSksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImh2ZSIsZSkpfSl9LE1hcmtldGluZy5VRE8uZ19jb250YWN0dXM9ZnVuY3Rpb24odCxuKXt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiaHZlIixmdW5jdGlvbihlKXsiY29udGFjdHVzIj09PWUuZGV0YWlsLnR5cGUmJk1hcmtldGluZy5nRXZlbnQodCxuKX0pfSxNYXJrZXRpbmcuVURPLmdfY2hhdD1mdW5jdGlvbih0LG4pe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJodmUiLGZ1bmN0aW9uKGUpeyJjaGF0Ij09PWUuZGV0YWlsLnR5cGUmJk1hcmtldGluZy5nRXZlbnQodCxuKX0pfSxNYXJrZXRpbmcuVURPLmdfYWRkdG9jYXJ0PWZ1bmN0aW9uKGUsdCl7ImNvbnRlbnRzIiE9PWRlbGxfbWFya2V0aW5nX3V0aWwuZ2V0c2NNYXAoIndhY29udHJvbGxlciIpJiYiY2FydCIhPT1kZWxsX21hcmtldGluZ191dGlsLmdldHNjTWFwKCJ3b3JrZmxvd3N0ZXAiKXx8TWFya2V0aW5nLmdFdmVudChlLHQpfSxNYXJrZXRpbmcuVURPLmdfY2hlY2tvdXQ9ZnVuY3Rpb24oZSx0KXsiY29uZmlybWF0aW9uIj09PWRlbGxfbWFya2V0aW5nX3V0aWwuZ2V0c2NNYXAoIndhY29udHJvbGxlciIpJiZNYXJrZXRpbmcuZ0V2ZW50KGUsdCl9LE1hcmtldGluZy5VRE8uZ19wb2RjYXN0X2xpc3Rlbj1mdW5jdGlvbih0LG4pe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJodmUiLGZ1bmN0aW9uKGUpeyJwb2RjYXN0X2xpc3RlbiI9PT1lLmRldGFpbC50eXBlJiZNYXJrZXRpbmcuZ0V2ZW50KHQsbil9KX0sTWFya2V0aW5nLlVETy5nX3BvZGNhc3Rfc3Vic2NyaWJlPWZ1bmN0aW9uKHQsbil7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImh2ZSIsZnVuY3Rpb24oZSl7InBvZGNhc3Rfc3Vic2NyaWJlIj09PWUuZGV0YWlsLnR5cGUmJk1hcmtldGluZy5nRXZlbnQodCxuKX0pfSxNYXJrZXRpbmcuVURPLmdfcmZxX3N1Ym1pdD1mdW5jdGlvbih0LG4pe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJodmUiLGZ1bmN0aW9uKGUpeyJyZnFfc3VibWl0Ij09PWUuZGV0YWlsLnR5cGUmJk1hcmtldGluZy5nRXZlbnQodCxuKX0pfSxNYXJrZXRpbmcuVURPLmdfaW9uX3N1Ym1pdD1mdW5jdGlvbihlLHQpey9saXZlYmFsbC4qY29tcGxldGVkL2dpLnRlc3QoZGVsbF9tYXJrZXRpbmdfdXRpbC5nZXRzY01hcCgicGFnZW5hbWUiKSkmJk1hcmtldGluZy5nRXZlbnQoZSx0KX0sTWFya2V0aW5nLlVETy5nX2dhdGVkX3N1Ym1pdD1mdW5jdGlvbih0LG4pe3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJodmUiLGZ1bmN0aW9uKGUpeyJnYXRlZF9zdWJtaXQiPT09ZS5kZXRhaWwudHlwZSYmTWFya2V0aW5nLmdFdmVudCh0LG4pfSl9fSwzNDc1MTkzLFszNjE3NjgyXSw2MjA4MTgsWzYxOTQwNF0pfQo="},{"name":"async-sugarcoat-8a459c41783885dc83d30f5b7da2359091f4e607.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"e2NvbnN0IGE9e307KHQ9PnsidXNlIHN0cmljdCI7Y29uc3QgZT1TeW1ib2woImRlZmVycmVkSGFuZGxlIiksbj1TeW1ib2woIm9ubG9hZHN0YXJ0Iikscj1TeW1ib2woIm9ucHJvZ3Jlc3MiKSxhPVN5bWJvbCgib25hYm9ydCIpLG89U3ltYm9sKCJvbmVycm9yIiksaT1TeW1ib2woIm9ubG9hZCIpLHM9U3ltYm9sKCJvbnRpbWVvdXQiKSxjPVN5bWJvbCgib25sb2FkZW5kIiksdT1TeW1ib2woIm9ucmVhZHlzdGF0ZWNoYW5nZSIpLGw9U3ltYm9sKCJyZWFkeVN0YXRlIiksZz1TeW1ib2woInRpbWVvdXQiKSxoPVN5bWJvbCgid2l0aENyZWRlbnRpYWxzIiksZj1TeW1ib2woInVwbG9hZCIpLGQ9U3ltYm9sKCJyZXNwb25zZVR5cGUiKSxwPSh0LG4pPT57dmFyIGU9bi5kZXNjcmlwdGlvbi5zdWJzdHJpbmcoMik7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITEsdmFsdWU6bnVsbCx3cml0YWJsZTohMH0pLHQuYWRkRXZlbnRMaXN0ZW5lcihlLGZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpc1tuXTtlJiZlLmNhbGwodGhpcyx0KX0pfSx2PSh0LGUpPT57dFtsXT1lLHQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoInJlYWR5c3RhdGVjaGFuZ2UiKSl9O2xldCBtPSEwO2NsYXNzIGIgZXh0ZW5kcyBFdmVudFRhcmdldHtjb25zdHJ1Y3Rvcigpe2lmKHN1cGVyKCksISh0aGlzIGluc3RhbmNlb2YgeXx8dGhpcyBpbnN0YW5jZW9mIHcpKXRocm93IG5ldyBUeXBlRXJyb3IoIklsbGVnYWwgY29uc3RydWN0b3IiKTtwKHRoaXMsbikscCh0aGlzLHIpLHAodGhpcyxhKSxwKHRoaXMsbykscCh0aGlzLGkpLHAodGhpcyxzKSxwKHRoaXMsYyl9Z2V0IG9ubG9hZHN0YXJ0KCl7cmV0dXJuIHRoaXNbbl19c2V0IG9ubG9hZHN0YXJ0KHQpe3RoaXNbbl09dH1nZXQgb25wcm9ncmVzcygpe3JldHVybiB0aGlzW3JdfXNldCBvbnByb2dyZXNzKHQpe3RoaXNbcl09dH1nZXQgb25hYm9ydCgpe3JldHVybiB0aGlzW2FdfXNldCBvbmFib3J0KHQpe3RoaXNbYV09dH1nZXQgb25lcnJvcigpe3JldHVybiB0aGlzW29dfXNldCBvbmVycm9yKHQpe3RoaXNbb109dH1nZXQgb250aW1lb3V0KCl7cmV0dXJuIHRoaXNbc119c2V0IG9udGltZW91dCh0KXt0aGlzW3NdPXR9Z2V0IG9ubG9hZGVuZCgpe3JldHVybiB0aGlzW2NdfXNldCBvbmxvYWRlbmQodCl7dGhpc1tjXT10fX10LlhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXQ9e2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOmIsd3JpdGFibGU6ITB9O2NsYXNzIHcgZXh0ZW5kcyBie2NvbnN0cnVjdG9yKCl7aWYobSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbGxlZ2FsIGNvbnN0cnVjdG9yIik7c3VwZXIoKX19dC5YTUxIdHRwUmVxdWVzdFVwbG9hZD17Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6dyx3cml0YWJsZTohMH07Y2xhc3MgeSBleHRlbmRzIGJ7Y29uc3RydWN0b3IoKXtzdXBlcigpLG09ITE7dmFyIHQ9bmV3IHc7bT0hMCxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxlLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMSx2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSkscCh0aGlzLHUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGwse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiExLHZhbHVlOjAsd3JpdGFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxnLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMSx2YWx1ZTowLHdyaXRhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsaCx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITEsdmFsdWU6ITEsd3JpdGFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxmLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMSx2YWx1ZTp0LHdyaXRhYmxlOiExfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsZCx7Y29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITEsdmFsdWU6IiIsd3JpdGFibGU6ITB9KX1nZXQgb25yZWFkeXN0YXRlY2hhbmdlKCl7cmV0dXJuIHRoaXNbdV19c2V0IG9ucmVhZHlzdGF0ZWNoYW5nZSh0KXt0aGlzW3VdPXR9Z2V0IHJlYWR5U3RhdGUoKXtyZXR1cm4gdGhpc1tsXX1vcGVuKHQsZSl7c3dpdGNoKHRoaXNbbF0pe2Nhc2UgMDpjYXNlIDQ6dih0aGlzLDEpfX1zZXRSZXF1ZXN0SGVhZGVyKHQsZSl7fXNldFRydXN0VG9rZW4odCl7fWdldCB0aW1lb3V0KCl7cmV0dXJuIHRoaXNbZ119c2V0IHRpbWVvdXQodCl7dGhpc1tnXT10fWdldCB3aXRoQ3JlZGVudGlhbHMoKXtyZXR1cm4gdGhpc1toXX1zZXQgd2l0aENyZWRlbnRpYWxzKHQpe3N3aXRjaCh0aGlzW2xdKXtjYXNlIDA6Y2FzZSAxOmJyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IERPTUV4Y2VwdGlvbigiRmFpbGVkIHRvIHNldCB0aGUgJ3dpdGhDcmVkZW50aWFscycgcHJvcGVydHkgb24gJ1hNTEh0dHBSZXF1ZXN0JzogVGhlIHZhbHVlIG1heSBvbmx5IGJlIHNldCBpZiB0aGUgb2JqZWN0J3Mgc3RhdGUgaXMgVU5TRU5UIG9yIE9QRU5FRC4iKX10aGlzW2hdPSEhdH1nZXQgdXBsb2FkKCl7cmV0dXJuIHRoaXNbZl19c2VuZCgpe2lmKDEhPT10aGlzW2xdfHxudWxsIT09dGhpc1tlXSl0aHJvdyBuZXcgRE9NRXhjZXB0aW9uKCJGYWlsZWQgdG8gZXhlY3V0ZSAnc2VuZCcgb24gJ1hNTEh0dHBSZXF1ZXN0JzogVGhlIG9iamVjdCdzIHN0YXRlIG11c3QgYmUgT1BFTkVELiIpO3RoaXNbZV09c2V0VGltZW91dCgoKT0+e3RoaXNbZV09bnVsbCx2KHRoaXMsNCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBQcm9ncmVzc0V2ZW50KCJlcnJvciIpKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFByb2dyZXNzRXZlbnQoImxvYWRlbmQiKSl9LDApfWFib3J0KCl7MT09PXRoaXNbbF0mJm51bGwhPT10aGlzW2VdJiYoY2xlYXJUaW1lb3V0KHRoaXNbZV0pLHRoaXNbZV09bnVsbCx2KHRoaXMsMCksdGhpcy5kaXNwYXRjaEV2ZW50KG5ldyBQcm9ncmVzc0V2ZW50KCJhYm9ydCIpKSx0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFByb2dyZXNzRXZlbnQoImxvYWRlbmQiKSkpfWdldCByZXNwb25zZVVSTCgpe3JldHVybiIifWdldCBzdGF0dXMoKXtyZXR1cm4gMH1nZXQgc3RhdHVzVGV4dCgpe3JldHVybiIifWdldFJlc3BvbnNlSGVhZGVyKHQpe3JldHVybiBudWxsfW92ZXJyaWRlTWltZVR5cGUodCl7fWdldCByZXNwb25zZVR5cGUoKXtyZXR1cm4gdGhpc1tkXX1zZXQgcmVzcG9uc2VUeXBlKHQpe2lmKDQ9PT10aGlzW2xdKXRocm93IG5ldyBET01FeGNlcHRpb24oIkZhaWxlZCB0byBzZXQgdGhlICdyZXNwb25zZVR5cGUnIHByb3BlcnR5IG9uICdYTUxIdHRwUmVxdWVzdCc6IFRoZSByZXNwb25zZSB0eXBlIGNhbm5vdCBiZSBzZXQgaWYgdGhlIG9iamVjdCdzIHN0YXRlIGlzIExPQURJTkcgb3IgRE9ORS4iKTtzd2l0Y2godCl7Y2FzZSIiOmNhc2UiYXJyYXlidWZmZXIiOmNhc2UiYmxvYiI6Y2FzZSJkb2N1bWVudCI6Y2FzZSJqc29uIjpjYXNlInRleHQiOnRoaXNbZF09dH19Z2V0IHJlc3BvbnNlKCl7dmFyIHQ9dGhpc1tkXTtyZXR1cm4iIj09PXR8fCJ0ZXh0Ij09PXQ/IiI6bnVsbH1nZXQgcmVzcG9uc2VUZXh0KCl7dmFyIHQ9dGhpc1tkXTtpZigiIj09PXR8fCJ0ZXh0Ij09PXQpcmV0dXJuIiI7dGhyb3cgbmV3IERPTUV4Y2VwdGlvbigiRmFpbGVkIHRvIHJlYWQgdGhlICdyZXNwb25zZVRleHQnIHByb3BlcnR5IGZyb20gJ1hNTEh0dHBSZXF1ZXN0JzogVGhlIHZhbHVlIGlzIG9ubHkgYWNjZXNzaWJsZSBpZiB0aGUgb2JqZWN0J3MgJ3Jlc3BvbnNlVHlwZScgaXMgJycgb3IgJ3RleHQnICh3YXMgJ2FycmF5YnVmZmVyJykuIil9Z2V0IHJlc3BvbnNlWE1MKCl7cmV0dXJuIG51bGx9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh5LCJVTlNFTlQiLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCx2YWx1ZTowfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHksIk9QRU5FRCIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOjF9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoeSwiSEVBREVSU19SRUNFSVZFRCIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOjJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoeSwiTE9BRElORyIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOjN9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoeSwiRE9ORSIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOjR9KSx0LlhNTEh0dHBSZXF1ZXN0PXtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx2YWx1ZTp5LHdyaXRhYmxlOiEwfX0pKGEpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3Q9dC5zcGxpdCgiLiIpO3ZhciBuLHI9YTt0WzBdaW4gcnx8dm9pZCAwPT09ci5leGVjU2NyaXB0fHxyLmV4ZWNTY3JpcHQoInZhciAiK3RbMF0pO2Zvcig7dC5sZW5ndGgmJihuPXQuc2hpZnQoKSk7KXQubGVuZ3RofHx2b2lkIDA9PT1lP3I9cltuXSYmcltuXSE9PU9iamVjdC5wcm90b3R5cGVbbl0/cltuXTpyW25dPXt9OnJbbl09ZX1mdW5jdGlvbiBzKHQpe2Zvcih2YXIgZSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoZSkpcmV0dXJuIDF9ZnVuY3Rpb24gbyh0LGUpe3AuYWRkRXZlbnRMaXN0ZW5lcj9wLmFkZEV2ZW50TGlzdGVuZXIodCxlLCExKTpwLmF0dGFjaEV2ZW50JiZwLmF0dGFjaEV2ZW50KCJvbiIrdCxlKX1mdW5jdGlvbiBpKHQsZSxuKXt0PXQuc3BsaXQoIiYiKTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXS5zcGxpdCgiPSIpO2lmKGRlY29kZVVSSUNvbXBvbmVudChhWzBdKS5yZXBsYWNlKC9cKy9nLCIgIik9PT1lKXJldHVybiBlPWEuc2xpY2UoMSkuam9pbigiPSIpLG4/ZTpkZWNvZGVVUklDb21wb25lbnQoZSkucmVwbGFjZSgvXCsvZywiICIpfX12YXIgdSxsLGMsYT10aGlzfHxzZWxmLGc9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiYodFtuXT1lW25dKX0saD0vXig/Oig/Omh0dHBzP3xtYWlsdG98ZnRwKTp8W146Lz8jXSooPzpbLz8jXXwkKSkvaSxmPXdpbmRvdyxkPXdpbmRvdy5oaXN0b3J5LHA9ZG9jdW1lbnQsdj1uYXZpZ2F0b3IsZT17fSxtPWZ1bmN0aW9uKCl7ZS5UQUdHSU5HPWUuVEFHR0lOR3x8W10sZS5UQUdHSU5HWzFdPSEwfSxiPS86WzAtOV0rJC8sdz1mdW5jdGlvbih0LGUpe3JldHVybiJwcm90b2NvbCIhPT0oZT1lJiZTdHJpbmcoZSkudG9Mb3dlckNhc2UoKSkmJiJwb3J0IiE9PWV8fCh0LnByb3RvY29sPV8odC5wcm90b2NvbCl8fF8oZi5sb2NhdGlvbi5wcm90b2NvbCkpLCJwb3J0Ij09PWU/dC5wb3J0PVN0cmluZyhOdW1iZXIoKHQuaG9zdG5hbWU/dDpmLmxvY2F0aW9uKS5wb3J0KXx8KCJodHRwIj09dC5wcm90b2NvbD84MDoiaHR0cHMiPT10LnByb3RvY29sPzQ0MzoiIikpOiJob3N0Ij09PWUmJih0Lmhvc3RuYW1lPSh0Lmhvc3RuYW1lfHxmLmxvY2F0aW9uLmhvc3RuYW1lKS5yZXBsYWNlKGIsIiIpLnRvTG93ZXJDYXNlKCkpLHkodCxlLHZvaWQgMCx2b2lkIDAsdm9pZCAwKX0seT1mdW5jdGlvbih0LGUsbixyLGEpe3ZhciBvPV8odC5wcm90b2NvbCk7c3dpdGNoKGU9ZSYmU3RyaW5nKGUpLnRvTG93ZXJDYXNlKCkpe2Nhc2UidXJsX25vX2ZyYWdtZW50IjpyPSIiLHQ9cj10JiZ0LmhyZWY/KHI9dC5ocmVmLmluZGV4T2YoIiMiKSk8MD90LmhyZWY6dC5ocmVmLnN1YnN0cigwLHIpOnI7YnJlYWs7Y2FzZSJwcm90b2NvbCI6dD1vO2JyZWFrO2Nhc2UiaG9zdCI6dD10Lmhvc3RuYW1lLnJlcGxhY2UoYiwiIikudG9Mb3dlckNhc2UoKSxuJiYocj0vXnd3d1xkKlwuLy5leGVjKHQpKSYmclswXSYmKHQ9dC5zdWJzdHIoclswXS5sZW5ndGgpKTticmVhaztjYXNlInBvcnQiOnQ9U3RyaW5nKE51bWJlcih0LnBvcnQpfHwoImh0dHAiPT1vPzgwOiJodHRwcyI9PW8/NDQzOiIiKSk7YnJlYWs7Y2FzZSJwYXRoIjp0LnBhdGhuYW1lfHx0Lmhvc3RuYW1lfHxtKCksdD0odD0iLyI9PXQucGF0aG5hbWUuc3Vic3RyKDAsMSk/dC5wYXRobmFtZToiLyIrdC5wYXRobmFtZSkuc3BsaXQoIi8iKSwwPD0ocnx8W10pLmluZGV4T2YodFt0Lmxlbmd0aC0xXSkmJih0W3QubGVuZ3RoLTFdPSIiKSx0PXQuam9pbigiLyIpO2JyZWFrO2Nhc2UicXVlcnkiOnQ9dC5zZWFyY2gucmVwbGFjZSgiPyIsIiIpLGEmJih0PWkodCxhLHZvaWQgMCkpO2JyZWFrO2Nhc2UiZXh0ZW5zaW9uIjp0PSh0PTE8KHQ9dC5wYXRobmFtZS5zcGxpdCgiLiIpKS5sZW5ndGg/dFt0Lmxlbmd0aC0xXToiIikuc3BsaXQoIi8iKVswXTticmVhaztjYXNlImZyYWdtZW50Ijp0PXQuaGFzaC5yZXBsYWNlKCIjIiwiIik7YnJlYWs7ZGVmYXVsdDp0PXQmJnQuaHJlZn1yZXR1cm4gdH0sXz1mdW5jdGlvbih0KXtyZXR1cm4gdD90LnJlcGxhY2UoIjoiLCIiKS50b0xvd2VyQ2FzZSgpOiIifSxPPWZ1bmN0aW9uKHQpe3ZhciBlPXAuY3JlYXRlRWxlbWVudCgiYSIpO3QmJihlLmhyZWY9dCk7dmFyIG49ZS5wYXRobmFtZTtyZXR1cm4iLyIhPT1uWzBdJiYodHx8bSgpLG49Ii8iK24pLHQ9ZS5ob3N0bmFtZS5yZXBsYWNlKGIsIiIpLHtocmVmOmUuaHJlZixwcm90b2NvbDplLnByb3RvY29sLGhvc3Q6ZS5ob3N0LGhvc3RuYW1lOnQscGF0aG5hbWU6bixzZWFyY2g6ZS5zZWFyY2gsaGFzaDplLmhhc2gscG9ydDplLnBvcnR9fTtmdW5jdGlvbiBFKCl7Zm9yKHZhciB0PXUsZT17fSxuPTA7bjx0Lmxlbmd0aDsrK24pZVt0W25dXT1uO3JldHVybiBlfWZ1bmN0aW9uIFQoKXt2YXIgdD0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiO3JldHVybih0Kz0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiLnRvTG93ZXJDYXNlKCkrIjAxMjM0NTY3ODktXyIpKyIuIn1mdW5jdGlvbiB4KHQpe3U9dXx8VCgpLGw9bHx8RSgpO2Zvcih2YXIgZT1bXSxuPTA7bjx0Lmxlbmd0aDtuKz0zKXt2YXIgcj1uKzE8dC5sZW5ndGgsYT1uKzI8dC5sZW5ndGgsbz10LmNoYXJDb2RlQXQobiksaT1yP3QuY2hhckNvZGVBdChuKzEpOjAscz1hP3QuY2hhckNvZGVBdChuKzIpOjAsYz1vPj4yLG89KDMmbyk8PDR8aT4+NCxpPSgxNSZpKTw8MnxzPj42O3MmPTYzLGF8fChzPTY0LHJ8fChpPTY0KSksZS5wdXNoKHVbY10sdVtvXSx1W2ldLHVbc10pfXJldHVybiBlLmpvaW4oIiIpfWZ1bmN0aW9uIGsoKXtmdW5jdGlvbiB0KHQpe24odC50YXJnZXR8fHQuc3JjRWxlbWVudHx8e30pfXZhciBlLG49RixyPVgsYT1OKCk7YS5pbml0fHwobygibW91c2Vkb3duIix0KSxvKCJrZXl1cCIsdCksbygic3VibWl0IixmdW5jdGlvbih0KXtyKHQudGFyZ2V0fHx0LnNyY0VsZW1lbnR8fHt9KX0pLGU9SFRNTEZvcm1FbGVtZW50LnByb3RvdHlwZS5zdWJtaXQsSFRNTEZvcm1FbGVtZW50LnByb3RvdHlwZS5zdWJtaXQ9ZnVuY3Rpb24oKXtyKHRoaXMpLGUuY2FsbCh0aGlzKX0sYS5pbml0PSEwKX1mdW5jdGlvbiBTKHQsZSxuLHIsYSl7dD17Y2FsbGJhY2s6dCxkb21haW5zOmUsZnJhZ21lbnQ6Mj09PW4scGxhY2VtZW50Om4sZm9ybXM6cixzYW1lSG9zdDphfSxOKCkuZGVjb3JhdG9ycy5wdXNoKHQpfWZ1bmN0aW9uIEModCxlLG4pe2Zvcih2YXIgcj1OKCkuZGVjb3JhdG9ycyxhPXt9LG89MDtvPHIubGVuZ3RoOysrbyl7dmFyIGk9cltvXTtpZihzPSFufHxpLmZvcm1zKXQ6e3ZhciBzPWkuZG9tYWlucyxjPXQsdT0hIWkuc2FtZUhvc3Q7aWYocyYmKHV8fGMhPT1wLmxvY2F0aW9uLmhvc3RuYW1lKSlmb3IodmFyIGw9MDtsPHMubGVuZ3RoO2wrKylpZihzW2xdaW5zdGFuY2VvZiBSZWdFeHApe2lmKHNbbF0udGVzdChjKSl7cz0hMDticmVhayB0fX1lbHNlIGlmKDA8PWMuaW5kZXhPZihzW2xdKXx8dSYmMDw9c1tsXS5pbmRleE9mKGMpKXtzPSEwO2JyZWFrIHR9cz0hMX1zJiYoKHM9bnVsbD09KHM9aS5wbGFjZW1lbnQpP2kuZnJhZ21lbnQ/MjoxOnMpPT09ZSYmZyhhLGkuY2FsbGJhY2soKSkpfXJldHVybiBhfXZhciBqPXZvaWQgMDtmdW5jdGlvbiBOKCl7dmFyIHQ9e30sZT1mLmdvb2dsZV90YWdfZGF0YTtyZXR1cm4gZi5nb29nbGVfdGFnX2RhdGE9dm9pZCAwPT09ZT90OmUsKGU9KHQ9Zi5nb29nbGVfdGFnX2RhdGEpLmdsKSYmZS5kZWNvcmF0b3JzfHwodC5nbD1lPXtkZWNvcmF0b3JzOltdfSksZX12YXIgUj0vKC4qPylcKiguKj8pXCooLiopLyxBPS8oW14/I10rKShcP1teI10qKT8oIy4qKT8vO2Z1bmN0aW9uIEwodCl7cmV0dXJuIG5ldyBSZWdFeHAoIiguKj8pKF58JikiK3QrIj0oW14mXSopJj8oLiopIil9ZnVuY3Rpb24gSSh0LGUpe3ZhciBuLHIsYT1bXTtmb3IobiBpbiB0KSF0Lmhhc093blByb3BlcnR5KG4pfHx2b2lkIDAhPT0ocj10W25dKSYmcj09ciYmbnVsbCE9PXImJiJbb2JqZWN0IE9iamVjdF0iIT09ci50b1N0cmluZygpJiYoYS5wdXNoKG4pLGEucHVzaCh4KFN0cmluZyhyKSkpKTtyZXR1cm4gdD1hLmpvaW4oIioiKSx2b2lkIDAhPT1lJiYoYT0ieHBfIitlLGU9TVtlXSh0KSx0PXQrIioiK1thLHgoU3RyaW5nKGUpKV0uam9pbigiKiIpKSxbIjEiLFAodCksdF0uam9pbigiKiIpfWZ1bmN0aW9uIFAodCxlKXtpZih0PVtmLm5hdmlnYXRvci51c2VyQWdlbnQsKG5ldyBEYXRlKS5nZXRUaW1lem9uZU9mZnNldCgpLHYudXNlckxhbmd1YWdlfHx2Lmxhbmd1YWdlLE1hdGguZmxvb3IobmV3IERhdGUoRGF0ZS5ub3coKSkuZ2V0VGltZSgpLzYwLzFlMyktKHZvaWQgMD09PWU/MDplKSx0XS5qb2luKCIqIiksIShlPWMpKXtlPUFycmF5KDI1Nik7Zm9yKHZhciBuPTA7bjwyNTY7bisrKXtmb3IodmFyIHI9bixhPTA7YTw4O2ErKylyPTEmcj9yPj4+MV4zOTg4MjkyMzg0OnI+Pj4xO2Vbbl09cn19Zm9yKGM9ZSxlPTQyOTQ5NjcyOTUsbj0wO248dC5sZW5ndGg7bisrKWU9ZT4+PjheY1syNTUmKGVedC5jaGFyQ29kZUF0KG4pKV07cmV0dXJuKCgtMV5lKT4+PjApLnRvU3RyaW5nKDM2KX12YXIgbj17fSxNPShuWzFdPWZ1bmN0aW9uKCl7cmV0dXJuIkNIRUNLU1VNX0VYUF9ESVNBQkxFRCJ9LG5bMl09ZnVuY3Rpb24oKXtyZXR1cm4iQ0hFQ0tTVU1fRVhQX0RJU0FCTEVEIn0sblszXT1mdW5jdGlvbigpe3JldHVybiJDSEVDS1NVTV9FWFBfRElTQUJMRUQifSxuKTtmdW5jdGlvbiByKG8pe3JldHVybiBmdW5jdGlvbih0KXt2YXIgZT1PKGYubG9jYXRpb24uaHJlZiksbj1lLnNlYXJjaC5yZXBsYWNlKCI/IiwiIikscj1pKG4sIl9nbCIsITApO3QucXVlcnk9cShyfHwiIil8fHt9O3ZhciBhPShyPXcoZSwiZnJhZ21lbnQiKSkubWF0Y2goTCgiX2dsIikpO3QuZnJhZ21lbnQ9cShhJiZhWzNdfHwiIil8fHt9LG8mJmZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiByKHQsZSl7cmV0dXJuIHQ9KHQ9RCgiX2dsIix0KSkubGVuZ3RoP2UrdDp0fXt2YXIgYTtkJiZkLnJlcGxhY2VTdGF0ZSYmKCgoYT1MKCJfZ2wiKSkudGVzdChlKXx8YS50ZXN0KG4pKSYmKHQ9dyh0LCJwYXRoIiksZT1yKGUsIj8iKSxuPXIobiwiIyIpLGQucmVwbGFjZVN0YXRlKHt9LHZvaWQgMCwiIit0K2UrbikpKX19KGUsbixyKX19ZnVuY3Rpb24gRCh0LGUpe3ZhciBuLHI7cmV0dXJuKHQ9TCh0KS5leGVjKGUpKSYmKG49dFsyXSxyPXRbNF0sZT10WzFdLHImJihlPWUrbityKSksZX1mdW5jdGlvbiBxKHQpe3ZhciBlPXZvaWQgMD09PWU/MzplO3RyeXtpZih0KXt0Ontmb3IodmFyIG49MDtuPDM7KytuKXt2YXIgcj1SLmV4ZWModCk7aWYocil7dmFyIGE9cjticmVhayB0fXQ9ZGVjb2RlVVJJQ29tcG9uZW50KHQpfWE9dm9pZCAwfWlmKGEmJiIxIj09PWFbMV0pe3ZhciBvPWFbMl0saT1hWzNdO3Q6e2ZvcihhPTA7YTxlOysrYSlpZihvPT09UChpLGEpKXt2YXIgcz0hMDticmVhayB0fXM9ITF9aWYocyl7Zm9yKHZhciBlPXt9LGM9aT9pLnNwbGl0KCIqIik6W10saT0wO2k8Yy5sZW5ndGg7aSs9MillW2NbaV1dPWZ1bmN0aW9uKHIpe2Z1bmN0aW9uIHQodCl7Zm9yKDthPHIubGVuZ3RoOyl7dmFyIGU9ci5jaGFyQXQoYSsrKSxuPWxbZV07aWYobnVsbCE9bilyZXR1cm4gbjtpZighL15bXHNceGEwXSokLy50ZXN0KGUpKXRocm93IEVycm9yKCJVbmtub3duIGJhc2U2NCBlbmNvZGluZyBhdCBjaGFyOiAiK2UpfXJldHVybiB0fXU9dXx8VCgpLGw9bHx8RSgpO2Zvcih2YXIgZT0iIixhPTA7Oyl7dmFyIG49dCgtMSksbz10KDApLGk9dCg2NCkscz10KDY0KTtpZig2ND09PXMmJi0xPT09bilyZXR1cm4gZTtlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG48PDJ8bz4+NCksNjQhPWkmJihlKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG88PDQmMjQwfGk+PjIpLDY0IT1zJiYoZSs9U3RyaW5nLmZyb21DaGFyQ29kZShpPDw2JjE5MnxzKSkpfX0oY1tpKzFdKTtyZXR1cm4gZX19fX1jYXRjaCh0KXt9fWZ1bmN0aW9uIFUobix0LGUscil7ZnVuY3Rpb24gYSh0KXt2YXIgZT0odD1EKG4sdCkpLmNoYXJBdCh0Lmxlbmd0aC0xKTtyZXR1cm4gdCYmIiYiIT09ZSYmKHQrPSImIiksdCtzfWlmKHI9dm9pZCAwIT09ciYmciwhKGk9QS5leGVjKGUpKSlyZXR1cm4iIjtlPWlbMV07dmFyIG89aVsyXXx8IiIsaT1pWzNdfHwiIixzPW4rIj0iK3Q7cmV0dXJuIHI/aT0iIyIrYShpLnN1YnN0cmluZygxKSk6bz0iPyIrYShvLnN1YnN0cmluZygxKSksIiIrZStvK2l9ZnVuY3Rpb24gSCh0LGUpe3ZhciBuPSJGT1JNIj09PSh0LnRhZ05hbWV8fCIiKS50b1VwcGVyQ2FzZSgpLHI9QyhlLDEsbiksYT1DKGUsMixuKTtlPUMoZSwzLG4pO3ZhciBvLGk9ajtmb3IobyBpbiBzKHIpJiYocj1JKHIsaSksbj9WKCJfZ2wiLHIsdCk6RygiX2dsIixyLHQsITEpKSwhbiYmcyhhKSYmRygiX2dsIixuPUkoYSksdCwhMCksZSllLmhhc093blByb3BlcnR5KG8pJiYkKG8sZVtvXSx0KX1mdW5jdGlvbiAkKHQsZSxuLHIpe2lmKG4udGFnTmFtZSl7aWYoImEiPT09bi50YWdOYW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJuIEcodCxlLG4scik7aWYoImZvcm0iPT09bi50YWdOYW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJuIFYodCxlLG4pfWlmKCJzdHJpbmciPT10eXBlb2YgbilyZXR1cm4gVSh0LGUsbixyKX1mdW5jdGlvbiBHKHQsZSxuLHIpe24uaHJlZiYmKHQ9VSh0LGUsbi5ocmVmLHZvaWQgMCE9PXImJnIpLGgudGVzdCh0KSYmKG4uaHJlZj10KSl9ZnVuY3Rpb24gVih0LGUsbil7aWYobiYmbi5hY3Rpb24paWYoImdldCI9PT0ocj0obi5tZXRob2R8fCIiKS50b0xvd2VyQ2FzZSgpKSl7Zm9yKHZhciByPW4uY2hpbGROb2Rlc3x8W10sYT0hMSxvPTA7bzxyLmxlbmd0aDtvKyspe3ZhciBpPXJbb107aWYoaS5uYW1lPT09dCl7aS5zZXRBdHRyaWJ1dGUoInZhbHVlIixlKSxhPSEwO2JyZWFrfX1hfHwoKHI9cC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJoaWRkZW4iKSxyLnNldEF0dHJpYnV0ZSgibmFtZSIsdCksci5zZXRBdHRyaWJ1dGUoInZhbHVlIixlKSxuLmFwcGVuZENoaWxkKHIpKX1lbHNlInBvc3QiPT09ciYmKHQ9VSh0LGUsbi5hY3Rpb24pLGgudGVzdCh0KSYmKG4uYWN0aW9uPXQpKX1mdW5jdGlvbiBGKHQpe3RyeXt0Ontmb3IodmFyIGU9MTAwO3QmJjA8ZTspe2lmKHQuaHJlZiYmdC5ub2RlTmFtZS5tYXRjaCgvXmEoPzpyZWEpPyQvaSkpe3ZhciBuPXQ7YnJlYWsgdH10PXQucGFyZW50Tm9kZSxlLS19bj1udWxsfXZhciByO24mJigiaHR0cDoiIT09KHI9bi5wcm90b2NvbCkmJiJodHRwczoiIT09cnx8SChuLG4uaG9zdG5hbWUpKX1jYXRjaCh0KXt9fWZ1bmN0aW9uIFgodCl7dHJ5e3QuYWN0aW9uJiZIKHQsdyhPKHQuYWN0aW9uKSwiaG9zdCIpKX1jYXRjaCh0KXt9fXQoImdvb2dsZV90YWdfZGF0YS5nbEJyaWRnZS5hdXRvIixmdW5jdGlvbih0LGUsbixyLGEpe2soKSx2b2lkIDAhPT1hJiYoaj1hKSwzIT09YXx8di51c2VyQWdlbnREYXRhJiZ2LnVzZXJBZ2VudERhdGEuZ2V0SGlnaEVudHJvcHlWYWx1ZXMoWyJhcmNoaXRlY3R1cmUiLCJtb2RlbCIsImJpdG5lc3MiLCJwbGF0Zm9ybVZlcnNpb24iLCJ1YUZ1bGxWZXJzaW9uIl0pLnRoZW4oZnVuY3Rpb24oKXt9KSxTKHQsZSwiZnJhZ21lbnQiPT09bj8yOjEsISFyLCExKX0pLHQoImdvb2dsZV90YWdfZGF0YS5nbEJyaWRnZS5wYXNzdGhyb3VnaCIsZnVuY3Rpb24odCxlLG4scil7aygpLHZvaWQgMCE9PXImJihqPXIpLFModCxbeShmLmxvY2F0aW9uLCJob3N0IiwhMCldLGUsISFuLCEwKX0pLHQoImdvb2dsZV90YWdfZGF0YS5nbEJyaWRnZS5kZWNvcmF0ZSIsZnVuY3Rpb24odCxlLG4pe3JldHVybiAkKCJfZ2wiLHQ9SSh0KSxlLCEhbil9KSx0KCJnb29nbGVfdGFnX2RhdGEuZ2xCcmlkZ2UuZ2VuZXJhdGUiLEkpLHQoImdvb2dsZV90YWdfZGF0YS5nbEJyaWRnZS5nZXQiLGZ1bmN0aW9uKHQsZSl7dmFyIG49cighIWUpO3JldHVybihlPU4oKSkuZGF0YXx8KGUuZGF0YT17cXVlcnk6e30sZnJhZ21lbnQ6e319LG4oZS5kYXRhKSksbj17fSwoZT1lLmRhdGEpJiYoZyhuLGUucXVlcnkpLHQmJmcobixlLmZyYWdtZW50KSksbn0pfSh3aW5kb3cpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbyh0KXt2YXIgZSxuPTE7aWYodClmb3Iobj0wLGU9dC5sZW5ndGgtMTswPD1lO2UtLSl7dmFyIHI9dC5jaGFyQ29kZUF0KGUpO249MCE9KHI9MjY2MzM4MzA0JihuPShuPDw2JjI2ODQzNTQ1NSkrcisocjw8MTQpKSk/bl5yPj4yMTpufXJldHVybiBufWZ1bmN0aW9uIGkodCl7dGhpcy5DPXR8fFtdfWkucHJvdG90eXBlLnNldD1mdW5jdGlvbih0KXt0aGlzLkNbdF09ITB9LGkucHJvdG90eXBlLmVuY29kZT1mdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTx0aGlzLkMubGVuZ3RoO2UrKyl0aGlzLkNbZV0mJih0W01hdGguZmxvb3IoZS82KV1ePTE8PGUlNik7Zm9yKGU9MDtlPHQubGVuZ3RoO2UrKyl0W2VdPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fIi5jaGFyQXQodFtlXXx8MCk7cmV0dXJuIHQuam9pbigiIikrIn4ifTt2YXIgdD13aW5kb3cuR29vZ2xlQW5hbHl0aWNzT2JqZWN0LHM9KEFlPShBZT1OZT0oTmU9bnVsbCE9dCk/LTE8KHQuY29uc3RydWN0b3IrIiIpLmluZGV4T2YoIlN0cmluZyIpOk5lKT8oUmU9d2luZG93Lkdvb2dsZUFuYWx5dGljc09iamVjdCk/UmUucmVwbGFjZSgvXltcc1x4YTBdK3xbXHNceGEwXSskL2csIiIpOiIiOkFlKXx8ImdhIixjPS9eKD86dXRtYVwuKT9cZCtcLlxkKyQvLHU9L15hbXAtW1x3Li1dezIyLDY0fSQvLGw9ITEscj1uZXcgaTtmdW5jdGlvbiBnKHQpe3Iuc2V0KHQpfWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQ9dC5nZXQoRmUpLHQ9IXkodCk/W106dH1mdW5jdGlvbiBmKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0fWZ1bmN0aW9uIGQoKXtmb3IodmFyIHQ9SS5uYXZpZ2F0b3IudXNlckFnZW50KyhQLmNvb2tpZXx8IiIpKyhQLnJlZmVycmVyfHwiIiksZT10Lmxlbmd0aCxuPUkuaGlzdG9yeS5sZW5ndGg7MDxuOyl0Kz1uLS1eZSsrO3JldHVybltBdCgpXjIxNDc0ODM2NDcmbyh0KSxNYXRoLnJvdW5kKChuZXcgRGF0ZSkuZ2V0VGltZSgpLzFlMyldLmpvaW4oIi4iKX1mdW5jdGlvbiBwKHQsZSxuLHIpe3RyeXt0LmFkZEV2ZW50TGlzdGVuZXI/dC5hZGRFdmVudExpc3RlbmVyKGUsbiwhIXIpOnQuYXR0YWNoRXZlbnQmJnQuYXR0YWNoRXZlbnQoIm9uIitlLG4pfWNhdGNoKHQpe2coMjcpfX1mdW5jdGlvbiB2KHQsZSl7dmFyIG49dC5pbmRleE9mKGUpO3JldHVybiEoNSE9biYmNiE9bnx8Ii8iIT0odD10LmNoYXJBdChuK2UubGVuZ3RoKSkmJiI/IiE9dCYmIiIhPXQmJiI6IiE9dCl9ZnVuY3Rpb24gbSh0LGUpe2lmKDE9PWUubGVuZ3RoJiZudWxsIT1lWzBdJiYib2JqZWN0Ij09dHlwZW9mIGVbMF0pcmV0dXJuIGVbMF07Zm9yKHZhciBuPXt9LHI9TWF0aC5taW4odC5sZW5ndGgrMSxlLmxlbmd0aCksYT0wO2E8cjthKyspe2lmKCJvYmplY3QiPT10eXBlb2YgZVthXSl7Zm9yKHZhciBvIGluIGVbYV0pZVthXS5oYXNPd25Qcm9wZXJ0eShvKSYmKG5bb109ZVthXVtvXSk7YnJlYWt9YTx0Lmxlbmd0aCYmKG5bdFthXV09ZVthXSl9cmV0dXJuIG59ZnVuY3Rpb24gYigpe3RoaXMub2E9W10sdGhpcy5lYT17fSx0aGlzLm09e319dmFyIHc9ZnVuY3Rpb24odCl7dD1oKHQpLHQ9bmV3IGkodCk7Zm9yKHZhciBlPXIuQy5zbGljZSgpLG49MDtuPHQuQy5sZW5ndGg7bisrKWVbbl09ZVtuXXx8dC5DW25dO3JldHVybiBuZXcgaShlKS5lbmNvZGUoKX0seT1mdW5jdGlvbih0KXtyZXR1cm4iW29iamVjdCBBcnJheV0iPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoT2JqZWN0KHQpKX0sXz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmLTE8KHQuY29uc3RydWN0b3IrIiIpLmluZGV4T2YoIlN0cmluZyIpfSxPPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIDA9PXQuaW5kZXhPZihlKX0sRT1mdW5jdGlvbih0KXt2YXIgZT1QLmNyZWF0ZUVsZW1lbnQoImltZyIpO3JldHVybiBlLndpZHRoPTEsZS5oZWlnaHQ9MSxlLnNyYz10LGV9LFQ9ZnVuY3Rpb24oKXt9LHg9ZnVuY3Rpb24odCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCBpbnN0YW5jZW9mIEZ1bmN0aW9uP2VuY29kZVVSSUNvbXBvbmVudCh0KTooZygyOCksdCl9LGs9L15bXHdcLTovLj89JiUhXFtcXV0rJC8sUz0vXltcdysvXy1dK1s9XXswLDJ9JC8sQz1udWxsLGo9ZnVuY3Rpb24odCxlLG4scixhKXtpZighQyl7Qz17Y3JlYXRlU2NyaXB0VVJMOmZ1bmN0aW9uKHQpe3JldHVybiB0fSxjcmVhdGVIVE1MOmZ1bmN0aW9uKHQpe3JldHVybiB0fX07dHJ5e0M9d2luZG93LnRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koImdvb2dsZS1hbmFseXRpY3MiLEMpfWNhdGNoKHQpe319dmFyIG87dCYmKG89KG89UC5xdWVyeVNlbGVjdG9yJiZQLnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtub25jZV0iKXx8bnVsbCkmJihvLm5vbmNlfHxvLmdldEF0dHJpYnV0ZSYmby5nZXRBdHRyaWJ1dGUoIm5vbmNlIikpfHwiIixuPyhhPXI9IiIsZSYmay50ZXN0KGUpJiYocj0nIGlkPSInK2UrJyInKSxvJiZTLnRlc3QobykmJihhPScgbm9uY2U9IicrbysnIicpLGsudGVzdCh0KSYmUC53cml0ZShDLmNyZWF0ZUhUTUwoIjxzY3JpcHQiK3IrYSsnIHNyYz0iJyt0KyciPjxcL3NjcmlwdD4nKSkpOigobj1QLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpKS50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLG4uYXN5bmM9ITAsbi5zcmM9Qy5jcmVhdGVTY3JpcHRVUkwodCksciYmKG4ub25sb2FkPXIpLGEmJihuLm9uZXJyb3I9YSksZSYmKG4uaWQ9ZSksbyYmbi5zZXRBdHRyaWJ1dGUoIm5vbmNlIixvKSwodD1QLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXSkucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobix0KSkpfSxOPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFIoUC5sb2NhdGlvbltlPyJocmVmIjoic2VhcmNoIl0sdCl9LFI9ZnVuY3Rpb24odCxlKXtyZXR1cm4odD10Lm1hdGNoKCIoPzomfCN8XFw/KSIreChlKS5yZXBsYWNlKC8oWy4qKz9ePSE6JHt9KCl8XFtcXVwvXFxdKS9nLCJcXCQxIikrIj0oW14mI10qKSIpKSYmMj09dC5sZW5ndGg/dFsxXToiIn0sQT1mdW5jdGlvbigpe3ZhciB0PSIiK1AubG9jYXRpb24uaG9zdG5hbWU7cmV0dXJuIDA9PXQuaW5kZXhPZigid3d3LiIpP3Quc3Vic3RyaW5nKDQpOnR9LEw9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpZihlPT10W25dKXJldHVybiEwO3JldHVybiExfTtiLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlLG4pe3RoaXMub2EucHVzaCh0KSxuP3RoaXMubVsiOiIrdF09ZTp0aGlzLmVhWyI6Iit0XT1lfSxiLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuKHRoaXMubS5oYXNPd25Qcm9wZXJ0eSgiOiIrdCk/dGhpcy5tOnRoaXMuZWEpWyI6Iit0XX0sYi5wcm90b3R5cGUubWFwPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wO2U8dGhpcy5vYS5sZW5ndGg7ZSsrKXt2YXIgbj10aGlzLm9hW2VdLHI9dGhpcy5nZXQobik7ciYmdChuLHIpfX07dmFyIEk9d2luZG93LFA9ZG9jdW1lbnQsbj1kb2N1bWVudC5jdXJyZW50U2NyaXB0P2RvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjOiIiLE09ZnVuY3Rpb24odCxlKXtyZXR1cm4gc2V0VGltZW91dCh0LGUpfSxEPXdpbmRvdyxxPWRvY3VtZW50LFU9ZnVuY3Rpb24odCl7dmFyIGU9RC5fZ2FVc2VyUHJlZnM7aWYoZSYmZS5pb28mJmUuaW9vKCl8fHQmJiEwPT09RFsiZ2EtZGlzYWJsZS0iK3RdKXJldHVybiEwO3RyeXt2YXIgbj1ELmV4dGVybmFsO2lmKG4mJm4uX2dhVXNlclByZWZzJiYib28iPT1uLl9nYVVzZXJQcmVmcylyZXR1cm4hMH1jYXRjaCh0KXt9Zm9yKHQ9W10sZT1TdHJpbmcocS5jb29raWUpLnNwbGl0KCI7Iiksbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dLnNwbGl0KCI9IiksYT1yWzBdLnJlcGxhY2UoL15ccyp8XHMqJC9nLCIiKTthJiYiQU1QX1RPS0VOIj09YSYmKChyPXIuc2xpY2UoMSkuam9pbigiPSIpLnJlcGxhY2UoL15ccyp8XHMqJC9nLCIiKSkmJihyPWRlY29kZVVSSUNvbXBvbmVudChyKSksdC5wdXNoKHIpKX1mb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKWlmKCIkT1BUX09VVCI9PXRbZV0pcmV0dXJuITA7cmV0dXJuISFxLmdldEVsZW1lbnRCeUlkKCJfX2dhT3B0T3V0RXh0ZW5zaW9uIil9LEg9ZnVuY3Rpb24odCl7dmFyIGU9W10sbj1QLmNvb2tpZS5zcGxpdCgiOyIpO3Q9bmV3IFJlZ0V4cCgiXlxccyoiK3QrIj1cXHMqKC4qPylcXHMqJCIpO2Zvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgYT1uW3JdLm1hdGNoKHQpO2EmJmUucHVzaChhWzFdKX1yZXR1cm4gZX0sJD1mdW5jdGlvbih0LGUsbixyLGEsbyxpKXtpZighKGE9IVUoYSkmJiEoRi50ZXN0KFAubG9jYXRpb24uaG9zdG5hbWUpfHwiLyI9PW4mJlYudGVzdChyKSkpKXJldHVybiExO2lmKG49dCsiPSIrKGU9ZSYmMTIwMDxlLmxlbmd0aD9lLnN1YnN0cmluZygwLDEyMDApOmUpKyI7IHBhdGg9IituKyI7ICIsbyYmKG4rPSJleHBpcmVzPSIrbmV3IERhdGUoKG5ldyBEYXRlKS5nZXRUaW1lKCkrbykudG9HTVRTdHJpbmcoKSsiOyAiKSxyJiYibm9uZSIhPT1yJiYobis9ImRvbWFpbj0iK3IrIjsiKSxpJiYobis9aSsiOyIpLHI9UC5jb29raWUsUC5jb29raWU9biwhKHI9ciE9UC5jb29raWUpKXQ6e2Zvcih0PUgodCkscj0wO3I8dC5sZW5ndGg7cisrKWlmKGU9PXRbcl0pe3I9ITA7YnJlYWsgdH1yPSExfXJldHVybiByfSxHPWZ1bmN0aW9uKHQpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQ/ZW5jb2RlVVJJQ29tcG9uZW50KHQpLnJlcGxhY2UoL1woL2csIiUyOCIpLnJlcGxhY2UoL1wpL2csIiUyOSIpOnR9LFY9L14od3d3XC4pP2dvb2dsZShcLmNvbT8pPyhcLlthLXpdezJ9KT8kLyxGPS8oXnxcLilkb3VibGVjbGlja1wubmV0JC9pLFg9ZnVuY3Rpb24odCl7dmFyIGU9W10sbj1QLmNvb2tpZS5zcGxpdCgiOyIpO3Q9bmV3IFJlZ0V4cCgiXlxccyoiKyh0fHwiX2dhYyIpKyJfKFVBLVxcZCstXFxkKyk9XFxzKiguKz8pXFxzKiQiKTtmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIGE9bltyXS5tYXRjaCh0KTthJiZlLnB1c2goe2phOmFbMV0sdmFsdWU6YVsyXSx0aW1lc3RhbXA6TnVtYmVyKGFbMl0uc3BsaXQoIi4iKVsxXSl8fDB9KX1yZXR1cm4gZS5zb3J0KGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUudGltZXN0YW1wLXQudGltZXN0YW1wfSksZX07ZnVuY3Rpb24gQih0LGUsbil7dmFyIHI9e307aWYoIShlPVgoZSkpfHwhZS5sZW5ndGgpcmV0dXJuIHI7Zm9yKHZhciBhPTA7YTxlLmxlbmd0aDthKyspe3ZhciBvLGk9ZVthXS52YWx1ZS5zcGxpdCgiLiIpOyIxIiE9PWlbMF18fG4mJmkubGVuZ3RoPDN8fCFuJiYzIT09aS5sZW5ndGg/dCYmKHQubmE9ITApOk51bWJlcihpWzFdKSYmKHJbZVthXS5qYV0/dCYmKHQucGE9ITApOnJbZVthXS5qYV09W10sbz17dmVyc2lvbjppWzBdLHRpbWVzdGFtcDoxZTMqTnVtYmVyKGlbMV0pLHFhOmlbMl19LG4mJjM8aS5sZW5ndGgmJihvLmxhYmVscz1pLnNsaWNlKDMpKSxyW2VbYV0uamFdLnB1c2gobykpfXJldHVybiByfWZ1bmN0aW9uIHooKXt4YS5EKFtUXSl9ZnVuY3Rpb24gSyh0LGUsbil7Zm9yKGV0JiZjbGVhclRpbWVvdXQoZXQpLGUmJmx0KGUsbikscnQ9dCxlPWl0LGl0PVtdLG49MDtuPGUubGVuZ3RoO24rKyllW25dKHQpfWZ1bmN0aW9uIFcodCl7dDp7aWYoYXQudGVzdChQLnJlZmVycmVyKSl7dmFyIGU9UC5sb2NhdGlvbi5ob3N0bmFtZS5yZXBsYWNlKG90LCIiKTtlOnt2YXIgbj1QLnJlZmVycmVyLHI9KG49bi5yZXBsYWNlKC9eaHR0cHM/OlwvXC8vLCIiKSkucmVwbGFjZSgvXlteL10rLywiIikuc3BsaXQoIi8iKSxhPXJbMl07aWYoIShyPShyPSJzIj09YT9yWzNdOmEpP2RlY29kZVVSSUNvbXBvbmVudChyKTpyKSl7aWYoMD09bi5pbmRleE9mKCJ4bi0tIikpe249IiI7YnJlYWsgZX0obj1uLm1hdGNoKC8oLiopXC5jZG5cLmFtcHByb2plY3RcLm9yZ1wvPyQvKSkmJjI9PW4ubGVuZ3RoJiYocj1uWzFdLnJlcGxhY2UoLy0vZywiLiIpLnJlcGxhY2UoL1wuXC4vZywiLSIpKX1uPXI/ci5yZXBsYWNlKG90LCIiKToiIn1pZihyPSEocj1lPT09bik/ZS5zdWJzdHJpbmcoZS5sZW5ndGgtKG49Ii4iK24pLmxlbmd0aCxlLmxlbmd0aCk9PT1uOnIpe2U9ITA7YnJlYWsgdH1nKDc4KX1lPSExfXJldHVybiBlJiYhMSE9PXR9ZnVuY3Rpb24gWih0KXtzd2l0Y2godCl7ZGVmYXVsdDpjYXNlIDE6cmV0dXJuImh0dHBzOi8vd3d3Lmdvb2dsZS1hbmFseXRpY3MuY29tL2d0bS9qcz9pZD0iO2Nhc2UgMjpyZXR1cm4iaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcz9pZD0ifX1mdW5jdGlvbiBZKHQpe3RoaXMubmFtZT0ibGVuIix0aGlzLm1lc3NhZ2U9dCsiLTgxOTIifWZ1bmN0aW9uIEoodCxlLG4pe2lmKDA9PT1lLmxlbmd0aCluKCk7ZWxzZXt2YXIgcj1lLmNoYXJBdCgwKTtzd2l0Y2gocil7Y2FzZSJkIjpmdCgiaHR0cHM6Ly9zdGF0cy5nLmRvdWJsZWNsaWNrLm5ldC9qL2NvbGxlY3QiLHQuVSx0LG4pO2JyZWFrO2Nhc2UiZyI6ZHQoImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vYWRzL2dhLWF1ZGllbmNlcyIsdC5nb29nbGUsbiksKGU9ZS5zdWJzdHJpbmcoMSkpJiYoL15bYS16Ll17MSw2fSQvLnRlc3QoZSk/ZHQoImh0dHBzOi8vd3d3Lmdvb2dsZS4lL2Fkcy9nYS1hdWRpZW5jZXMiLnJlcGxhY2UoIiUiLGUpLHQuZ29vZ2xlLFQpOmJ0KCJ0bGQiLCJiY2MiLGUpKTticmVhaztjYXNlIkciOmlmKHQuVil7dC5WKCJHLSIrZS5zdWJzdHJpbmcoMSkpLG4oKTticmVha31jYXNlIngiOmlmKHQuVil7dC5WKCksbigpO2JyZWFrfWRlZmF1bHQ6YnQoInhociIsImJyYyIsciksbigpfX19ZnVuY3Rpb24gUSgpe3RoaXMuTT1bXX12YXIgdHQsZXQsbnQscnQsYXQ9L15odHRwcz86XC9cL1teL10qY2RuXC5hbXBwcm9qZWN0XC5vcmdcLy8sb3Q9L14oPzp3d3dcLnxtXC58YW1wXC4pKy8saXQ9W10sc3Q9ZnVuY3Rpb24odCxlKXt2YXIgbj1IKCJBTVBfVE9LRU4iKTtyZXR1cm4gMTxuLmxlbmd0aD8oZyg1NSksITEpOiIkT1BUX09VVCI9PShuPWRlY29kZVVSSUNvbXBvbmVudChuWzBdfHwiIikpfHwiJEVSUk9SIj09bnx8VShlKT8oZyg2MiksITEpOmF0LnRlc3QoUC5yZWZlcnJlcil8fCIkTk9UX0ZPVU5EIiE9bj92b2lkIDAhPT1ydD8oZyg1NiksTShmdW5jdGlvbigpe3QocnQpfSwwKSwhMCk6dHQ/KGl0LnB1c2godCksITApOiIkUkVUUklFVklORyI9PW4/KGcoNTcpLE0oZnVuY3Rpb24oKXtzdCh0LGUpfSwxZTQpLCEwKToodHQ9ITAsbiYmIiQiIT1uWzBdfHwobHQoIiRSRVRSSUVWSU5HIiwzZTQpLHNldFRpbWVvdXQodXQsM2U0KSxuPSIiKSwhIWN0KG4sZSkmJihpdC5wdXNoKHQpLCEwKSk6KGcoNjgpLCExKX0sY3Q9ZnVuY3Rpb24oZSxuLHIpe2lmKCF3aW5kb3cuSlNPTilyZXR1cm4gZyg1OCksITE7dmFyIHQ9SS5YTUxIdHRwUmVxdWVzdDtpZighdClyZXR1cm4gZyg1OSksITE7dmFyIGE9bmV3IHQ7cmV0dXJuIndpdGhDcmVkZW50aWFscyJpbiBhPyhhLm9wZW4oIlBPU1QiLChyfHwiaHR0cHM6Ly9hbXBjaWQuZ29vZ2xlLmNvbS92MS9wdWJsaXNoZXI6Z2V0Q2xpZW50SWQiKSsiP2tleT1BSXphU3lBNjVsRUhVRWl6SXNOdGxiTm8tbDJLMThkVDY4MG5zYU0iLCEwKSxhLndpdGhDcmVkZW50aWFscz0hMCxhLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsInRleHQvcGxhaW4iKSxhLm9ubG9hZD1mdW5jdGlvbigpe2lmKHR0PSExLDQ9PWEucmVhZHlTdGF0ZSl7dHJ5ezIwMCE9YS5zdGF0dXMmJihnKDYxKSxLKCIiLCIkRVJST1IiLDNlNCkpO3ZhciB0PUpTT04ucGFyc2UoYS5yZXNwb25zZVRleHQpO3Qub3B0T3V0PyhnKDYzKSxLKCIiLCIkT1BUX09VVCIsMzE1MzZlNikpOnQuY2xpZW50SWQ/Syh0LmNsaWVudElkLHQuc2VjdXJpdHlUb2tlbiwzMTUzNmU2KTohciYmdC5hbHRlcm5hdGVVcmw/KGV0JiZjbGVhclRpbWVvdXQoZXQpLHR0PSEwLGN0KGUsbix0LmFsdGVybmF0ZVVybCkpOihnKDY0KSxLKCIiLCIkTk9UX0ZPVU5EIiwzNmU1KSl9Y2F0Y2godCl7Zyg2NSksSygiIiwiJEVSUk9SIiwzZTQpfWE9bnVsbH19LHQ9e29yaWdpblNjb3BlOiJBTVBfRUNJRF9HT09HTEUifSxlJiYodC5zZWN1cml0eVRva2VuPWUpLGEuc2VuZChKU09OLnN0cmluZ2lmeSh0KSksZXQ9TShmdW5jdGlvbigpe2coNjYpLEsoIiIsIiRFUlJPUiIsM2U0KX0sMWU0KSwhMCk6KGcoNjApLCExKX0sdXQ9ZnVuY3Rpb24oKXt0dD0hMX0sbHQ9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDA9PT1udCl7bnQ9IiI7Zm9yKHZhciBuPXNyKCkscj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgYT1uW3JdO2lmKCQoIkFNUF9UT0tFTiIsZW5jb2RlVVJJQ29tcG9uZW50KHQpLCIvIixhLCIiLGUpKXJldHVybiB2b2lkKG50PWEpfX0kKCJBTVBfVE9LRU4iLGVuY29kZVVSSUNvbXBvbmVudCh0KSwiLyIsbnQsIiIsZSl9LGd0PWZ1bmN0aW9uKHQpe3JldHVybih0fHxsfHwiaHR0cHM6Ij09UC5sb2NhdGlvbi5wcm90b2NvbD8iaHR0cHM6IjoiaHR0cDoiKSsiLy93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20ifSxodD1mdW5jdGlvbih0LGUsbil7aWYobj1ufHxULGUubGVuZ3RoPD0yMDM2KWR0KHQsZSxuKTtlbHNle2lmKCEoZS5sZW5ndGg8PTgxOTIpKXRocm93IGJ0KCJsZW4iLGUubGVuZ3RoKSxuZXcgWShlLmxlbmd0aCk7bXQodCxlLG4pfHxwdCh0LGUsbil8fGR0KHQsZSxuKX19LGZ0PWZ1bmN0aW9uKHQsZSxuLHIpe3B0KHQrIj8iK2UsIiIscj1yfHxULG4pfSxkdD1mdW5jdGlvbih0LGUsbil7dmFyIHI9RSh0KyI/IitlKTtyLm9ubG9hZD1yLm9uZXJyb3I9ZnVuY3Rpb24oKXtyLm9ubG9hZD1udWxsLHIub25lcnJvcj1udWxsLG4oKX19LHB0PWZ1bmN0aW9uKG4scixvLGkpe3ZhciB0PXt9LmNvbnN0cnVjdG9yLmdldE93blByb3BlcnR5RGVzY3JpcHRvcih3aW5kb3csIlhNTEh0dHBSZXF1ZXN0Iik7dHJ5e3JldHVybiB0JiZ7fS5jb25zdHJ1Y3Rvci5kZWZpbmVQcm9wZXJ0eSh3aW5kb3csIlhNTEh0dHBSZXF1ZXN0IixhLlhNTEh0dHBSZXF1ZXN0KSxmdW5jdGlvbigpe3ZhciB0PUkuWE1MSHR0cFJlcXVlc3Q7aWYoIXQpcmV0dXJuITE7dmFyIGU9bmV3IHQ7cmV0dXJuIndpdGhDcmVkZW50aWFscyJpbiBlJiYobj1uLnJlcGxhY2UoL15odHRwOi8sImh0dHBzOiIpLGUub3BlbigiUE9TVCIsbiwhMCksZS53aXRoQ3JlZGVudGlhbHM9ITAsZS5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCJ0ZXh0L3BsYWluIiksZS5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZig0PT1lLnJlYWR5U3RhdGUpe2lmKGkmJiJ0ZXh0L3BsYWluIj09PWUuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKXRyeXt2dChpLGUucmVzcG9uc2VUZXh0LG8pfWNhdGNoKHQpe2J0KCJ4aHIiLCJyc3AiKSxvKCl9ZWxzZSBvKCk7ZT1udWxsfX0sZS5zZW5kKHIpLCEwKX0uYXBwbHkodGhpcyxhcmd1bWVudHMpfWZpbmFsbHl7dCYme30uY29uc3RydWN0b3IuZGVmaW5lUHJvcGVydHkod2luZG93LCJYTUxIdHRwUmVxdWVzdCIsdCl9fSx2dD1mdW5jdGlvbih0LGUsbil7aWYoZS5sZW5ndGg8MSlidCgieGhyIiwidmVyIiwiMCIpLG4oKTtlbHNlIGlmKDM8dC5jb3VudCsrKWJ0KCJ4aHIiLCJ0bXIiLCIiK3QuY291bnQpLG4oKTtlbHNle3ZhciByPWUuY2hhckF0KDApO2lmKCIxIj09PXIpSih0LGUuc3Vic3RyaW5nKDEpLG4pO2Vsc2UgaWYodC5WJiYiMiI9PT1yKXt2YXIgYT1lLnN1YnN0cmluZygxKS5zcGxpdCgiLCIpLG89MDtmb3IoZT1mdW5jdGlvbigpeysrbz09PWEubGVuZ3RoJiZuKCl9LHI9MDtyPGEubGVuZ3RoO3IrKylKKHQsYVtyXSxlKX1lbHNlIGJ0KCJ4aHIiLCJ2ZXIiLFN0cmluZyhlLmxlbmd0aCkpLG4oKX19LG10PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4hIUkubmF2aWdhdG9yLnNlbmRCZWFjb24mJighIUkubmF2aWdhdG9yLnNlbmRCZWFjb24odCxlKSYmKG4oKSwhMCkpfSxidD1mdW5jdGlvbih0LGUsbil7MTw9MTAwKk1hdGgucmFuZG9tKCl8fFUoIj8iKXx8KHQ9WyJ0PWVycm9yIiwiX2U9Iit0LCJfdj1qOTYiLCJzcj0xIl0sZSYmdC5wdXNoKCJfZj0iK2UpLG4mJnQucHVzaCgiX209Iit4KG4uc3Vic3RyaW5nKDAsMTAwKSkpLHQucHVzaCgiYWlwPTEiKSx0LnB1c2goIno9IitBdCgpKSxkdChndCghMCkrIi91L2QiLHQuam9pbigiJiIpLFQpKX0sd3Q9ZnVuY3Rpb24oKXtyZXR1cm4gSS5nYURhdGE9SS5nYURhdGF8fHt9fSx5dD1mdW5jdGlvbih0KXt2YXIgZT13dCgpO3JldHVybiBlW3RdPWVbdF18fHt9fTtmdW5jdGlvbiBfdCh0KXtpZigxMDAhPXQuZ2V0KENuKSYmbyhQdCh0LGhuKSklMWU0Pj0xMDAqTXQodCxDbikpdGhyb3ciYWJvcnQifWZ1bmN0aW9uIE90KHQpe2lmKFUoUHQodCx2bikpKXRocm93ImFib3J0In1mdW5jdGlvbiBFdCgpe3ZhciB0PVAubG9jYXRpb24ucHJvdG9jb2w7aWYoImh0dHA6IiE9dCYmImh0dHBzOiIhPXQpdGhyb3ciYWJvcnQifWZ1bmN0aW9uIFR0KG4pe3RyeXtJLm5hdmlnYXRvci5zZW5kQmVhY29uP2coNDIpOkkuWE1MSHR0cFJlcXVlc3QmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gbmV3IEkuWE1MSHR0cFJlcXVlc3QmJmcoNDApfWNhdGNoKHQpe31uLnNldChWZSx3KG4pLCEwKSxuLnNldCh0ZSxNdChuLHRlKSsxKTt2YXIgcj1bXTtHdC5tYXAoZnVuY3Rpb24odCxlKXtlLkYmJihudWxsIT0odD1uLmdldCh0KSkmJnQhPWUuZGVmYXVsdFZhbHVlJiYoImJvb2xlYW4iPT10eXBlb2YgdCYmKHQqPTEpLHIucHVzaChlLkYrIj0iK3goIiIrdCkpKSl9KSwhMT09PW4uZ2V0KHRyKSYmci5wdXNoKCJucGE9MSIpLHIucHVzaCgiej0iK2UoKSksbi5zZXQoWXQsci5qb2luKCImIiksITApfWZ1bmN0aW9uIHh0KHQpe3ZhciBlPVB0KHQsUXQpOyFlJiZ0LmdldChKdCkmJihlPSJiZWFjb24iKTt2YXIgbj1QdCh0LEtuKSxyPVB0KHQsVW4pLGE9bnx8KHJ8fGd0KCExKSsiIikrIi9jb2xsZWN0IjsiZCI9PT1QdCh0LEpuKT8oYT1ufHwocnx8Z3QoITEpKyIiKSsiL2ovY29sbGVjdCIsZT10LmdldChZbil8fHZvaWQgMCxmdChhLFB0KHQsWXQpLGUsdC5aKFp0KSkpOmU/KG49UHQodCxZdCkscj0ocj10LlooWnQpKXx8VCwiaW1hZ2UiPT1lP2R0KGEsbixyKToieGhyIj09ZSYmcHQoYSxuLHIpfHwiYmVhY29uIj09ZSYmbXQoYSxuLHIpfHxodChhLG4scikpOmh0KGEsUHQodCxZdCksdC5aKFp0KSksYT1QdCh0LHZuKSxlPShhPXl0KGEpKS5oaXRjb3VudCxhLmhpdGNvdW50PWU/ZSsxOjEsYS5maXJzdF9oaXR8fChhLmZpcnN0X2hpdD0obmV3IERhdGUpLmdldFRpbWUoKSksYT1QdCh0LHZuKSxkZWxldGUgeXQoYSkucGVuZGluZ19leHBlcmltZW50cyx0LnNldChadCxULCEwKX1mdW5jdGlvbiBrdCh0KXt3dCgpLmV4cElkJiZ0LnNldChMZSx3dCgpLmV4cElkKSx3dCgpLmV4cFZhciYmdC5zZXQoSWUsd3QoKS5leHBWYXIpO3ZhciBlPVB0KHQsdm4pO2lmKGU9eXQoZSkucGVuZGluZ19leHBlcmltZW50cyl7dmFyIG49W107Zm9yKHIgaW4gZSllLmhhc093blByb3BlcnR5KHIpJiZlW3JdJiZuLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KHIpKyIuIitlbmNvZGVVUklDb21wb25lbnQoZVtyXSkpO3ZhciByPW4uam9pbigiISIpfWVsc2Ugcj12b2lkIDA7ciYmKChlPXQuZ2V0KFBlKSkmJihyPWUrIiEiK3IpLHQuc2V0KFBlLHIsITApKX1mdW5jdGlvbiBTdCgpe2lmKEkubmF2aWdhdG9yJiYicHJldmlldyI9PUkubmF2aWdhdG9yLmxvYWRQdXJwb3NlKXRocm93ImFib3J0In1mdW5jdGlvbiBDdCh0KXt2YXIgZT1JLmdhRGV2SWRzfHxbXTtpZih5KGUpKXt2YXIgbj10LmdldCgiJmRpZCIpO18obikmJjA8bi5sZW5ndGgmJihlPWUuY29uY2F0KG4uc3BsaXQoIiwiKSkpO2Zvcih2YXIgbj1bXSxyPTA7cjxlLmxlbmd0aDtyKyspTChuLGVbcl0pfHxuLnB1c2goZVtyXSk7MCE9bi5sZW5ndGgmJnQuc2V0KCImZGlkIixuLmpvaW4oIiwiKSwhMCl9fWZ1bmN0aW9uIGp0KHQpe2lmKCF0LmdldCh2bikpdGhyb3ciYWJvcnQifWZ1bmN0aW9uIE50KHQpe3RyeXt2YXIgZSxuO3QuZ2V0KEZuKXx8KHQuc2V0KEZuLCEwKSx0LmdldCgiJmd0bSIpKXx8KGU9dm9pZCAwLChlPSEoZT0hKGU9UnQoTigiZ3RtX2RlYnVnIikpPzI6ZSkmJk8oUC5yZWZlcnJlciwiaHR0cHM6Ly90YWdhc3Npc3RhbnQuZ29vZ2xlLmNvbS8iKT8zOmUpJiZMKFAuY29va2llLnNwbGl0KCI7ICIpLCJfX1RBR19BU1NJU1RBTlQ9eCIpPzQ6ZSl8fFJ0KFAuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGF0YS10YWctYXNzaXN0YW50LXByZXNlbnQiKSkmJihlPTUpLGUmJihJWyJnb29nbGUudGFnbWFuYWdlci5kZWJ1Z3VpMi5xdWV1ZSJdfHwoSVsiZ29vZ2xlLnRhZ21hbmFnZXIuZGVidWd1aTIucXVldWUiXT1bXSxqKCJodHRwczovL3d3dy5nb29nbGUtYW5hbHl0aWNzLmNvbS9kZWJ1Zy9ib290c3RyYXA/aWQ9Iit0LmdldCh2bikrIiZzcmM9TEVHQUNZJmNvbmQ9IitlKSksbj1QLmN1cnJlbnRTY3JpcHQsSVsiZ29vZ2xlLnRhZ21hbmFnZXIuZGVidWd1aTIucXVldWUiXS5wdXNoKHttZXNzYWdlVHlwZToiTEVHQUNZX0NPTlRBSU5FUl9TVEFSVElORyIsZGF0YTp7aWQ6dC5nZXQodm4pLHNjcmlwdFNvdXJjZTpuJiZuLnNyY3x8IiJ9fSkpKX1jYXRjaCh0KXt9fWZ1bmN0aW9uIFJ0KHQpe2lmKG51bGwhPXQmJjAhPT10Lmxlbmd0aCl7dD1OdW1iZXIodCk7dmFyIGU9RGF0ZS5ub3coKTtyZXR1cm4gdDxlKzNlNSYmZS05ZTU8dH19US5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe3RoaXMuTS5wdXNoKHQpfSxRLnByb3RvdHlwZS5EPWZ1bmN0aW9uKHQpe3RyeXtmb3IodmFyIGU9MDtlPHRoaXMuTS5sZW5ndGg7ZSsrKXt2YXIgbj10LmdldCh0aGlzLk1bZV0pO24mJmYobikmJm4uY2FsbChJLHQpfX1jYXRjaCh0KXt9KGU9dC5nZXQoWnQpKSE9VCYmZihlKSYmKHQuc2V0KFp0LFQsITApLHNldFRpbWVvdXQoZSwxMCkpfTt2YXIgQXQ9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5yb3VuZCgyMTQ3NDgzNjQ3Kk1hdGgucmFuZG9tKCkpfSxlPWZ1bmN0aW9uKCl7dHJ5e3ZhciB0PW5ldyBVaW50MzJBcnJheSgxKTtyZXR1cm4gSS5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHQpLDIxNDc0ODM2NDcmdFswXX1jYXRjaCh0KXtyZXR1cm4gQXQoKX19O2Z1bmN0aW9uIEx0KHQpe3ZhciBlPU10KHQsVWUpO2lmKDUwMDw9ZSYmZygxNSksInRyYW5zYWN0aW9uIiE9KG49UHQodCxXdCkpJiYiaXRlbSIhPW4pe3ZhciBuPU10KHQsJGUpLHI9KG5ldyBEYXRlKS5nZXRUaW1lKCksYT1NdCh0LEhlKTtpZigwPT1hJiZ0LnNldChIZSxyKSwwPChhPU1hdGgucm91bmQoMiooci1hKS8xZTMpKSYmKG49TWF0aC5taW4obithLDIwKSx0LnNldChIZSxyKSksbjw9MCl0aHJvdyJhYm9ydCI7dC5zZXQoJGUsLS1uKX10LnNldChVZSwrK2UpfWZ1bmN0aW9uIEl0KCl7dGhpcy5kYXRhPW5ldyBifUl0LnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7dmFyIGU9WHQodCksbj10aGlzLmRhdGEuZ2V0KHQpO3JldHVybiBlJiZudWxsPT1uJiYobj1mKGUuZGVmYXVsdFZhbHVlKT9lLmRlZmF1bHRWYWx1ZSgpOmUuZGVmYXVsdFZhbHVlKSxlJiZlLlo/ZS5aKHRoaXMsdCxuKTpufTt2YXIgUHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09KHQ9dC5nZXQoZSkpPyIiOiIiK3R9LE10PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PSh0PXQuZ2V0KGUpKXx8IiI9PT10PzA6TnVtYmVyKHQpfTtJdC5wcm90b3R5cGUuWj1mdW5jdGlvbih0KXtyZXR1cm4odD10aGlzLmdldCh0KSkmJmYodCk/dDpUfSxJdC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSxuKXtpZih0KWlmKCJvYmplY3QiPT10eXBlb2YgdClmb3IodmFyIHIgaW4gdCl0Lmhhc093blByb3BlcnR5KHIpJiYkdCh0aGlzLHIsdFtyXSxuKTtlbHNlICR0KHRoaXMsdCxlLG4pfTtmdW5jdGlvbiBEdCh0LGUsbixyLGEpe3JldHVybiB0PW5ldyBGdCh0LGUsbixyLGEpLEd0LnNldCh0Lm5hbWUsdCksdC5uYW1lfWZ1bmN0aW9uIHF0KHQsZSl7VnQucHVzaChbbmV3IFJlZ0V4cCgiXiIrdCsiJCIpLGVdKX1mdW5jdGlvbiBVdCh0LGUsbil7cmV0dXJuIER0KHQsZSxuLHZvaWQgMCxIdCl9ZnVuY3Rpb24gSHQoKXt9dmFyICR0PWZ1bmN0aW9uKHQsZSxuLHIpe251bGwhPW4mJmU9PT12biYmYWEudGVzdChuKTt2YXIgYT1YdChlKTthJiZhLm8/YS5vKHQsZSxuLHIpOnQuZGF0YS5zZXQoZSxuLHIpfSxHdD1uZXcgYixWdD1bXSxGdD1mdW5jdGlvbih0LGUsbixyLGEpe3RoaXMubmFtZT10LHRoaXMuRj1lLHRoaXMuWj1yLHRoaXMubz1hLHRoaXMuZGVmYXVsdFZhbHVlPW59LFh0PWZ1bmN0aW9uKHQpe3ZhciBlPUd0LmdldCh0KTtpZighZSlmb3IodmFyIG49MDtuPFZ0Lmxlbmd0aDtuKyspe3ZhciByPVZ0W25dLGE9clswXS5leGVjKHQpO2lmKGEpe2U9clsxXShhKSxHdC5zZXQoZS5uYW1lLGUpO2JyZWFrfX1yZXR1cm4gZX0sQnQ9VXQoImFwaVZlcnNpb24iLCJ2IiksenQ9VXQoImNsaWVudFZlcnNpb24iLCJfdiIpO0R0KCJhbm9ueW1pemVJcCIsImFpcCIpO3ZhciBLdD1EdCgiYWRTZW5zZUlkIiwiYSIpLFd0PUR0KCJoaXRUeXBlIiwidCIpLFp0PUR0KCJoaXRDYWxsYmFjayIpLFl0PUR0KCJoaXRQYXlsb2FkIik7RHQoIm5vbkludGVyYWN0aW9uIiwibmkiKSxEdCgiY3VycmVuY3lDb2RlIiwiY3UiKSxEdCgiZGF0YVNvdXJjZSIsImRzIik7dmFyIEp0PUR0KCJ1c2VCZWFjb24iLHZvaWQgMCwhMSksUXQ9RHQoInRyYW5zcG9ydCIpO0R0KCJzZXNzaW9uQ29udHJvbCIsInNjIiwiIiksRHQoInNlc3Npb25Hcm91cCIsInNnIiksRHQoInF1ZXVlVGltZSIsInF0Iik7dmFyIHRlPUR0KCJfcyIsIl9zIik7RHQoInNjcmVlbk5hbWUiLCJjZCIpO3ZhciBlZT1EdCgibG9jYXRpb24iLCJkbCIsIiIpLG5lPUR0KCJyZWZlcnJlciIsImRyIikscmU9RHQoInBhZ2UiLCJkcCIsIiIpO0R0KCJob3N0bmFtZSIsImRoIik7dmFyIGFlPUR0KCJsYW5ndWFnZSIsInVsIiksb2U9RHQoImVuY29kaW5nIiwiZGUiKTtEdCgidGl0bGUiLCJkdCIsZnVuY3Rpb24oKXtyZXR1cm4gUC50aXRsZXx8dm9pZCAwfSkscXQoImNvbnRlbnRHcm91cChbMC05XSspIixmdW5jdGlvbih0KXtyZXR1cm4gbmV3IEZ0KHRbMF0sImNnIit0WzFdKX0pO3ZhciBpZT1EdCgic2NyZWVuQ29sb3JzIiwic2QiKSxzZT1EdCgic2NyZWVuUmVzb2x1dGlvbiIsInNyIiksY2U9RHQoInZpZXdwb3J0U2l6ZSIsInZwIiksdWU9RHQoImphdmFFbmFibGVkIiwiamUiKSxsZT1EdCgiZmxhc2hWZXJzaW9uIiwiZmwiKTtEdCgiY2FtcGFpZ25JZCIsImNpIiksRHQoImNhbXBhaWduTmFtZSIsImNuIiksRHQoImNhbXBhaWduU291cmNlIiwiY3MiKSxEdCgiY2FtcGFpZ25NZWRpdW0iLCJjbSIpLER0KCJjYW1wYWlnbktleXdvcmQiLCJjayIpLER0KCJjYW1wYWlnbkNvbnRlbnQiLCJjYyIpO3ZhciBnZT1EdCgiZXZlbnRDYXRlZ29yeSIsImVjIiksaGU9RHQoImV2ZW50QWN0aW9uIiwiZWEiKSxmZT1EdCgiZXZlbnRMYWJlbCIsImVsIiksZGU9RHQoImV2ZW50VmFsdWUiLCJldiIpLHBlPUR0KCJzb2NpYWxOZXR3b3JrIiwic24iKSx2ZT1EdCgic29jaWFsQWN0aW9uIiwic2EiKSxtZT1EdCgic29jaWFsVGFyZ2V0Iiwic3QiKSxiZT1EdCgibDEiLCJwbHQiKSx3ZT1EdCgibDIiLCJwZHQiKSx5ZT1EdCgibDMiLCJkbnMiKSxfZT1EdCgibDQiLCJycnQiKSxPZT1EdCgibDUiLCJzcnQiKSxFZT1EdCgibDYiLCJ0Y3AiKSxUZT1EdCgibDciLCJkaXQiKSx4ZT1EdCgibDgiLCJjbHQiKSxrZT1EdCgibDkiLCJfZ3N0IiksU2U9RHQoImwxMCIsIl9nYnQiKSxDZT1EdCgibDExIiwiX2NzdCIpLGplPUR0KCJsMTIiLCJfY2J0IiksdD1EdCgidGltaW5nQ2F0ZWdvcnkiLCJ1dGMiKSxOZT1EdCgidGltaW5nVmFyIiwidXR2IiksUmU9RHQoInRpbWluZ0xhYmVsIiwidXRsIiksQWU9RHQoInRpbWluZ1ZhbHVlIiwidXR0Iik7RHQoImFwcE5hbWUiLCJhbiIpLER0KCJhcHBWZXJzaW9uIiwiYXYiLCIiKSxEdCgiYXBwSWQiLCJhaWQiLCIiKSxEdCgiYXBwSW5zdGFsbGVySWQiLCJhaWlkIiwiIiksRHQoImV4RGVzY3JpcHRpb24iLCJleGQiKSxEdCgiZXhGYXRhbCIsImV4ZiIpO3ZhciBMZT1EdCgiZXhwSWQiLCJ4aWQiKSxJZT1EdCgiZXhwVmFyIiwieHZhciIpLFBlPUR0KCJleHAiLCJleHAiKSxNZT1EdCgiX3V0bWEiLCJfdXRtYSIpLERlPUR0KCJfdXRteiIsIl91dG16IikscWU9RHQoIl91dG1odCIsIl91dG1odCIpLFVlPUR0KCJfaGMiLHZvaWQgMCwwKSxIZT1EdCgiX3RpIix2b2lkIDAsMCksJGU9RHQoIl90byIsdm9pZCAwLDIwKTtxdCgiZGltZW5zaW9uKFswLTldKykiLGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRnQodFswXSwiY2QiK3RbMV0pfSkscXQoIm1ldHJpYyhbMC05XSspIixmdW5jdGlvbih0KXtyZXR1cm4gbmV3IEZ0KHRbMF0sImNtIit0WzFdKX0pLER0KCJsaW5rZXJQYXJhbSIsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbih0KXtpZih0LmdldChHZSkpcmV0dXJuIGcoMzUpLGtyLmdlbmVyYXRlKE1yKHQpKTt2YXIgZT1QdCh0LGhuKSxuPVB0KHQsUm4pfHwiIjtyZXR1cm4gZT0iX2dhPTIuIit4KE5yKG4rZSwwKSsiLiIrbisiLSIrZSksdD0odD1Ecih0KSk/KGcoNDQpLCImX2dhYz0xLiIreChbTnIodC5xYSwwKSx0LnRpbWVzdGFtcCx0LnFhXS5qb2luKCIuIikpKToiIixlK3R9LEh0KTt2YXIgR2U9VXQoIl9jZDJsIix2b2lkIDAsITEpLFZlPUR0KCJ1c2FnZSIsIl91IiksRmU9RHQoIl91bSIpO0R0KCJmb3JjZVNTTCIsdm9pZCAwLHZvaWQgMCxmdW5jdGlvbigpe3JldHVybiBsfSxmdW5jdGlvbih0LGUsbil7ZygzNCksbD0hIW59KTt2YXIgWGU9RHQoIl9qMSIsImppZCIpLEJlPUR0KCJfajIiLCJnamlkIik7cXQoIlxcJiguKikiLGZ1bmN0aW9uKHQpe3ZhciBuLHIsZT1uZXcgRnQodFswXSx0WzFdKSxhPShuPXRbMF0uc3Vic3RyaW5nKDEpLEd0Lm1hcChmdW5jdGlvbih0LGUpe2UuRj09biYmKHI9ZSl9KSxyJiZyLm5hbWUpO3JldHVybiBhJiYoZS5aPWZ1bmN0aW9uKHQpe3JldHVybiB0LmdldChhKX0sZS5vPWZ1bmN0aW9uKHQsZSxuLHIpe3Quc2V0KGEsbixyKX0sZS5GPXZvaWQgMCksZX0pO3ZhciB6ZT1VdCgiX29vdCIpLEtlPUR0KCJwcmV2aWV3VGFzayIpLFdlPUR0KCJjaGVja1Byb3RvY29sVGFzayIpLFplPUR0KCJ2YWxpZGF0aW9uVGFzayIpLFllPUR0KCJjaGVja1N0b3JhZ2VUYXNrIiksSmU9RHQoImhpc3RvcnlJbXBvcnRUYXNrIiksUWU9RHQoInNhbXBsZXJUYXNrIiksdG49RHQoIl9ybHQiKSxlbj1EdCgiYnVpbGRIaXRUYXNrIiksbm49RHQoInNlbmRIaXRUYXNrIikscm49RHQoImNlVGFzayIpLGFuPUR0KCJkZXZJZFRhc2siKSxvbj1EdCgidGltaW5nVGFzayIpLHNuPUR0KCJkaXNwbGF5RmVhdHVyZXNUYXNrIiksY249RHQoImN1c3RvbVRhc2siKSx1bj1EdCgiZnBzQ3Jvc3NEb21haW5UYXNrIiksbG49VXQoIl9jdGEiKSxnbj1VdCgibmFtZSIpLGhuPVV0KCJjbGllbnRJZCIsImNpZCIpLGZuPVV0KCJjbGllbnRJZFRpbWUiKSxkbj1VdCgic3RvcmVkQ2xpZW50SWQiKSxwbj1EdCgidXNlcklkIiwidWlkIiksdm49VXQoInRyYWNraW5nSWQiLCJ0aWQiKSxtbj1VdCgiY29va2llTmFtZSIsdm9pZCAwLCJfZ2EiKSxibj1VdCgiY29va2llRG9tYWluIiksd249VXQoImNvb2tpZVBhdGgiLHZvaWQgMCwiLyIpLHluPVV0KCJjb29raWVFeHBpcmVzIix2b2lkIDAsNjMwNzJlMyksX249VXQoImNvb2tpZVVwZGF0ZSIsdm9pZCAwLCEwKSxPbj1VdCgiY29va2llRmxhZ3MiLHZvaWQgMCwiIiksRW49VXQoImxlZ2FjeUNvb2tpZURvbWFpbiIpLFRuPVV0KCJsZWdhY3lIaXN0b3J5SW1wb3J0Iix2b2lkIDAsITApLHhuPVV0KCJzdG9yYWdlIix2b2lkIDAsImNvb2tpZSIpLGtuPVV0KCJhbGxvd0xpbmtlciIsdm9pZCAwLCExKSxTbj1VdCgiYWxsb3dBbmNob3IiLHZvaWQgMCwhMCksQ249VXQoInNhbXBsZVJhdGUiLCJzZiIsMTAwKSxqbj1VdCgic2l0ZVNwZWVkU2FtcGxlUmF0ZSIsdm9pZCAwLDEpLE5uPVV0KCJhbHdheXNTZW5kUmVmZXJyZXIiLHZvaWQgMCwhMSksUm49VXQoIl9naWQiLCJfZ2lkIiksQW49VXQoIl9nY24iKSxMbj1VdCgidXNlQW1wQ2xpZW50SWQiKSxJbj1VdCgiX2djbGlkIiksUG49VXQoIl9ndCIpLE1uPVV0KCJfZ2UiLHZvaWQgMCw3Nzc2ZTYpLERuPVV0KCJfZ2Nsc3JjIikscW49VXQoInN0b3JlR2FjIix2b2lkIDAsITApLFVuPUR0KCJfeF8xOSIpLEhuPUR0KCJfZnBsYyIsIl9mcGxjIiksJG49VXQoIl9jcyIpLEduPVV0KCJfdXNlVXAiLHZvaWQgMCwhMSksVm49RHQoInVwIiwidXAiKSxGbj1EdCgiX3RhYyIsdm9pZCAwLCExKSxYbj1VdCgiX2dicmFpZCIpLEJuPVV0KCJfZ2J0Iiksem49VXQoIl9nYmUiLHZvaWQgMCw3Nzc2ZTYpLEtuPUR0KCJ0cmFuc3BvcnRVcmwiKSxXbj1EdCgiX3IiLCJfciIpLFpuPUR0KCJfc2xjIiwiX3NsYyIpLFluPUR0KCJfZHAiKSxKbj1EdCgiX2p0Iix2b2lkIDAsIm4iKSxRbj1EdCgiYWxsb3dBZEZlYXR1cmVzIix2b2lkIDAsITApLHRyPUR0KCJhbGxvd0FkUGVyc29uYWxpemF0aW9uU2lnbmFscyIsdm9pZCAwLCEwKTtmdW5jdGlvbiBlcihlLHQsbixyKXt0W2VdPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiByJiZnKHIpLG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfWNhdGNoKHQpe3Rocm93IGJ0KCJleGMiLGUsdCYmdC5uYW1lKSx0fX19ZnVuY3Rpb24gbnIodCl7dmFyIGU7KGU9KGU9UHQodCxVbikmJnQuZ2V0KEdlKSk/ISgoZT1rci5nZXQodC5nZXQoU24pKSkmJmUuX2ZwbGMpOmUpJiYhY3IodCkmJnQuc2V0KEhuLCIwIil9ZnVuY3Rpb24gcnIodCxlKXt2YXIgbj10W2VdOyhpc05hTihuKXx8MS8wPT1ufHxuPDApJiYodFtlXT12b2lkIDApfWZ1bmN0aW9uIGFyKHQpe2lmKCJjb29raWUiPT1QdCh0LHhuKSYmIWdyJiYoaHIodCksIWdyKSl0aHJvdyJhYm9ydCJ9ZnVuY3Rpb24gb3IodCl7dmFyIGUsbixyO3QuZ2V0KFRuKSYmKGU9UHQodCxibiksKHI9RXIoIl9fdXRtYSIsbj1QdCh0LEVuKXx8QSgpLGUpKSYmKGcoMTkpLHQuc2V0KHFlLChuZXcgRGF0ZSkuZ2V0VGltZSgpLCEwKSx0LnNldChNZSxyLlIpLChlPUVyKCJfX3V0bXoiLG4sZSkpJiZyLmhhc2g9PWUuaGFzaCYmdC5zZXQoRGUsZS5SKSkpfWZ1bmN0aW9uIGlyKHQsZSl7ZT1HKFB0KHQsZSkpO3ZhciBuPWJyKFB0KHQsYm4pKS5zcGxpdCgiLiIpLmxlbmd0aDtyZXR1cm4gMTwodD15cihQdCh0LHduKSkpJiYobis9Ii0iK3QpLGU/WyJHQTEiLG4sZV0uam9pbigiLiIpOiIifWZ1bmN0aW9uIHNyKCl7dmFyIHQ9W10sZT1BKCkuc3BsaXQoIi4iKTtpZig0PT1lLmxlbmd0aCl7dmFyIG49ZVtlLmxlbmd0aC0xXTtpZihwYXJzZUludChuLDEwKT09bilyZXR1cm5bIm5vbmUiXX1mb3Iobj1lLmxlbmd0aC0yOzA8PW47bi0tKXQucHVzaChlLnNsaWNlKG4pLmpvaW4oIi4iKSk7cmV0dXJuIGU9UC5sb2NhdGlvbi5ob3N0bmFtZSxGLnRlc3QoZSl8fFYudGVzdChlKXx8dC5wdXNoKCJub25lIiksdH12YXIgY3I9ZnVuY3Rpb24odCl7aWYoImNvb2tpZSI9PXQuZ2V0KHhuKSlyZXR1cm4gMDwodD1IKCJGUExDIikpLmxlbmd0aD90WzBdOnZvaWQgMH0sdXI9ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5taW4oTXQodCxqbiksMTAwKTtyZXR1cm4hKG8oUHQodCxobikpJTEwMD49ZSl9LGxyPWZ1bmN0aW9uKHQpe3ZhciBlLG49e307KGZ1bmN0aW9uKHQpe3ZhciBlPUkucGVyZm9ybWFuY2V8fEkud2Via2l0UGVyZm9ybWFuY2UsZTtpZighKGU9ZSYmZS50aW1pbmcpKXJldHVybiExO3ZhciBuPWUubmF2aWdhdGlvblN0YXJ0O3JldHVybiAwPT1uPyExOih0W2JlXT1lLmxvYWRFdmVudFN0YXJ0LW4sdFt5ZV09ZS5kb21haW5Mb29rdXBFbmQtZS5kb21haW5Mb29rdXBTdGFydCx0W0VlXT1lLmNvbm5lY3RFbmQtZS5jb25uZWN0U3RhcnQsdFtPZV09ZS5yZXNwb25zZVN0YXJ0LWUucmVxdWVzdFN0YXJ0LHRbd2VdPWUucmVzcG9uc2VFbmQtZS5yZXNwb25zZVN0YXJ0LHRbX2VdPWUuZmV0Y2hTdGFydC1uLHRbVGVdPWUuZG9tSW50ZXJhY3RpdmUtbix0W3hlXT1lLmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0LW4sdFtrZV09a2EuTC1uLHRbU2VdPWthLnlhLW4sSS5nb29nbGVfdGFnX21hbmFnZXImJkkuZ29vZ2xlX3RhZ19tYW5hZ2VyLl9saSYmKGU9SS5nb29nbGVfdGFnX21hbmFnZXIuX2xpLHRbQ2VdPWUuY3N0LHRbamVdPWUuY2J0KSwhMCl9KG4pfHxmdW5jdGlvbih0KXtpZihJLnRvcCE9SSlyZXR1cm4hMTt2YXIgZT1JLmV4dGVybmFsLG49ZSYmZS5vbmxvYWRUO3JldHVybigwPChuPTIxNDc0ODM2NDg8KG49ZSYmIWUuaXNWYWxpZExvYWRUaW1lP3ZvaWQgMDpuKT92b2lkIDA6bikmJmUuc2V0UGFnZVJlYWR5VGltZSgpLG51bGw9PW4pPyExOih0W2JlXT1uLCEwKX0obikpJiYobnVsbD09KGU9bltiZV0pfHwxLzA9PWV8fGlzTmFOKGUpfHwoMDxlPyhycihuLHllKSxycihuLEVlKSxycihuLE9lKSxycihuLHdlKSxycihuLF9lKSxycihuLFRlKSxycihuLHhlKSxycihuLGtlKSxycihuLFNlKSxycihuLENlKSxycihuLGplKSxNKGZ1bmN0aW9uKCl7dChuKX0sMTApKTpwKEksImxvYWQiLGZ1bmN0aW9uKCl7bHIodCl9LCExKSkpfSxncj0hMSxocj1mdW5jdGlvbih0KXt2YXIgZSxuLHIsYSxvLGkscyxjLHU7ImNvb2tpZSI9PVB0KHQseG4pJiYoIXQuZ2V0KF9uKSYmUHQodCxkbik9PVB0KHQsaG4pfHwoZT0xZTMqTXQodCx5biksZnIodCxobixtbixlKSx0LmRhdGEuc2V0KGRuLFB0KHQsaG4pKSksIXQuZ2V0KF9uKSYmZHIodCk9PVB0KHQsUm4pfHxmcih0LFJuLEFuLDg2NGU1KSx0LmdldChxbik/KGU9UHQodCxJbikpJiYobj0wPT09KG49TWF0aC5taW4oTXQodCxNbiksMWUzKk10KHQseW4pKSk/MDpNYXRoLm1pbihuLDFlMypNdCh0LFBuKStuLShuZXcgRGF0ZSkuZ2V0VGltZSgpKSx0LmRhdGEuc2V0KE1uLG4pLHI9e30sYT1QdCh0LFBuKSxvPVB0KHQsRG4pLGk9d3IoUHQodCx3bikpLHM9YnIoUHQodCxibikpLGM9UHQodCx2biksdT1QdCh0LE9uKSxvJiYiYXcuZHMiIT1vP3ImJihyLnVhPSEwKTooZT1bIjEiLGEsRyhlKV0uam9pbigiLiIpLDA8PW4mJihyJiYoci50YT0hMCksJCgiX2dhY18iK0coYyksZSxpLHMsYyxuLHUpKSksX3IocikpOmcoNzUpLHQuZ2V0KHFuKSYmKGU9UHQodCxYbikpJiYobj0wPT09KG49TWF0aC5taW4oTXQodCx6biksMWUzKk10KHQseW4pKSk/MDpNYXRoLm1pbihuLDFlMypNdCh0LEJuKStuLShuZXcgRGF0ZSkuZ2V0VGltZSgpKSx0LmRhdGEuc2V0KHpuLG4pLHI9e30sdT1QdCh0LEJuKSxpPXdyKFB0KHQsd24pKSxzPWJyKFB0KHQsYm4pKSxjPVB0KHQsdm4pLHQ9UHQodCxPbiksZT1bIjEiLHUsRyhlKV0uam9pbigiLiIpLDA8PW4mJihyJiYoci50YT0hMCksJCgiX2dhY19nYl8iK0coYyksZSxpLHMsYyxuLHQpKSxPcihyKSkpfSxmcj1mdW5jdGlvbih0LGUsbixyKXt2YXIgYT1pcih0LGUpO2lmKGEpe249UHQodCxuKTt2YXIgbz13cihQdCh0LHduKSksaT1icihQdCh0LGJuKSkscz1QdCh0LE9uKSxjPVB0KHQsdm4pO2lmKCJhdXRvIiE9aSkkKG4sYSxvLGksYyxyLHMpJiYoZ3I9ITApO2Vsc2V7ZygzMik7Zm9yKHZhciB1PXNyKCksbD0wO2w8dS5sZW5ndGg7bCsrKWlmKGk9dVtsXSx0LmRhdGEuc2V0KGJuLGkpLGE9aXIodCxlKSwkKG4sYSxvLGksYyxyLHMpKXJldHVybiB2b2lkKGdyPSEwKTt0LmRhdGEuc2V0KGJuLCJhdXRvIil9fX0sZHI9ZnVuY3Rpb24odCl7dmFyIGU9SChQdCh0LEFuKSk7cmV0dXJuIHByKHQsZSl9LHByPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZyKGUsUHQodCxibiksUHQodCx3bikpfSx2cj1mdW5jdGlvbih0LGUsbil7aWYodCYmISh0Lmxlbmd0aDwxKSl7Zm9yKHZhciByPVtdLGE9MDthPHQubGVuZ3RoO2ErKyl7dmFyIG89dFthXSxpPW8uc3BsaXQoIi4iKSxzPWkuc2hpZnQoKTsoaT0oIkdBMSI9PXN8fCIxIj09cykmJjE8aS5sZW5ndGg/KDE9PShvPWkuc2hpZnQoKS5zcGxpdCgiLSIpKS5sZW5ndGgmJihvWzFdPSIxIiksb1swXSo9MSxvWzFdKj0xLHtIOm8sczppLmpvaW4oIi4iKX0pOnUudGVzdChvKT97SDpbMCwwXSxzOm99OnZvaWQgMCkmJnIucHVzaChpKX1yZXR1cm4gMT09ci5sZW5ndGg/KGcoMTMpLHJbMF0ucyk6MCE9ci5sZW5ndGg/KGcoMTQpLDE9PShyPW1yKHIsYnIoZSkuc3BsaXQoIi4iKS5sZW5ndGgsMCkpLmxlbmd0aD9yWzBdLnM6KDE8KHI9bXIocix5cihuKSwxKSkubGVuZ3RoJiZnKDQxKSxyWzBdJiZyWzBdLnMpKTp2b2lkIGcoMTIpfWcoMTIpfSxtcj1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciByLGE9W10sbz1bXSxpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciBzPXRbaV07cy5IW25dPT1lP2EucHVzaChzKTpudWxsPT1yfHxzLkhbbl08cj8obz1bc10scj1zLkhbbl0pOnMuSFtuXT09ciYmby5wdXNoKHMpfXJldHVybiAwPGEubGVuZ3RoP2E6b30sYnI9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PXQuaW5kZXhPZigiLiIpP3Quc3Vic3RyKDEpOnR9LHdyPWZ1bmN0aW9uKHQpe3JldHVybiB0PzAhPSh0PTE8dC5sZW5ndGgmJnQubGFzdEluZGV4T2YoIi8iKT09dC5sZW5ndGgtMT90LnN1YnN0cigwLHQubGVuZ3RoLTEpOnQpLmluZGV4T2YoIi8iKT8iLyIrdDp0OiIvIn0seXI9ZnVuY3Rpb24odCl7cmV0dXJuIi8iPT0odD13cih0KSk/MTp0LnNwbGl0KCIvIikubGVuZ3RofSxfcj1mdW5jdGlvbih0KXt0LnRhJiZnKDc3KSx0Lm5hJiZnKDc0KSx0LnBhJiZnKDczKSx0LnVhJiZnKDY5KX0sT3I9ZnVuY3Rpb24odCl7dC50YSYmZyg4NSksdC5uYSYmZyg4NiksdC5wYSYmZyg4Nyl9O2Z1bmN0aW9uIEVyKHQsZSxuKXsibm9uZSI9PWUmJihlPSIiKTt2YXIgcj1bXSxhPUgodCk7dD0iX191dG1hIj09dD82OjI7Zm9yKHZhciBvPTA7bzxhLmxlbmd0aDtvKyspe3ZhciBpPSgiIithW29dKS5zcGxpdCgiLiIpO2kubGVuZ3RoPj10JiZyLnB1c2goe2hhc2g6aVswXSxSOmFbb10sTzppfSl9aWYoMCE9ci5sZW5ndGgpcmV0dXJuIDEhPXIubGVuZ3RoJiYoVHIoZSxyKXx8VHIobixyKXx8VHIobnVsbCxyKSl8fHJbMF19ZnVuY3Rpb24gVHIodCxlKXt2YXIgbjtudWxsPT10P249dD0xOihuPW8odCksdD1vKE8odCwiLiIpP3Quc3Vic3RyaW5nKDEpOiIuIit0KSk7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspaWYoZVtyXS5oYXNoPT1ufHxlW3JdLmhhc2g9PXQpcmV0dXJuIGVbcl19dmFyIHhyPW5ldyBSZWdFeHAoL15odHRwcz86XC9cLyhbXlwvOl0rKS8pLGtyPUkuZ29vZ2xlX3RhZ19kYXRhLmdsQnJpZGdlLFNyPVJlZ0V4cCgiKC4qKShbPyYjXSkoPzpfZ2E9W14mI10qKSg/OiY/KSguKikiKSxDcj1SZWdFeHAoIiguKikoWz8mI10pKD86X2dhYz1bXiYjXSopKD86Jj8pKC4qKSIpO2Z1bmN0aW9uIGpyKHQsZSl7dmFyIG49bmV3IERhdGUscj1JLm5hdmlnYXRvcixhPXIucGx1Z2luc3x8W107Zm9yKHQ9W3Qsci51c2VyQWdlbnQsbi5nZXRUaW1lem9uZU9mZnNldCgpLG4uZ2V0WWVhcigpLG4uZ2V0RGF0ZSgpLG4uZ2V0SG91cnMoKSxuLmdldE1pbnV0ZXMoKStlXSxlPTA7ZTxhLmxlbmd0aDsrK2UpdC5wdXNoKGFbZV0uZGVzY3JpcHRpb24pO3JldHVybiBvKHQuam9pbigiLiIpKX1mdW5jdGlvbiBOcih0LGUpe3ZhciBuPW5ldyBEYXRlLHI9SS5uYXZpZ2F0b3IsYT1uLmdldEhvdXJzKCkrTWF0aC5mbG9vcigobi5nZXRNaW51dGVzKCkrZSkvNjApO3JldHVybiBvKFt0LHIudXNlckFnZW50LHIubGFuZ3VhZ2V8fCIiLG4uZ2V0VGltZXpvbmVPZmZzZXQoKSxuLmdldFllYXIoKSxuLmdldERhdGUoKStNYXRoLmZsb29yKGEvMjQpLCgyNCthKSUyNCwoNjArbi5nZXRNaW51dGVzKCkrZSklNjBdLmpvaW4oIi4iKSl9ZnVuY3Rpb24gUnIodCl7Zyg0OCksdGhpcy50YXJnZXQ9dCx0aGlzLlQ9ITF9UnIucHJvdG90eXBlLmNhPWZ1bmN0aW9uKHQsZSl7aWYodCl7aWYodGhpcy50YXJnZXQuZ2V0KEdlKSlyZXR1cm4ga3IuZGVjb3JhdGUoTXIodGhpcy50YXJnZXQpLHQsZSk7aWYodC50YWdOYW1lKXtpZigiYSI9PXQudGFnTmFtZS50b0xvd2VyQ2FzZSgpKXJldHVybiB2b2lkKHQuaHJlZiYmKHQuaHJlZj1Bcih0aGlzLHQuaHJlZixlKSkpO2lmKCJmb3JtIj09dC50YWdOYW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJuIExyKHRoaXMsdCl9cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P0FyKHRoaXMsdCxlKTp2b2lkIDB9fTt2YXIgQXI9ZnVuY3Rpb24odCxlLG4peyhyPVNyLmV4ZWMoZSkpJiYzPD1yLmxlbmd0aCYmKGU9clsxXSsoclszXT9yWzJdK3JbM106IiIpKSwocj1Dci5leGVjKGUpKSYmMzw9ci5sZW5ndGgmJihlPXJbMV0rKHJbM10/clsyXStyWzNdOiIiKSksdD10LnRhcmdldC5nZXQoImxpbmtlclBhcmFtIik7dmFyIHI9ZS5pbmRleE9mKCI/IiksYT1lLmluZGV4T2YoIiMiKTtyZXR1cm4oZT0oZT1uP2UrKC0xPT1hPyIjIjoiJiIpK3Q6LTE9PWE/ZSsoLTE9PT1yPyI/IjoiJiIpK3Q6ZS5zdWJzdHJpbmcoMCxhKSsoLTE9PT1yfHxhPHI/Ij8iOiImIikrdCtlLnN1YnN0cmluZyhhKSkucmVwbGFjZSgvJitfZ2E9LywiJl9nYT0iKSkucmVwbGFjZShSZWdFeHAoIiYrX2dhYz0iKSwiJl9nYWM9Iil9LExyPWZ1bmN0aW9uKHQsZSl7aWYoZSYmZS5hY3Rpb24paWYoImdldCI9PWUubWV0aG9kLnRvTG93ZXJDYXNlKCkpe3Q9dC50YXJnZXQuZ2V0KCJsaW5rZXJQYXJhbSIpLnNwbGl0KCImIik7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe2Zvcih2YXIgcj0oYT10W25dLnNwbGl0KCI9IikpWzFdLGE9YVswXSxvPWUuY2hpbGROb2Rlc3x8W10saT0hMSxzPTA7czxvLmxlbmd0aDtzKyspaWYob1tzXS5uYW1lPT1hKXtvW3NdLnNldEF0dHJpYnV0ZSgidmFsdWUiLHIpLGk9ITA7YnJlYWt9aXx8KChvPVAuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksby5zZXRBdHRyaWJ1dGUoIm5hbWUiLGEpLG8uc2V0QXR0cmlidXRlKCJ2YWx1ZSIsciksZS5hcHBlbmRDaGlsZChvKSl9fWVsc2UicG9zdCI9PWUubWV0aG9kLnRvTG93ZXJDYXNlKCkmJihlLmFjdGlvbj1Bcih0LGUuYWN0aW9uKSl9O2Z1bmN0aW9uIElyKHQsZSl7aWYoZSE9UC5sb2NhdGlvbi5ob3N0bmFtZSlmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpZih0W25daW5zdGFuY2VvZiBSZWdFeHApe2lmKHRbbl0udGVzdChlKSlyZXR1cm4gMX1lbHNlIGlmKDA8PWUuaW5kZXhPZih0W25dKSlyZXR1cm4gMX1mdW5jdGlvbiBQcih0LGUpe3JldHVybiBlIT1qcih0LDApJiZlIT1qcih0LC0xKSYmZSE9anIodCwtMikmJmUhPU5yKHQsMCkmJmUhPU5yKHQsLTEpJiZlIT1Ocih0LC0yKX1mdW5jdGlvbiBNcih0KXt2YXIgZT1Ecih0KSxuPXt9O3JldHVybiBuLl9nYT10LmdldChobiksbi5fZ2lkPXQuZ2V0KFJuKXx8dm9pZCAwLG4uX2dhYz1lP1tlLnFhLGUudGltZXN0YW1wXS5qb2luKCIuIik6dm9pZCAwLGU9dC5nZXQoSG4pLHQ9Y3IodCksbi5fZnBsYz1lJiYiMCIhPT1lP2U6dCxufWZ1bmN0aW9uIERyKHQpe2Z1bmN0aW9uIGUodCl7cmV0dXJuIG51bGw9PXR8fCIiPT09dD8wOk51bWJlcih0KX12YXIgbj10LmdldChJbik7aWYobiYmdC5nZXQocW4pKXt2YXIgcj1lKHQuZ2V0KFBuKSk7aWYoISgxZTMqcitlKHQuZ2V0KE1uKSk8PShuZXcgRGF0ZSkuZ2V0VGltZSgpKSlyZXR1cm57dGltZXN0YW1wOnIscWE6bn07Zyg3Nil9fVJyLnByb3RvdHlwZS5TPWZ1bmN0aW9uKHIsYSx0KXtmdW5jdGlvbiBlKHQpe3RyeXt0PXR8fEkuZXZlbnQ7dDp7dmFyIGU9dC50YXJnZXR8fHQuc3JjRWxlbWVudDtmb3IodD0xMDA7ZSYmMDx0Oyl7aWYoZS5ocmVmJiZlLm5vZGVOYW1lLm1hdGNoKC9eYSg/OnJlYSk/JC9pKSl7dmFyIG49ZTticmVhayB0fWU9ZS5wYXJlbnROb2RlLHQtLX1uPXt9fSgiaHR0cDoiPT1uLnByb3RvY29sfHwiaHR0cHM6Ij09bi5wcm90b2NvbCkmJklyKHIsbi5ob3N0bmFtZXx8IiIpJiZuLmhyZWYmJihuLmhyZWY9QXIobyxuLmhyZWYsYSkpfWNhdGNoKHQpe2coMjYpfX12YXIgbz10aGlzO3RoaXMudGFyZ2V0LmdldChHZSk/a3IuYXV0byhmdW5jdGlvbigpe3JldHVybiBNcihvLnRhcmdldCl9LHIsYT8iZnJhZ21lbnQiOiIiLHQpOih0aGlzLlR8fCh0aGlzLlQ9ITAscChQLCJtb3VzZWRvd24iLGUsITEpLHAoUCwia2V5dXAiLGUsITEpKSx0JiZwKFAsInN1Ym1pdCIsZnVuY3Rpb24odCl7dmFyIGU7KHQ9KHQ9dHx8SS5ldmVudCkudGFyZ2V0fHx0LnNyY0VsZW1lbnQpJiZ0LmFjdGlvbiYmKChlPXQuYWN0aW9uLm1hdGNoKHhyKSkmJklyKHIsZVsxXSkmJkxyKG8sdCkpfSkpfSxSci5wcm90b3R5cGUuJD1mdW5jdGlvbih0KXt2YXIgZSxuOyF0fHx2b2lkIDAhPT0obj0oZT10aGlzKS50YXJnZXQuZ2V0KCRuKSkmJmtyLnBhc3N0aHJvdWdoKGZ1bmN0aW9uKCl7aWYobigiYW5hbHl0aWNzX3N0b3JhZ2UiKSlyZXR1cm57fTt2YXIgdD17fTtyZXR1cm4gdC5fZ2E9ZS50YXJnZXQuZ2V0KGhuKSx0Ll91cD0iMSIsdH0sMSwhMCl9O2Z1bmN0aW9uIHFyKHQsZSxuLHIpe249bnx8e307dmFyIGE9MSxvPXtpZDplLHR5cGU6YT1Wci50ZXN0KGUpPzI6YSxCOm4uZGF0YUxheWVyfHwiZGF0YUxheWVyIixHOiExfSxpPXZvaWQgMDtyZXR1cm4gdC5nZXQoIiZndG0iKT09ZSYmKG8uRz0hMCksMT09PWE/KG8uaWE9ISF0LmdldCgiYW5vbnltaXplSXAiKSxvLnN5bmM9ciwidDAiIT0oZT1TdHJpbmcodC5nZXQoIm5hbWUiKSkpJiYoby50YXJnZXQ9ZSksVShTdHJpbmcodC5nZXQoInRyYWNraW5nSWQiKSkpfHwoby5jbGllbnRJZD1TdHJpbmcodC5nZXQoaG4pKSxvLmthPU51bWJlcih0LmdldChmbikpLG49bi5wYWxpbmRyb21lP1hyOkZyLG49KG49UC5jb29raWUucmVwbGFjZSgvXnwoOyArKS9nLCI7IikubWF0Y2gobikpP24uc29ydCgpLmpvaW4oIiIpLnN1YnN0cmluZygxKTp2b2lkIDAsby5sYT1uLG8ucWE9UihQdCh0LGVlKSwiZ2NsaWQiKSkpOjI9PT1hJiYoby5jb250ZXh0PSJjIixpPXthbGxvd19nb29nbGVfc2lnbmFsczp0LmdldChRbiksYWxsb3dfYWRfcGVyc29uYWxpemF0aW9uX3NpZ25hbHM6dC5nZXQodHIpfSksS3IobyxpKSx6cihvKX1mdW5jdGlvbiBVcih0LGUpe3ZhciBuLHI7KHQ9dC5tb2RlbCkuZ2V0KCJkY0xvYWRlZCIpfHwoKG49bmV3IGkoaCh0KSkpLnNldCgyOSksdC5zZXQoRmUsbi5DKSwoZT1lfHx7fSlbbW5dJiYocj1HKGVbbW5dKSksZnVuY3Rpb24obix0KXt2YXIgcj10LmdldChlbik7dC5zZXQoZW4sZnVuY3Rpb24odCl7WXIobix0LFhlKSxZcihuLHQsQmUpO3ZhciBlPXIodCk7cmV0dXJuIEpyKG4sdCksZX0pO3ZhciBhPXQuZ2V0KG5uKTt0LnNldChubixmdW5jdGlvbih0KXt2YXIgZSxuPWEodCk7cmV0dXJuIFFyKHQpJiYoZyg4MCksZT17VTplYSh0LDEpLGdvb2dsZTplYSh0LDIpLGNvdW50OjB9LGZ0KCJodHRwczovL3N0YXRzLmcuZG91YmxlY2xpY2submV0L2ovY29sbGVjdCIsZS5VLGUpLHQuc2V0KFhlLCIiLCEwKSksbn0pfShlPW5ldyBacih0LHIpLHQpLHQuc2V0KCJkY0xvYWRlZCIsITApKX1mdW5jdGlvbiBIcih0KXt2YXIgZSxuO3QuZ2V0KCJkY0xvYWRlZCIpfHwiY29va2llIiE9dC5nZXQoeG4pfHwoZT1uZXcgWnIodCksWXIoZSx0LFhlKSxZcihlLHQsQmUpLEpyKGUsdCksZT1Rcih0KSxuPXRhKHQpLGUmJnQuc2V0KFduLDEsITApLG4mJnQuc2V0KFpuLDEsITApLChlfHxuKSYmKHQuc2V0KEpuLCJkIiwhMCksZyg3OSksdC5zZXQoWW4se1U6ZWEodCwxKSxnb29nbGU6ZWEodCwyKSxWOm5hKHQpLGNvdW50OjB9LCEwKSkpfWZ1bmN0aW9uICRyKHQpe2Z1bmN0aW9uIG4odCxlKXtvLm1vZGVsLmRhdGEuc2V0KHQsZSl9ZnVuY3Rpb24gZSh0LGUpe24odCxlKSxvLmZpbHRlcnMuYWRkKHQpfXZhciByLGEsbz10aGlzO3RoaXMubW9kZWw9bmV3IEl0LHRoaXMuZmlsdGVycz1uZXcgUSxuKGduLHRbZ25dKSxuKHZuLChyPXRbdm5dKT9yLnJlcGxhY2UoL15bXHNceGEwXSt8W1xzXHhhMF0rJC9nLCIiKToiIiksbihtbix0W21uXSksbihibix0W2JuXXx8QSgpKSxuKHduLHRbd25dKSxuKHluLHRbeW5dKSxuKF9uLHRbX25dKSxuKE9uLHRbT25dKSxuKEVuLHRbRW5dKSxuKFRuLHRbVG5dKSxuKGtuLHRba25dKSxuKFNuLHRbU25dKSxuKENuLHRbQ25dKSxuKGpuLHRbam5dKSxuKE5uLHRbTm5dKSxuKHhuLHRbeG5dKSxuKHBuLHRbcG5dKSxuKGZuLHRbZm5dKSxuKExuLHRbTG5dKSxuKHFuLHRbcW5dKSxuKEdlLHRbR2VdKSxuKFVuLHRbVW5dKSxuKEduLHRbR25dKSxuKCRuLHRbJG5dKSxuKEJ0LDEpLG4oenQsImo5NiIpLGUobG4sTnQpLGUoemUsT3QpLGUoY24sVCksZShLZSxTdCksZShXZSxFdCksZShaZSxqdCksZShZZSxhciksZShKZSxvciksZShRZSxfdCksZSh0bixMdCksZShybixrdCksZShhbixDdCksZShzbixIciksZSh1bixuciksZShlbixUdCksZShubix4dCksZShvbiwoYT10aGlzLGZ1bmN0aW9uKHQpe3ZhciBlLG4scjsicGFnZXZpZXciIT10LmdldChXdCl8fGEuSXx8KGEuST0hMCxlPXVyKHQpLG49MDxSKFB0KHQsZWUpLCJnY2xpZCIpLmxlbmd0aCxyPTA8UihQdCh0LGVlKSwid2JyYWlkIikubGVuZ3RoLChlfHxufHxyKSYmbHIoZnVuY3Rpb24odCl7ZSYmYS5zZW5kKCJ0aW1pbmciLHQpLChufHxyKSYmYS5zZW5kKCJhZHRpbWluZyIsdCl9KSl9KSksY2EodGhpcy5tb2RlbCksc2EodGhpcy5tb2RlbCx0W2huXSksdGhpcy5tb2RlbC5zZXQoS3QsKHQ9SS5nYUdsb2JhbD1JLmdhR2xvYmFsfHx7fSkuaGlkPXQuaGlkfHxBdCgpKX12YXIgR3I9L14oR1RNfE9QVCktW0EtWjAtOV0rJC8sVnI9L15HLVtBLVowLTldKyQvLEZyPS87X2dhZXhwPVteO10qL2csWHI9LzsoKF9fdXRtYT0pfChbXjs9XSs9R0FYP1xkK1wuKSlbXjtdKi9nLEJyPS9eaHR0cHM/OlwvXC9bXHdcLS5dK1wuZ29vZ2xlLmNvbSg6XGQrKT9cL29wdGltaXplXC9vcHQtbGF1bmNoXC5odG1sXD8uKiQvLHpyPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlKXtlJiYobis9IiYiK3QrIj0iK3goZSkpfXZhciBuPVoodC50eXBlKSt4KHQuaWQpO3JldHVybiJkYXRhTGF5ZXIiIT10LkImJmUoImwiLHQuQiksZSgiY3giLHQuY29udGV4dCksZSgidCIsdC50YXJnZXQpLGUoImNpZCIsdC5jbGllbnRJZCksZSgiY2lkdCIsdC5rYSksZSgiZ2FjIix0LmxhKSxlKCJhaXAiLHQuaWEpLHQuc3luYyYmZSgibSIsInN5bmMiKSxlKCJjeWNsZSIsdC5HKSx0LnFhJiZlKCJnY2xpZCIsdC5xYSksQnIudGVzdChQLnJlZmVycmVyKSYmZSgiY2IiLFN0cmluZyhBdCgpKSksbn0sS3I9ZnVuY3Rpb24ocix0KXt2YXIgZT0obmV3IERhdGUpLmdldFRpbWUoKTtJW3IuQl09SVtyLkJdfHxbXSxlPXsiZ3RtLnN0YXJ0IjplfSxyLnN5bmN8fChlLmV2ZW50PSJndG0uanMiKSxJW3IuQl0ucHVzaChlKSwyPT09ci50eXBlJiZmdW5jdGlvbih0LGUsbil7SVtyLkJdLnB1c2goYXJndW1lbnRzKX0oImNvbmZpZyIsci5pZCx0KX0sV3I9e30sWnI9ZnVuY3Rpb24odCxlKXtlPWV8fCgoZT1QdCh0LGduKSkmJiJ0MCIhPWU/cmEudGVzdChlKT8iX2dhdF8iK0coUHQodCx2bikpOiJfZ2F0XyIrRyhlKToiX2dhdCIpLHRoaXMuWT1lfSxZcj1mdW5jdGlvbih0LGUsbil7ITE9PT1lLmdldChRbil8fGUuZ2V0KG4pfHwoIjEiPT1IKHQuWSlbMF0/ZS5zZXQobiwiIiwhMCk6ZS5zZXQobiwiIitBdCgpLCEwKSl9LEpyPWZ1bmN0aW9uKHQsZSl7UXIoZSkmJiQodC5ZLCIxIixQdChlLHduKSxQdChlLGJuKSxQdChlLHZuKSw2ZTQsUHQoZSxPbikpfSxRcj1mdW5jdGlvbih0KXtyZXR1cm4hIXQuZ2V0KFhlKSYmITEhPT10LmdldChRbil9LHRhPWZ1bmN0aW9uKHQpe3JldHVybiFXcltQdCh0LHZuKV0mJnZvaWQgMD09PXQuZ2V0KCImZ3RtIikmJnZvaWQgMD09PXQuZ2V0KFF0KSYmdm9pZCAwPT09dC5nZXQoS24pJiZ2b2lkIDA9PT10LmdldChVbil9LGVhPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbih0KXtYdCh0KS5GJiZyLnNldChYdCh0KS5GLGUuZ2V0KHQpKX12YXIgcj1uZXcgYjtuKEJ0KSxuKHp0KSxuKHZuKSxuKGhuKSxuKFhlKSwxPT10JiYobihwbiksbihCZSksbihSbikpLCExPT09ZS5nZXQodHIpJiZyLnNldCgibnBhIiwiMSIpLHIuc2V0KFh0KFZlKS5GLHcoZSkpO3ZhciBhPSIiO3JldHVybiByLm1hcChmdW5jdGlvbih0LGUpe2ErPXgodCkrIj0iLGErPXgoIiIrZSkrIiYifSksYSs9Ino9IitBdCgpLDE9PXQ/YT0idD1kYyZhaXA9MSZfcj0zJiIrYToyPT10JiYoYT0idD1zciZhaXA9MSZfcj00JnNsZl9yZD0xJiIrYSksYX0sbmE9ZnVuY3Rpb24obil7aWYodGEobikpcmV0dXJuIFdyW1B0KG4sdm4pXT0hMCxmdW5jdGlvbih0KXt2YXIgZTt0JiYhV3JbdF0mJihlPXFyKG4sdCksaihlKSxXclt0XT0hMCl9fSxyYT0vXmd0bVxkKyQvLGFhPS9eKFVBfFlUfE1PfEdQKS0oXGQrKS0oXGQrKSQvOyRyLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubW9kZWwuZ2V0KHQpfSwkci5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dGhpcy5tb2RlbC5zZXQodCxlKX0sJHIucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24odCl7dmFyIGUsbjthcmd1bWVudHMubGVuZ3RoPDF8fChuPSJzdHJpbmciPT10eXBlb2YgdD8oZT10LFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTooZT10JiZ0W1d0XSxhcmd1bWVudHMpLGUmJigobj1tKHVhW2VdfHxbXSxuKSlbV3RdPWUsdGhpcy5tb2RlbC5zZXQobix2b2lkIDAsITApLHRoaXMuZmlsdGVycy5EKHRoaXMubW9kZWwpLHRoaXMubW9kZWwuZGF0YS5tPXt9KSl9LCRyLnByb3RvdHlwZS5tYT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7bWEodCxuLGUpfHwod2EodCxmdW5jdGlvbigpe21hKHQsbixlKX0pLGJhKFN0cmluZyhuLmdldChnbikpLHQsdm9pZCAwLGUsITApKX07ZnVuY3Rpb24gb2EodCl7cmV0dXJuInByZXJlbmRlciIhPVAudmlzaWJpbGl0eVN0YXRlJiYodCgpLCEwKX1mdW5jdGlvbiBpYSh0KXtpZihmKHRbMF0pKXRoaXMudT10WzBdO2Vsc2V7dmFyIGU9bGEuZXhlYyh0WzBdKTtpZihudWxsIT1lJiY0PT1lLmxlbmd0aCYmKHRoaXMuZGE9ZVsxXXx8InQwIix0aGlzLks9ZVsyXXx8IiIsdGhpcy5tZXRob2ROYW1lPWVbM10sdGhpcy5hYT1bXS5zbGljZS5jYWxsKHQsMSksdGhpcy5LfHwodGhpcy5BPSJjcmVhdGUiPT10aGlzLm1ldGhvZE5hbWUsdGhpcy5pPSJyZXF1aXJlIj09dGhpcy5tZXRob2ROYW1lLHRoaXMuZz0icHJvdmlkZSI9PXRoaXMubWV0aG9kTmFtZSx0aGlzLmJhPSJyZW1vdmUiPT10aGlzLm1ldGhvZE5hbWUpLHRoaXMuaSYmKDM8PXRoaXMuYWEubGVuZ3RoPyh0aGlzLlg9dGhpcy5hYVsxXSx0aGlzLlc9dGhpcy5hYVsyXSk6dGhpcy5hYVsxXSYmKF8odGhpcy5hYVsxXSk/dGhpcy5YPXRoaXMuYWFbMV06dGhpcy5XPXRoaXMuYWFbMV0pKSksZT10WzFdLHQ9dFsyXSwhdGhpcy5tZXRob2ROYW1lKXRocm93ImFib3J0IjtpZih0aGlzLmkmJighXyhlKXx8IiI9PWUpKXRocm93ImFib3J0IjtpZih0aGlzLmcmJighXyhlKXx8IiI9PWV8fCFmKHQpKSl0aHJvdyJhYm9ydCI7aWYoZ2EodGhpcy5kYSl8fGdhKHRoaXMuSykpdGhyb3ciYWJvcnQiO2lmKHRoaXMuZyYmInQwIiE9dGhpcy5kYSl0aHJvdyJhYm9ydCJ9fXZhciBzYT1mdW5jdGlvbih0LGUpe3ZhciBuLHI9UHQodCxtbik7aWYodC5kYXRhLnNldChBbiwiX2dhIj09cj8iX2dpZCI6cisiX2dpZCIpLCJjb29raWUiPT1QdCh0LHhuKSYmKGdyPSExLHI9SChQdCh0LG1uKSksKHI9cHIodCxyKSl8fChyPVB0KHQsYm4pLHI9bnVsbCE9KHI9RXIoIl9fdXRtYSIsbj1QdCh0LEVuKXx8QSgpLHIpKT8oZygxMCksci5PWzFdKyIuIityLk9bMl0pOnZvaWQgMCksciYmKGdyPSEwKSwocj0obj0obj1yJiYhdC5nZXQoX24pKT8yPT0obj1yLnNwbGl0KCIuIikpLmxlbmd0aCYmKCEhKG49TnVtYmVyKG5bMV0pKSYmbisobz1NdCh0LHluKSk8KG5ldyBEYXRlKS5nZXRUaW1lKCkvMWUzKTpuKT92b2lkIDA6cikmJih0LmRhdGEuc2V0KGRuLHIpLHQuZGF0YS5zZXQoaG4sciksKHI9ZHIodCkpJiZ0LmRhdGEuc2V0KFJuLHIpKSx0LmdldChxbikmJihyPXQuZ2V0KEluKSxuPXQuZ2V0KERuKSwhcnx8biYmImF3LmRzIiE9bikmJihyPXt9LG49KFA/QihyKTp7fSlbUHQodCx2bildLF9yKHIpLG4mJjAhPW4ubGVuZ3RoJiYocj1uWzBdLHQuZGF0YS5zZXQoUG4sci50aW1lc3RhbXAvMWUzKSx0LmRhdGEuc2V0KEluLHIucWEpKSksdC5nZXQocW4pJiYocj10LmdldChYbiksbj17fSxvPShQP0IobiwiX2dhY19nYiIsITApOnt9KVtQdCh0LHZuKV0sT3IobiksbyYmMCE9by5sZW5ndGgmJihvPShuPW9bMF0pLnFhLHImJnIhPT1vfHwobi5sYWJlbHMmJm4ubGFiZWxzLmxlbmd0aCYmKG8rPSIuIituLmxhYmVscy5qb2luKCIuIikpLHQuZGF0YS5zZXQoQm4sbi50aW1lc3RhbXAvMWUzKSx0LmRhdGEuc2V0KFhuLG8pKSkpKSx0LmdldChfbikpe3I9TigiX2dhIiwhIXQuZ2V0KFNuKSk7dmFyIGE9TigiX2dsIiwhIXQuZ2V0KFNuKSksbz0obj1rci5nZXQodC5nZXQoU24pKSkuX2dhO2EmJjA8YS5pbmRleE9mKCJfZ2EqIikmJiFvJiZnKDMwKSxhPSEoZXx8IXQuZ2V0KEduKSkmJih2b2lkIDAhPT0oYT10LmdldCgkbikpJiYhYSgiYW5hbHl0aWNzX3N0b3JhZ2UiKSYmKGcoODQpLHQuZGF0YS5zZXQoVm4sMSksISEoYT0oYT1uLl91cCk/ISEoYT14ci5leGVjKFAucmVmZXJyZXIpKSYmKGE9YVsxXSwoaT1QLmxvY2F0aW9uLmhvc3RuYW1lKT09PWF8fDA8PWkuaW5kZXhPZigiLiIrYSl8fDA8PWEuaW5kZXhPZigiLiIraSkpOmEpKSk7dmFyIGk9bi5nY2xpZCxzPW4uX2dhYztpZihyfHxvfHxpfHxzKWlmKHImJm8mJmcoMzYpLHQuZ2V0KGtuKXx8Vyh0LmdldChMbikpfHxhKXtpZihvJiYoZygzOCksdC5kYXRhLnNldChobixvKSxuLl9naWQmJihnKDUxKSx0LmRhdGEuc2V0KFJuLG4uX2dpZCkpKSxpPyhnKDgyKSx0LmRhdGEuc2V0KEluLGkpLG4uZ2Nsc3JjJiZ0LmRhdGEuc2V0KERuLG4uZ2Nsc3JjKSk6cyYmKG89cy5zcGxpdCgiLiIpKSYmMj09PW8ubGVuZ3RoJiYoZygzNyksdC5kYXRhLnNldChJbixvWzBdKSx0LmRhdGEuc2V0KFBuLG9bMV0pKSwobj1uLl9mcGxjKSYmUHQodCxVbikmJihnKDgzKSx0LmRhdGEuc2V0KEhuLG4pKSxyKXQ6aWYobj1yLmluZGV4T2YoIi4iKSwtMT09bilnKDIyKTtlbHNle2lmKG89ci5zdWJzdHJpbmcoMCxuKSxuPShhPXIuc3Vic3RyaW5nKG4rMSkpLmluZGV4T2YoIi4iKSxyPWEuc3Vic3RyaW5nKDAsbiksYT1hLnN1YnN0cmluZyhuKzEpLCIxIj09byl7aWYoUHIobj1hLHIpKXtnKDIzKTticmVhayB0fX1lbHNle2lmKCIyIiE9byl7ZygyMik7YnJlYWsgdH1pZihvPSIiLG49MDwobj1hLmluZGV4T2YoIi0iKSk/KG89YS5zdWJzdHJpbmcoMCxuKSxhLnN1YnN0cmluZyhuKzEpKTphLnN1YnN0cmluZygxKSxQcihvK24scikpe2coNTMpO2JyZWFrIHR9byYmKGcoMiksdC5kYXRhLnNldChSbixvKSl9ZygxMSksdC5kYXRhLnNldChobixuKSwocj1OKCJfZ2FjIiwhIXQuZ2V0KFNuKSkpJiYoIjEiIT0ocj1yLnNwbGl0KCIuIikpWzBdfHw0IT1yLmxlbmd0aD9nKDcyKTpQcihyWzNdLHJbMV0pP2coNzEpOih0LmRhdGEuc2V0KEluLHJbM10pLHQuZGF0YS5zZXQoUG4sclsyXSksZyg3MCkpKX19ZWxzZSBnKDIxKX1lJiYoZyg5KSx0LmRhdGEuc2V0KGhuLHgoZSkpKSx0LmdldChobil8fCgoZT0oIShlPUkuZ2FHbG9iYWwpfHwhZS5mcm9tX2Nvb2tpZXx8ImNvb2tpZSI9PT1QdCh0LHhuKSkmJihlPWUmJmUudmlkKSYmLTEhPT1lLnNlYXJjaChjKT9lOnZvaWQgMCk/KGcoMTcpLHQuZGF0YS5zZXQoaG4sZSkpOihnKDgpLHQuZGF0YS5zZXQoaG4sZCgpKSkpLHQuZ2V0KFJuKXx8KGcoMyksdC5kYXRhLnNldChSbixkKCkpKSxocih0KSxlPUkuZ2FHbG9iYWw9SS5nYUdsb2JhbHx8e30sdD0ocj1QdCh0LGhuKSk9PT1QdCh0LGRuKSwobnVsbD09ZS52aWR8fHQmJiFlLmZyb21fY29va2llKSYmKGUudmlkPXIsZS5mcm9tX2Nvb2tpZT10KX0sY2E9ZnVuY3Rpb24odCl7dmFyIGU9SS5uYXZpZ2F0b3Isbj1JLnNjcmVlbixyPVAubG9jYXRpb24sYT10LnNldDt0Ont2YXIgbz0hIXQuZ2V0KE5uKSxpPSEhdC5nZXQoTG4pLHM9UC5yZWZlcnJlcjtpZigvXihodHRwcz98YW5kcm9pZC1hcHApOlwvXC8vaS50ZXN0KHMpKXtpZihvKWJyZWFrIHQ7aWYobz0iLy8iK1AubG9jYXRpb24uaG9zdG5hbWUsIXYocyxvKSl7aWYoaSYmKGk9by5yZXBsYWNlKC9cLi9nLCItIikrIi5jZG4uYW1wcHJvamVjdC5vcmciLHYocyxpKSkpe3M9dm9pZCAwO2JyZWFrIHR9YnJlYWsgdH19cz12b2lkIDB9aWYoYS5jYWxsKHQsbmUscyksciYmKCIvIiE9KGE9ci5wYXRobmFtZXx8IiIpLmNoYXJBdCgwKSYmKGcoMzEpLGE9Ii8iK2EpLHQuc2V0KGVlLHIucHJvdG9jb2wrIi8vIityLmhvc3RuYW1lK2Erci5zZWFyY2gpKSxuJiZ0LnNldChzZSxuLndpZHRoKyJ4IituLmhlaWdodCksbiYmdC5zZXQoaWUsbi5jb2xvckRlcHRoKyItYml0Iiksbj1QLmRvY3VtZW50RWxlbWVudCxzPShhPVAuYm9keSkmJmEuY2xpZW50V2lkdGgmJmEuY2xpZW50SGVpZ2h0LGk9W10sbiYmbi5jbGllbnRXaWR0aCYmbi5jbGllbnRIZWlnaHQmJigiQ1NTMUNvbXBhdCI9PT1QLmNvbXBhdE1vZGV8fCFzKT9pPVtuLmNsaWVudFdpZHRoLG4uY2xpZW50SGVpZ2h0XTpzJiYoaT1bYS5jbGllbnRXaWR0aCxhLmNsaWVudEhlaWdodF0pLG49aVswXTw9MHx8aVsxXTw9MD8iIjppLmpvaW4oIngiKSx0LnNldChjZSxuKSxuPXQuc2V0LChhPShhPUkubmF2aWdhdG9yKT9hLnBsdWdpbnM6bnVsbCkmJmEubGVuZ3RoKWZvcihzPTA7czxhLmxlbmd0aCYmIXU7cysrKS0xPChpPWFbc10pLm5hbWUuaW5kZXhPZigiU2hvY2t3YXZlIEZsYXNoIikmJih1PWkuZGVzY3JpcHRpb24pO2lmKCF1KXRyeXt2YXIgYz1uZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2guNyIpLHU9Yy5HZXRWYXJpYWJsZSgiJHZlcnNpb24iKX1jYXRjaCh0KXt9aWYoIXUpdHJ5e2M9bmV3IEFjdGl2ZVhPYmplY3QoIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoLjYiKSx1PSJXSU4gNiwwLDIxLDAiLGMuQWxsb3dTY3JpcHRBY2Nlc3M9ImFsd2F5cyIsdT1jLkdldFZhcmlhYmxlKCIkdmVyc2lvbiIpfWNhdGNoKHQpe31pZighdSl0cnl7dT0oYz1uZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2giKSkuR2V0VmFyaWFibGUoIiR2ZXJzaW9uIil9Y2F0Y2godCl7fWlmKHUmJihjPXUubWF0Y2goL1tcZF0rL2cpKSYmMzw9Yy5sZW5ndGgmJih1PWNbMF0rIi4iK2NbMV0rIiByIitjWzJdKSxuLmNhbGwodCxsZSx1fHx2b2lkIDApLHQuc2V0KG9lLFAuY2hhcmFjdGVyU2V0fHxQLmNoYXJzZXQpLHQuc2V0KHVlLGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmphdmFFbmFibGVkJiZlLmphdmFFbmFibGVkKCl8fCExKSx0LnNldChhZSwoZSYmKGUubGFuZ3VhZ2V8fGUuYnJvd3Nlckxhbmd1YWdlKXx8IiIpLnRvTG93ZXJDYXNlKCkpLHQuZGF0YS5zZXQoSW4sTigiZ2NsaWQiLCEwKSksdC5kYXRhLnNldChEbixOKCJnY2xzcmMiLCEwKSksdC5kYXRhLnNldChQbixNYXRoLnJvdW5kKChuZXcgRGF0ZSkuZ2V0VGltZSgpLzFlMykpLHQuZ2V0KEluKXx8KHQuZGF0YS5zZXQoWG4sTigid2JyYWlkIiwhMCkpLHQuZGF0YS5zZXQoQm4sTWF0aC5yb3VuZCgobmV3IERhdGUpLmdldFRpbWUoKS8xZTMpKSksciYmdC5nZXQoU24pJiYoZT1QLmxvY2F0aW9uLmhhc2gpKXtmb3IoZT1lLnNwbGl0KC9bPyYjXSsvKSxyPVtdLHU9MDt1PGUubGVuZ3RoOysrdSkoTyhlW3VdLCJ1dG1faWQiKXx8TyhlW3VdLCJ1dG1fY2FtcGFpZ24iKXx8TyhlW3VdLCJ1dG1fc291cmNlIil8fE8oZVt1XSwidXRtX21lZGl1bSIpfHxPKGVbdV0sInV0bV90ZXJtIil8fE8oZVt1XSwidXRtX2NvbnRlbnQiKXx8TyhlW3VdLCJnY2xpZCIpfHxPKGVbdV0sImRjbGlkIil8fE8oZVt1XSwiZ2Nsc3JjIil8fE8oZVt1XSwid2JyYWlkIikpJiZyLnB1c2goZVt1XSk7MDxyLmxlbmd0aCYmKGU9IiMiK3Iuam9pbigiJiIpLHQuc2V0KGVlLHQuZ2V0KGVlKStlKSl9fSx1YT17cGFnZXZpZXc6W3JlXSxldmVudDpbZ2UsaGUsZmUsZGVdLHNvY2lhbDpbcGUsdmUsbWVdLHRpbWluZzpbdCxOZSxBZSxSZV19LE5lPWZ1bmN0aW9uKG4pe3ZhciByLGE7b2Eobil8fChnKDE2KSxyPSExLHAoUCwidmlzaWJpbGl0eWNoYW5nZSIsYT1mdW5jdGlvbigpe3ZhciB0LGU7IXImJm9hKG4pJiYocj0hMCx0PWEsKGU9UCkucmVtb3ZlRXZlbnRMaXN0ZW5lcj9lLnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLHQsITEpOmUuZGV0YWNoRXZlbnQmJmUuZGV0YWNoRXZlbnQoIm9udmlzaWJpbGl0eWNoYW5nZSIsdCkpfSkpfSxsYT0vXig/OihcdyspXC4pPyg/OihcdyspOik/KFx3KykkLztmdW5jdGlvbiBnYSh0KXtyZXR1cm4gMDw9dC5pbmRleE9mKCIuIil8fDA8PXQuaW5kZXhPZigiOiIpfWZ1bmN0aW9uIGhhKHQsZSl7ZmEuc2V0KHQsZSksZT1wYS5nZXQodCl8fFtdO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKWVbbl0oKTtwYS5zZXQodCxbXSl9dmFyIGZhPW5ldyBiLGRhPW5ldyBiLHBhPW5ldyBiLHZhPXtlYzo0NSxlY29tbWVyY2U6NDYsbGlua2lkOjQ3fSxtYT1mdW5jdGlvbih0LGUsbil7ZT09a2F8fGUuZ2V0KGduKTt2YXIgcj1mYS5nZXQodCk7cmV0dXJuISFmKHIpJiYoZS5wbHVnaW5zXz1lLnBsdWdpbnNffHxuZXcgYixlLnBsdWdpbnNfLmdldCh0KXx8ZS5wbHVnaW5zXy5zZXQodCxuZXcgcihlLG58fHt9KSksITApfSxiYT1mdW5jdGlvbih0LGUsbixyLGEpe2lmKCFmKGZhLmdldChlKSkmJiFkYS5nZXQoZSkpe3ZhLmhhc093blByb3BlcnR5KGUpJiZnKHZhW2VdKTt2YXIgbyxpPXZvaWQgMDtpZihHci50ZXN0KGUpKXtpZihnKDUyKSwhKHQ9a2Euaih0KSkpcmV0dXJuITA7bj1xcih0Lm1vZGVsLGUscixhKSxpPWZ1bmN0aW9uKCl7eGEuRChbInByb3ZpZGUiLGUsZnVuY3Rpb24oKXt9XSk7dmFyIHQ9SVtyJiZyLmRhdGFMYXllcnx8ImRhdGFMYXllciJdO3QmJnQuaGlkZSYmZih0LmhpZGUuZW5kKSYmdC5oaWRlW2VdJiYodC5oaWRlLmVuZCgpLHQuaGlkZS5lbmQ9dm9pZCAwKX19IW4mJnZhLmhhc093blByb3BlcnR5KGUpPyhnKDM5KSxuPWUrIi5qcyIpOmcoNDMpLG4mJihyJiYobz1yW1VuXSksXyhvKXx8KG89dm9pZCAwKSx0PUVhKFRhKG4sbykpLCFvfHxfYSh0LnByb3RvY29sKSYmeWEodCl8fCh0PUVhKFRhKG4pKSksX2EodC5wcm90b2NvbCkmJnlhKHQpJiYoaih0LnVybCx2b2lkIDAsYSx2b2lkIDAsaSksZGEuc2V0KGUsITApKSl9fSx3YT1mdW5jdGlvbih0LGUpe3ZhciBuPXBhLmdldCh0KXx8W107bi5wdXNoKGUpLHBhLnNldCh0LG4pfSx5YT1mdW5jdGlvbih0KXt2YXIgZT1FYShQLmxvY2F0aW9uLmhyZWYpO3JldHVybiEoIU8odC51cmwsWigxKSkmJiFPKHQudXJsLFooMikpKXx8ISh0LnF1ZXJ5fHwwPD10LnVybC5pbmRleE9mKCI/Iil8fDA8PXQucGF0aC5pbmRleE9mKCI6Ly8iKSkmJighISh0Lmhvc3Q9PWUuaG9zdCYmdC5wb3J0PT1lLnBvcnR8fG4mJigoZT1QLmNyZWF0ZUVsZW1lbnQoImEiKSkuaHJlZj1uLGU9T2EoZSksdC5ob3N0PT09ZVswXSYmdC5wb3J0PT09ZVsxXSkpfHwoZT0iaHR0cDoiPT10LnByb3RvY29sPzgwOjQ0MywhKCJ3d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20iIT10Lmhvc3R8fCh0LnBvcnR8fGUpIT1lfHwhTyh0LnBhdGgsIi9wbHVnaW5zLyIpKSkpfSxfYT1mdW5jdGlvbih0KXt2YXIgZT1QLmxvY2F0aW9uLnByb3RvY29sO3JldHVybiJodHRwczoiPT10fHx0PT1lfHwiaHR0cDoiPT10JiYiaHR0cDoiPT1lfSxPYT1mdW5jdGlvbih0KXt2YXIgZT0wPD0obj10Lmhvc3RuYW1lfHwiIikuaW5kZXhPZigiXSIpLG49bi5zcGxpdChlPyJdIjoiOiIpWzBdLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGUmJihuKz0iXSIpLGU9KHQucHJvdG9jb2x8fCIiKS50b0xvd2VyQ2FzZSgpLGU9K3QucG9ydHx8KCJodHRwOiI9PWU/ODA6Imh0dHBzOiI9PWU/NDQzOiIiKSx0PXQucGF0aG5hbWV8fCIiLFtuLCIiK2UsdD0hTyh0LCIvIik/Ii8iK3Q6dF19LEVhPWZ1bmN0aW9uKHQpe3ZhciBlPVAuY3JlYXRlRWxlbWVudCgiYSIpO2UuaHJlZj1QLmxvY2F0aW9uLmhyZWY7dmFyIG49KGUucHJvdG9jb2x8fCIiKS50b0xvd2VyQ2FzZSgpLHI9T2EoZSksYT1lLnNlYXJjaHx8IiIsbz1uKyIvLyIrclswXSsoclsxXT8iOiIrclsxXToiIik7cmV0dXJuIE8odCwiLy8iKT90PW4rdDpPKHQsIi8iKT90PW8rdDohdHx8Tyh0LCI/Iik/dD1vK3JbMl0rKHR8fGEpOnQuc3BsaXQoIi8iKVswXS5pbmRleE9mKCI6Iik8MCYmKHQ9bytyWzJdLnN1YnN0cmluZygwLHJbMl0ubGFzdEluZGV4T2YoIi8iKSkrIi8iK3QpLGUuaHJlZj10LG49T2EoZSkse3Byb3RvY29sOihlLnByb3RvY29sfHwiIikudG9Mb3dlckNhc2UoKSxob3N0Om5bMF0scG9ydDpuWzFdLHBhdGg6blsyXSxxdWVyeTplLnNlYXJjaHx8IiIsdXJsOnR8fCIifX0sVGE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdCYmMDw9dC5pbmRleE9mKCIvIik/dDooZXx8Z3QoITEpKSsiL3BsdWdpbnMvdWEvIit0fSx4YT17Z2E6ZnVuY3Rpb24oKXt4YS5mYT1bXX19O3hhLmdhKCkseGEuRD1mdW5jdGlvbih0KXt2YXIgZT14YS5KLmFwcGx5KHhhLGFyZ3VtZW50cyksZT14YS5mYS5jb25jYXQoZSk7Zm9yKHhhLmZhPVtdOzA8ZS5sZW5ndGgmJiF4YS52KGVbMF0pJiYoZS5zaGlmdCgpLCEoMDx4YS5mYS5sZW5ndGgpKTspO3hhLmZhPXhhLmZhLmNvbmNhdChlKX0seGEucmE9ZnVuY3Rpb24odCl7a2EucSYmKDMwMD09PWthLnEubGVuZ3RoJiYoa2EucS5zaGlmdCgpLGthLnFkKyspLGthLnEucHVzaCh0KSl9LHhhLko9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLG49MDtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRyeXt2YXIgcj1uZXcgaWEoYXJndW1lbnRzW25dKTtyLmc/aGEoci5hYVswXSxyLmFhWzFdKTooci5pJiYoci5oYT1iYShyLmRhLHIuYWFbMF0sci5YLHIuVykpLGUucHVzaChyKSkseGEucmEoYXJndW1lbnRzW25dKX1jYXRjaCh0KXt9cmV0dXJuIGV9LHhhLnY9ZnVuY3Rpb24odCl7dHJ5e2lmKHQudSl0LnUuY2FsbChJLGthLmooInQwIikpO2Vsc2V7dmFyIGUsbixyLGE9dC5kYT09cz9rYTprYS5qKHQuZGEpO2lmKHQuQSl7aWYoInQwIj09dC5kYSYmbnVsbD09PShhPWthLmNyZWF0ZS5hcHBseShrYSx0LmFhKSkpcmV0dXJuITB9ZWxzZSBpZih0LmJhKWthLnJlbW92ZSh0LmRhKTtlbHNlIGlmKGEpaWYodC5pKXtpZih0LmhhJiYodC5oYT1iYSh0LmRhLHQuYWFbMF0sdC5YLHQuVykpLCFtYSh0LmFhWzBdLGEsdC5XKSlyZXR1cm4hMH1lbHNlIHQuSz8oZT10Lm1ldGhvZE5hbWUsbj10LmFhLChyPWEucGx1Z2luc18uZ2V0KHQuSykpW2VdLmFwcGx5KHIsbikpOmFbdC5tZXRob2ROYW1lXS5hcHBseShhLHQuYWEpfX1jYXRjaCh0KXt9fTt2YXIga2E9ZnVuY3Rpb24odCl7ZygxKSx4YS5ELmFwcGx5KHhhLFthcmd1bWVudHNdKX07a2EuaD17fSxrYS5QPVtdLGthLkw9MCxrYS55YT0wLGthLmFuc3dlcj00Mjt2YXIgU2E9W3ZuLGJuLGduXTtrYS5jcmVhdGU9ZnVuY3Rpb24odCl7dmFyIGU9bShTYSxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykpO2VbZ25dfHwoZVtnbl09InQwIik7dmFyIG49IiIrZVtnbl07aWYoa2EuaFtuXSlyZXR1cm4ga2EuaFtuXTtpZihmdW5jdGlvbih0KXtpZihXKHRbTG5dKSYmKHZvaWQgMD09PXJ0JiYoZT0oZT1rci5nZXQoKSkmJmUuX2dhfHx2b2lkIDApJiYocnQ9ZSxnKDgxKSksdm9pZCAwIT09cnQpKXJldHVybiB0W2huXXx8KHRbaG5dPXJ0KSwhMTtpZih0W0xuXSl7aWYoZyg2NyksdFt4bl0mJiJjb29raWUiIT10W3huXSlyZXR1cm4hMTtpZih2b2lkIDAhPT1ydCl0W2huXXx8KHRbaG5dPXJ0KTtlbHNle3ZhciBlPVN0cmluZyh0W2JuXXx8QSgpKSxuPVN0cmluZyh0W3duXXx8Ii8iKSxyPUgoU3RyaW5nKHRbbW5dfHwiX2dhIikpO2lmKChlPSEoKGU9dnIocixlLG4pKSYmIWMudGVzdChlKSl8fCgwPT0oZT1IKCJBTVBfVE9LRU4iKSkubGVuZ3RofHwxPT1lLmxlbmd0aCYmKCIkUkVUUklFVklORyI9PShlPWRlY29kZVVSSUNvbXBvbmVudChlWzBdKSl8fCIkT1BUX09VVCI9PWV8fCIkRVJST1IiPT1lfHwiJE5PVF9GT1VORCI9PWUpKSkmJnN0KHosU3RyaW5nKHRbdm5dKSkpcmV0dXJuITB9fXJldHVybiExfShlKSlyZXR1cm4gbnVsbDtpZihlPW5ldyAkcihlKSxrYS5oW25dPWUsa2EuUC5wdXNoKGUpLG49d3QoKS50cmFja2VyX2NyZWF0ZWQsZihuKSl0cnl7bihlKX1jYXRjaCh0KXt9cmV0dXJuIGV9LGthLnJlbW92ZT1mdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPGthLlAubGVuZ3RoO2UrKylpZihrYS5QW2VdLmdldChnbik9PXQpe2thLlAuc3BsaWNlKGUsMSksa2EuaFt0XT1udWxsO2JyZWFrfX0sa2Euaj1mdW5jdGlvbih0KXtyZXR1cm4ga2EuaFt0XX0sa2EuZ2V0QWxsPWZ1bmN0aW9uKCl7cmV0dXJuIGthLlAuc2xpY2UoMCl9LGthLk49ZnVuY3Rpb24oKXtpZigiZ2EiIT1zJiZnKDQ5KSwhKG49SVtzXSl8fDQyIT1uLmFuc3dlcil7a2EuTD1uJiZuLmwsa2EueWE9K25ldyBEYXRlLGthLmxvYWRlZD0hMDt2YXIgdD1uJiZuLnEsZT15KHQpLG49W107aWYoZT9uPXQuc2xpY2UoMCk6Zyg1MCksa2EucT1lP3Q6W10sa2EucS5zcGxpY2UoMCksa2EucWQ9MCxlcigiY3JlYXRlIix0PUlbc109a2EsdC5jcmVhdGUpLGVyKCJyZW1vdmUiLHQsdC5yZW1vdmUpLGVyKCJnZXRCeU5hbWUiLHQsdC5qLDUpLGVyKCJnZXRBbGwiLHQsdC5nZXRBbGwsNiksZXIoImdldCIsdD0kci5wcm90b3R5cGUsdC5nZXQsNyksZXIoInNldCIsdCx0LnNldCw0KSxlcigic2VuZCIsdCx0LnNlbmQpLGVyKCJyZXF1aXJlU3luYyIsdCx0Lm1hKSxlcigiZ2V0Iix0PUl0LnByb3RvdHlwZSx0LmdldCksZXIoInNldCIsdCx0LnNldCksImh0dHBzOiIhPVAubG9jYXRpb24ucHJvdG9jb2wmJiFsKXt0Ontmb3IodD1QLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxlPTA7ZTx0Lmxlbmd0aCYmZTwxMDA7ZSsrKXt2YXIgcj10W2VdLnNyYztpZihyJiYwPT1yLmluZGV4T2YoZ3QoITApKyIvYW5hbHl0aWNzIikpe3Q9ITA7YnJlYWsgdH19dD0hMX10JiYobD0hMCl9dD0oKEkuZ2FwbHVnaW5zPUkuZ2FwbHVnaW5zfHx7fSkuTGlua2VyPVJyKS5wcm90b3R5cGUsaGEoImxpbmtlciIsUnIpLGVyKCJkZWNvcmF0ZSIsdCx0LmNhLDIwKSxlcigiYXV0b0xpbmsiLHQsdC5TLDI1KSxlcigicGFzc3Rocm91Z2giLHQsdC4kLDI1KSxoYSgiZGlzcGxheWZlYXR1cmVzIixVciksaGEoImFkZmVhdHVyZXMiLFVyKSx4YS5ELmFwcGx5KGthLG4pfX07QWU9a2EuTixSZT1JW3NdO1JlJiZSZS5yP0FlKCk6TmUoQWUpLE5lKGZ1bmN0aW9uKCl7eGEuRChbInByb3ZpZGUiLCJyZW5kZXIiLFRdKX0pfSh3aW5kb3cpfQo="},{"name":"brave-disable-pageview-api.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"Ly8vIGJyYXZlLWRpc2FibGUtcGFnZXZpZXctYXBpLmpzCi8vIEJhc2VkIG9uOiBodHRwczovL2FkZG9ucy5tb3ppbGxhLm9yZy9maXJlZm94L2FkZG9uL2Rpc2FibGUtcGFnZS12aXNpYmlsaXR5LwovLyBMaWNlbnNlOiAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAKLy8gRnJvbTogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vZ3dhcnNlci8zYjQ3YjYxODYzYmZmY2ZlYmU0NDk4Yzc3YjIzMDFjZAooZnVuY3Rpb24oKXsKLy8gdmlzaWJpbGl0eWNoYW5nZSBldmVudHMgYXJlIGNhcHR1cmVkIGFuZCBzdG9wcGVkIApkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIiwgZnVuY3Rpb24oZSkgewogICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsKfSwgdHJ1ZSk7Ci8vIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSBhbHdheXMgcmV0dXJucyBmYWxzZQpPYmplY3QuZGVmaW5lUHJvcGVydHkoRG9jdW1lbnQucHJvdG90eXBlLCAiaGlkZGVuIiwgewogICAgZ2V0OiBmdW5jdGlvbiBoaWRkZW4oKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSwKICAgIGVudW1lcmFibGU6IHRydWUsCiAgICBjb25maWd1cmFibGU6IHRydWUKfSk7Ci8vIGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZSBhbHdheXMgcmV0dXJucyAidmlzaWJsZSIKT2JqZWN0LmRlZmluZVByb3BlcnR5KERvY3VtZW50LnByb3RvdHlwZSwgInZpc2liaWxpdHlTdGF0ZSIsIHsKICAgIGdldDogZnVuY3Rpb24gdmlzaWJpbGl0eVN0YXRlKCkgewogICAgICAgIHJldHVybiAidmlzaWJsZSI7CiAgICB9LAogICAgZW51bWVyYWJsZTogdHJ1ZSwKICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQp9KTsKfSkoKQo="},{"name":"brave-fix.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"Ly8vIGJyYXZlLWZpeC5qcwovLy8gYWxpYXMgYmYuanMKZGVsZXRlIE5hdmlnYXRvci5wcm90b3R5cGUuYnJhdmUKZGVsZXRlIHdpbmRvdy5uYXZpZ2F0b3IuYnJhdmUK"},{"name":"brave-google-maps-fix.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"Ly8gRml4IGZvciBodHRwczovL2dpdGh1Yi5jb20vYnJhdmUvYnJhdmUtYnJvd3Nlci9pc3N1ZXMvMzcwNzUKKCgpID0+IHsKICBpZiAobG9jYXRpb24ucGF0aG5hbWUuc3RhcnRzV2l0aCgiL21hcHMvIikgfHwgbG9jYXRpb24ucGF0aG5hbWUgPT09ICIvbWFwcyIpIHsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJHTFNoYWRlclByZWNpc2lvbkZvcm1hdC5wcm90b3R5cGUsICdwcmVjaXNpb24nLCB7CiAgICAgIHZhbHVlOiAwLAogICAgICB3cml0YWJsZTogZmFsc2UKICAgIH0pOwogIH0KfSkoKTsK"},{"name":"brave-video-bg-play.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"Ly8vIGJyYXZlLXZpZGVvLWJnLXBsYXkuanMKLy8gQmFzZWQgb246IGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3ZpZGVvLWJnLXBsYXkKLy8gTGljZW5zZTogIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3ZpZGVvLWJnLXBsYXkvYmxvYi9tYXN0ZXIvTElDRU5TRSAoTUlUKQovLyBGcm9tOiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9nd2Fyc2VyLzNiNDdiNjE4NjNiZmZjZmViZTQ0OThjNzdiMjMwMWNkCihmdW5jdGlvbigpewpjb25zdCBJU19ZT1VUVUJFID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLnNlYXJjaCgvKD86XnwuK1wuKXlvdXR1YmUuY29tLykgPiAtMSB8fAogICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLnNlYXJjaCgvKD86XnwuK1wuKXlvdXR1YmUtbm9jb29raWUuY29tLykgPiAtMTsKY29uc3QgSVNfTU9CSUxFX1lPVVRVQkUgPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUgPT0gJ20ueW91dHViZS5jb20nOwpjb25zdCBJU19ERVNLVE9QX1lPVVRVQkUgPSBJU19ZT1VUVUJFICYmICFJU19NT0JJTEVfWU9VVFVCRTsKY29uc3QgSVNfVklNRU8gPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUuc2VhcmNoKC8oPzpefC4rXC4pdmltZW8uY29tLykgPiAtMTsKY29uc3QgSVNfQU5EUk9JRCA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0FuZHJvaWQnKSA+IC0xOwovLyBQYWdlIFZpc2liaWxpdHkgQVBJCmlmIChJU19BTkRST0lEIHx8ICFJU19ERVNLVE9QX1lPVVRVQkUpIHsKICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhkb2N1bWVudCwKICAgIHsgJ2hpZGRlbic6IHt2YWx1ZTogZmFsc2V9LCAndmlzaWJpbGl0eVN0YXRlJzoge3ZhbHVlOiAndmlzaWJsZSd9IH0pOwp9CndpbmRvdy5hZGRFdmVudExpc3RlbmVyKAogICd2aXNpYmlsaXR5Y2hhbmdlJywgZXZ0ID0+IGV2dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSwgdHJ1ZSk7Ci8vIEZ1bGxzY3JlZW4gQVBJCmlmIChJU19WSU1FTykgewogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKAogICAgJ2Z1bGxzY3JlZW5jaGFuZ2UnLCBldnQgPT4gZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLCB0cnVlKTsKfQovLyBVc2VyIGFjdGl2aXR5IHRyYWNraW5nCmlmIChJU19ZT1VUVUJFKSB7CiAgY29uc3QgcmVmcmVzaEludGVydmFsID0gNSAqIDYwICogMTAwMDsgLy8gZXZlcnkgNSBtaW51dGVzCiAgd2FpdEZvcllvdXR1YmVMYWN0SW5pdCgoKSA9PiByZWZyZXNoTGFjdCgpLCByZWZyZXNoSW50ZXJ2YWwpOwp9CmZ1bmN0aW9uIHdhaXRGb3JZb3V0dWJlTGFjdEluaXQoYUNhbGxiYWNrLCBhQ2FsbGJhY2tJbnRlcnZhbCwgYURlbGF5ID0gMTAwMCkgewogIGxldCBwYWdlV2luID0gd2luZG93OwogIGlmIChwYWdlV2luLmhhc093blByb3BlcnR5KCdfbGFjdCcpKSB7CiAgICB3aW5kb3cuc2V0SW50ZXJ2YWwoYUNhbGxiYWNrLCBhQ2FsbGJhY2tJbnRlcnZhbCk7CiAgfSBlbHNlIHsKICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHdhaXRGb3JZb3V0dWJlTGFjdEluaXQoYUNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhQ2FsbGJhY2tJbnRlcnZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYURlbGF5ICogMiksCiAgICAgICAgICAgICAgICAgICAgICBhRGVsYXkpOwogIH0KfQpmdW5jdGlvbiByZWZyZXNoTGFjdCgpIHsKICB3aW5kb3cuX2xhY3QgPSBEYXRlLm5vdygpOwp9Cn0pKCkK"},{"name":"brave-youtube-navigation-fix.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"KF8gPT4gewogIGNvbnN0IG9yaWdQZXJmTm93ID0gd2luZG93LnBlcmZvcm1hbmNlLm5vdzsKICBsZXQgcHJldmlvdXMgPSAwOwoKICB3aW5kb3cucGVyZm9ybWFuY2Uubm93ID0gZnVuY3Rpb24gKCkgewogICAgbGV0IGN1cnJlbnQgPSBvcmlnUGVyZk5vdy5hcHBseSh0aGlzKTsKICAgIGlmIChjdXJyZW50IDw9IHByZXZpb3VzKSB7CiAgICAgIGN1cnJlbnQgPSBwcmV2aW91cyArIE51bWJlci5FUFNJTE9OICogMTAwMDAwOwogICAgfQoKICAgIHJldHVybiBwcmV2aW91cyA9IGN1cnJlbnQ7CiAgfQp9KSgpOwo="},{"name":"brave-youtube-theater-fix.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"KGFzeW5jIF8gPT4gewogIGlmIChzZWxmLmNvb2tpZVN0b3JlID09PSB1bmRlZmluZWQpIHsKICAgIC8vIERvIG5vdGhpbmcgb24gaU9TLiBUaGUgcHJvYmxlbSBkb2Vzbid0IGV4aXN0IHRoZXJlLCBhbmQgdGhlCiAgICAvLyBzb2x1dGlvbiB3b3VsZG4ndCB3b3JrIGFueXdheQogICAgcmV0dXJuCiAgfQogIGNvbnN0IHN0b3JlS2V5ID0gJ2JyYXZlOjp3aWRlJwogIGNvbnN0IGNvb2tpZUtleSA9ICd3aWRlJwoKICBjb25zdCB3aWRlQ29va2llID0gYXdhaXQgY29va2llU3RvcmUuZ2V0KGNvb2tpZUtleSkKICBjb25zdCB3aWRlQ29va2llQmFja3VwID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oc3RvcmVLZXkpCgogIC8vIFNldCB0aGUgY29va2llIGZyb20gbG9jYWxTdG9yYWdlIGlmZjogCiAgLy8gMSkgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0LgogIC8vIDIpIHdlIGhhdmUgYSBiYWNrdXAgaW4gbG9jYWxTdG9yYWdlLgogIGlmICghd2lkZUNvb2tpZSAmJiB3aWRlQ29va2llQmFja3VwKSB7CiAgICAvLyBUaGUgY29va2llIG9iamVjdCBpcyBzdG9yZWQgYXMgYSBzdHJpbmcuIFBhcnNlIGl0LgogICAgY29uc3QgY29va2llT2JqID0gSlNPTi5wYXJzZSh3aWRlQ29va2llQmFja3VwKQogICAgYXdhaXQgY29va2llU3RvcmUuc2V0KGNvb2tpZU9iaikKICAgIC8vIFJlZnJlc2ggdGhlIHBhZ2UgdG8gbWFrZSBZVCB1c2UgdGhlIG5ldyBjb29raWUuCiAgICBsb2NhdGlvbi5yZWxvYWQoKQogIH0KCiAgLy8gUGVyc2lzdCB0aGUgY29va2llIHZhbHVlIHRvIGxvY2FsU3RvcmFnZSBldmVyeSBzZWNvbmQuCiAgc2V0SW50ZXJ2YWwoYXN5bmMgXyA9PiB7CiAgICB0cnkgewogICAgICBjb25zdCB3aWRlQ29va2llID0gYXdhaXQgY29va2llU3RvcmUuZ2V0KGNvb2tpZUtleSkKICAgICAgLy8gV2UgaGF2ZSB0byBzdHJpbmdpZnkgdGhlIGNvb2tpZSBvYmplY3QgdG8gc3RvcmUgaXQgaW4gbG9jYWxTdG9yYWdlLgogICAgICBpZiAod2lkZUNvb2tpZSkgewogICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHN0b3JlS2V5LCBKU09OLnN0cmluZ2lmeSh3aWRlQ29va2llKSkKICAgICAgfSBlbHNlIHsKICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShzdG9yZUtleSkKICAgICAgfQogICAgfSBjYXRjaCAoZSkgewogICAgICAvLyBzd2FsbG93IGVycm9yIGZyb20gbm8gY29va2llIGV4aXN0aW5nCiAgICB9CiAgfSwgMTAwMCkKfSkoKTsK"},{"name":"de-amp.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"KGZ1bmN0aW9uICgpIHsKICBpZiAodHlwZW9mIGRlQW1wRW5hYmxlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgZGVBbXBFbmFibGVkKSB7CiAgICBjb25zdCBhdHRyID0gJ2pzYWN0aW9uJwogICAgY29uc3Qgc2VsZWN0b3IgPSBgYVtkYXRhLWFtcC10aXRsZV1bJHthdHRyfV1gCiAgICBsZXQgdGltZXIKICAgIGNvbnN0IGlkbGVDYWxsYmFjayA9IChfID0+IHsKICAgICAgaWYgKHNlbGYucmVxdWVzdElkbGVDYWxsYmFjaykgewogICAgICAgIHJldHVybiAoY2FsbGJhY2ssIHRpbWVvdXQpID0+IHsKICAgICAgICAgIHJldHVybiBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2soY2FsbGJhY2ssIHsgdGltZW91dCB9KQogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gRmFsbGJhY2sgdG8gc2V0VGltZW91dCB3aGVuIHJlcXVlc3RJZGxlQ2FsbGJhY2sgZG9lc24ndCBleGlzdC4KICAgICAgcmV0dXJuIChjYWxsYmFjaykgPT4gewogICAgICAgIHJldHVybiBzZWxmLnNldFRpbWVvdXQoY2FsbGJhY2ssIDApCiAgICAgIH0KICAgIH0pKCkKICAgIGNvbnN0IHJtYXR0ciA9ICgpID0+IHsKICAgICAgdGltZXIgPSB1bmRlZmluZWQKICAgICAgdHJ5IHsKICAgICAgICBjb25zdCBub2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpCiAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7CiAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShhdHRyKQogICAgICAgIH0KICAgICAgfSBjYXRjaCAoZXgpIHsgfQogICAgfQogICAgY29uc3QgbXV0YXRpb25IYW5kbGVyID0gKG11dGF0aW9ucykgPT4gewogICAgICBpZiAodGltZXIgIT09IHVuZGVmaW5lZCkgewogICAgICAgIHJldHVybgogICAgICB9CiAgICAgIGxldCBza2lwID0gdHJ1ZQogICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG11dGF0aW9ucy5sZW5ndGggJiYgc2tpcDsgaSsrKSB7CiAgICAgICAgY29uc3QgeyB0eXBlLCBhZGRlZE5vZGVzLCByZW1vdmVkTm9kZXMgfSA9IG11dGF0aW9uc1tpXQogICAgICAgIGlmICh0eXBlID09PSAnYXR0cmlidXRlcycpIHsKICAgICAgICAgIHNraXAgPSBmYWxzZQogICAgICAgIH0KICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGFkZGVkTm9kZXMubGVuZ3RoICYmIHNraXA7IGorKykgewogICAgICAgICAgaWYgKGFkZGVkTm9kZXNbal0ubm9kZVR5cGUgPT09IDEpIHsKICAgICAgICAgICAgc2tpcCA9IGZhbHNlCiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcmVtb3ZlZE5vZGVzLmxlbmd0aCAmJiBza2lwOyBqKyspIHsKICAgICAgICAgIGlmIChyZW1vdmVkTm9kZXNbal0ubm9kZVR5cGUgPT09IDEpIHsKICAgICAgICAgICAgc2tpcCA9IGZhbHNlCiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChza2lwKSB7CiAgICAgICAgcmV0dXJuCiAgICAgIH0KCiAgICAgIHRpbWVyID0gaWRsZUNhbGxiYWNrKHJtYXR0ciwgMTcpCiAgICB9CgogICAgY29uc3Qgc3RhcnQgPSAoKSA9PiB7CiAgICAgIHJtYXR0cigpCiAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIobXV0YXRpb25IYW5kbGVyKQogICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LCB7CiAgICAgICAgYXR0cmlidXRlczogdHJ1ZSwKICAgICAgICBhdHRyaWJ1dGVGaWx0ZXI6IFthdHRyXSwKICAgICAgICBjaGlsZExpc3Q6IHRydWUsCiAgICAgICAgc3VidHJlZTogdHJ1ZQogICAgICB9KQogICAgfQoKICAgIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIHN0YXJ0LCB7IG9uY2U6IHRydWUgfSkKICB9Cn0pKCk7Cg=="},{"name":"touch-fix.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"Ly8gUmVtb3ZlIHRvdWNoIGNoZWNrcyBvbiBzZWxlY3RlZCBtb2JpbGUgc2l0ZXMKZGVsZXRlIERvY3VtZW50LnByb3RvdHlwZS5jcmVhdGVUb3VjaApkZWxldGUgRG9jdW1lbnQucHJvdG90eXBlLm9udG91Y2hzdGFydApkZWxldGUgRG9jdW1lbnQucHJvdG90eXBlLm9udG91Y2hlbmQKZGVsZXRlIERvY3VtZW50LnByb3RvdHlwZS5vbnRvdWNoY2FuY2VsCmRlbGV0ZSBEb2N1bWVudC5wcm90b3R5cGUuVG91Y2hFdmVudAo="},{"name":"trusted_types.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"Ly8vIHNldC10cnVzdGVkLXR5cGVzLmpzCmZ1bmN0aW9uIHNldFRydXN0ZWRUeXBlcygpIHsKICBpZiAod2luZG93LnRydXN0ZWRUeXBlcyAmJiB3aW5kb3cudHJ1c3RlZFR5cGVzLmNyZWF0ZVBvbGljeSkgewogICAgd2luZG93LnRydXN0ZWRUeXBlcy5jcmVhdGVQb2xpY3koImRlZmF1bHQiLCB7CiAgICAgIGNyZWF0ZVNjcmlwdDogc3RyaW5nID0+IHN0cmluZwogICAgfSk7CiAgIH0KICAgcnVuQXQoKCkgPT4ge30sICdpbnRlcmFjdGl2ZScpOwp9Cg=="},{"name":"vaft-ublock-origin.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"KGZ1bmN0aW9uKCkgewogICAgaWYgKCAvKF58XC4pdHdpdGNoXC50diQvLnRlc3QoZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWUpID09PSBmYWxzZSApIHsgcmV0dXJuOyB9CiAgICBmdW5jdGlvbiBkZWNsYXJlT3B0aW9ucyhzY29wZSkgewogICAgICAgIHNjb3BlLkFkU2lnbmlmaWVyID0gJ3N0aXRjaGVkJzsKICAgICAgICBzY29wZS5DbGllbnRJRCA9ICdraW1uZTc4a3gzbmN4NmJyZ280bXY2d2tpNWgxa28nOwogICAgICAgIHNjb3BlLkNsaWVudFZlcnNpb24gPSAnbnVsbCc7CiAgICAgICAgc2NvcGUuQ2xpZW50U2Vzc2lvbiA9ICdudWxsJzsKICAgICAgICBzY29wZS5QbGF5ZXJUeXBlMiA9ICdlbWJlZCc7IC8vU291cmNlCiAgICAgICAgc2NvcGUuUGxheWVyVHlwZTMgPSAnc2l0ZSc7IC8vU291cmNlCiAgICAgICAgc2NvcGUuUGxheWVyVHlwZTQgPSAnYXV0b3BsYXknOyAvLzM2MHAKICAgICAgICBzY29wZS5DdXJyZW50Q2hhbm5lbE5hbWUgPSBudWxsOwogICAgICAgIHNjb3BlLlVzaGVyUGFyYW1zID0gbnVsbDsKICAgICAgICBzY29wZS5XYXNTaG93aW5nQWQgPSBmYWxzZTsKICAgICAgICBzY29wZS5HUUxEZXZpY2VJRCA9IG51bGw7CiAgICAgICAgc2NvcGUuSXNTcXVhZFN0cmVhbSA9IGZhbHNlOwogICAgICAgIHNjb3BlLlN0cmVhbUluZm9zID0gW107CiAgICAgICAgc2NvcGUuU3RyZWFtSW5mb3NCeVVybCA9IFtdOwogICAgICAgIHNjb3BlLk1haW5VcmxCeVVybCA9IFtdOwogICAgICAgIHNjb3BlLkVuY29kaW5nQ2FjaGVUaW1lb3V0ID0gNjAwMDA7CiAgICAgICAgc2NvcGUuQ2xpZW50SW50ZWdyaXR5SGVhZGVyID0gbnVsbDsKICAgICAgICBzY29wZS5BdXRob3JpemF0aW9uSGVhZGVyID0gbnVsbDsKICAgIH0KICAgIHZhciB0d2l0Y2hXb3JrZXJzID0gW107CiAgICB2YXIgYWRCbG9ja0RpdiA9IG51bGw7CiAgICB2YXIgT3JpZ2luYWxWaWRlb1BsYXllclF1YWxpdHkgPSBudWxsOwogICAgdmFyIElzUGxheWVyQXV0b1F1YWxpdHkgPSBudWxsOwogICAgY29uc3Qgb2xkV29ya2VyID0gd2luZG93LldvcmtlcjsKICAgIGZ1bmN0aW9uIGlzV29ya2VyRG91YmxlSG9va2VkKG91cldvcmtlciwgaWRlbnRpZmllcikgewogICAgICAgIHZhciBvdXJXb3JrZXJTdHJpbmcgPSBvdXJXb3JrZXIgPyBvdXJXb3JrZXIudG9TdHJpbmcoKSA6IG51bGw7CiAgICAgICAgdmFyIHByb3RvID0gd2luZG93LldvcmtlcjsKICAgICAgICB3aGlsZSAocHJvdG8pCiAgICAgICAgewogICAgICAgICAgICB2YXIgd29ya2VyU3RyaW5nID0gcHJvdG8udG9TdHJpbmcoKTsKICAgICAgICAgICAgaWYgKHdvcmtlclN0cmluZy5pbmNsdWRlcyhpZGVudGlmaWVyKSAmJiB3b3JrZXJTdHJpbmcgIT09IG91cldvcmtlclN0cmluZykgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBmdW5jdGlvbiBob29rV2luZG93V29ya2VyKCkgewogICAgICAgIHZhciBuZXdXb3JrZXIgPSB3aW5kb3cuV29ya2VyID0gY2xhc3MgV29ya2VyIGV4dGVuZHMgb2xkV29ya2VyIHsKICAgICAgICAgICAgY29uc3RydWN0b3IodHdpdGNoQmxvYlVybCwgb3B0aW9ucykgewogICAgICAgICAgICAgICAgdmFyIGlzVHdpdGNoV29ya2VyID0gZmFsc2U7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGlzVHdpdGNoV29ya2VyID0gbmV3IFVSTCh0d2l0Y2hCbG9iVXJsKS5vcmlnaW4uZW5kc1dpdGgoJy50d2l0Y2gudHYnKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2gge30KICAgICAgICAgICAgICAgIGlmIChpc1dvcmtlckRvdWJsZUhvb2tlZChuZXdXb3JrZXIsICd0d2l0Y2gnKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdNdWx0aXBsZSB0d2l0Y2ggYWRibG9ja2VycyBpbnN0YWxsZWQuIFNraXBwaW5nIFdvcmtlciBob29rICh2YWZ0KScpOwogICAgICAgICAgICAgICAgICAgIGlzVHdpdGNoV29ya2VyID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIWlzVHdpdGNoV29ya2VyKSB7CiAgICAgICAgICAgICAgICAgICAgc3VwZXIodHdpdGNoQmxvYlVybCwgb3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIG5ld0Jsb2JTdHIgPSBgCiAgICAgICAgICAgICAgICAgICAgJHtnZXRTdHJlYW1VcmxGb3JSZXNvbHV0aW9uLnRvU3RyaW5nKCl9CiAgICAgICAgICAgICAgICAgICAgJHtnZXRTdHJlYW1Gb3JSZXNvbHV0aW9uLnRvU3RyaW5nKCl9CiAgICAgICAgICAgICAgICAgICAgJHtzdHJpcFVudXNlZFBhcmFtcy50b1N0cmluZygpfQogICAgICAgICAgICAgICAgICAgICR7cHJvY2Vzc00zVTgudG9TdHJpbmcoKX0KICAgICAgICAgICAgICAgICAgICAke2hvb2tXb3JrZXJGZXRjaC50b1N0cmluZygpfQogICAgICAgICAgICAgICAgICAgICR7ZGVjbGFyZU9wdGlvbnMudG9TdHJpbmcoKX0KICAgICAgICAgICAgICAgICAgICAke2dldEFjY2Vzc1Rva2VuLnRvU3RyaW5nKCl9CiAgICAgICAgICAgICAgICAgICAgJHtncWxSZXF1ZXN0LnRvU3RyaW5nKCl9CiAgICAgICAgICAgICAgICAgICAgJHthZFJlY29yZGdxbFBhY2tldC50b1N0cmluZygpfQogICAgICAgICAgICAgICAgICAgICR7dHJ5Tm90aWZ5VHdpdGNoLnRvU3RyaW5nKCl9CiAgICAgICAgICAgICAgICAgICAgJHtwYXJzZUF0dHJpYnV0ZXMudG9TdHJpbmcoKX0KICAgICAgICAgICAgICAgICAgICAke2dldFdhc21Xb3JrZXJVcmwudG9TdHJpbmcoKX0KICAgICAgICAgICAgICAgICAgICB2YXIgd29ya2VyVXJsID0gZ2V0V2FzbVdvcmtlclVybCgnJHt0d2l0Y2hCbG9iVXJsLnJlcGxhY2VBbGwoIiciLCAiJTI3Iil9Jyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHdvcmtlclVybCAmJiB3b3JrZXJVcmwuaW5jbHVkZXMoJ2Fzc2V0cy50d2l0Y2gudHYvYXNzZXRzL2FtYXpvbi1pdnMtd2FzbXdvcmtlcicpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xhcmVPcHRpb25zKHNlbGYpOwogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5kYXRhLmtleSA9PSAnVXBkYXRlSXNTcXVhZFN0cmVhbScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJc1NxdWFkU3RyZWFtID0gZS5kYXRhLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlLmRhdGEua2V5ID09ICdVcGRhdGVDbGllbnRWZXJzaW9uJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWVudFZlcnNpb24gPSBlLmRhdGEudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUuZGF0YS5rZXkgPT0gJ1VwZGF0ZUNsaWVudFNlc3Npb24nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpZW50U2Vzc2lvbiA9IGUuZGF0YS52YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5kYXRhLmtleSA9PSAnVXBkYXRlQ2xpZW50SWQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpZW50SUQgPSBlLmRhdGEudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUuZGF0YS5rZXkgPT0gJ1VwZGF0ZURldmljZUlkJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdRTERldmljZUlEID0gZS5kYXRhLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlLmRhdGEua2V5ID09ICdVcGRhdGVDbGllbnRJbnRlZ3JpdHlIZWFkZXInKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpZW50SW50ZWdyaXR5SGVhZGVyID0gZS5kYXRhLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlLmRhdGEua2V5ID09ICdVcGRhdGVBdXRob3JpemF0aW9uSGVhZGVyJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb25IZWFkZXIgPSBlLmRhdGEudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBob29rV29ya2VyRmV0Y2goKTsKICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0U2NyaXB0cyh3b3JrZXJVcmwpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGA7CiAgICAgICAgICAgICAgICBzdXBlcihVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtuZXdCbG9iU3RyXSkpLCBvcHRpb25zKTsKICAgICAgICAgICAgICAgIHR3aXRjaFdvcmtlcnMucHVzaCh0aGlzKTsKICAgICAgICAgICAgICAgIHRoaXMub25tZXNzYWdlID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEua2V5ID09ICdTaG93QWRCbG9ja0Jhbm5lcicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFkQmxvY2tEaXYgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRCbG9ja0RpdiA9IGdldEFkQmxvY2tEaXYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBhZEJsb2NrRGl2LlAudGV4dENvbnRlbnQgPSAnQmxvY2tpbmcgYWRzJzsKICAgICAgICAgICAgICAgICAgICAgICAgYWRCbG9ja0Rpdi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUuZGF0YS5rZXkgPT0gJ0hpZGVBZEJsb2NrQmFubmVyJykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWRCbG9ja0RpdiA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZEJsb2NrRGl2ID0gZ2V0QWRCbG9ja0RpdigpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGFkQmxvY2tEaXYuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUuZGF0YS5rZXkgPT0gJ1BhdXNlUmVzdW1lUGxheWVyJykgewogICAgICAgICAgICAgICAgICAgICAgICBkb1R3aXRjaFBsYXllclRhc2sodHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5kYXRhLmtleSA9PSAnRm9yY2VDaGFuZ2VRdWFsaXR5JykgewogICAgICAgICAgICAgICAgICAgICAgICAvL1RoaXMgaXMgdXNlZCB0byBmaXggdGhlIGJ1ZyB3aGVyZSB0aGUgdmlkZW8gd291bGQgZnJlZXplLgogICAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiAobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2ZpcmVmb3gnKSA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGF1dG9RdWFsaXR5ID0gZG9Ud2l0Y2hQbGF5ZXJUYXNrKGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50UXVhbGl0eSA9IGRvVHdpdGNoUGxheWVyVGFzayhmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSXNQbGF5ZXJBdXRvUXVhbGl0eSA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNQbGF5ZXJBdXRvUXVhbGl0eSA9IGF1dG9RdWFsaXR5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9yaWdpbmFsVmlkZW9QbGF5ZXJRdWFsaXR5ID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmlnaW5hbFZpZGVvUGxheWVyUXVhbGl0eSA9IGN1cnJlbnRRdWFsaXR5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50UXVhbGl0eS5pbmNsdWRlcygnMzYwJykgfHwgZS5kYXRhLnZhbHVlICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIU9yaWdpbmFsVmlkZW9QbGF5ZXJRdWFsaXR5LmluY2x1ZGVzKCczNjAnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2V0dGluZ3NNZW51ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W2RhdGEtYS10YXJnZXQ9InBsYXllci1zZXR0aW5ncy1tZW51Il0nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldHRpbmdzTWVudSA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2V0dGluZ3NDb2cgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdidXR0b25bZGF0YS1hLXRhcmdldD0icGxheWVyLXNldHRpbmdzLWJ1dHRvbiJdJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2V0dGluZ3NDb2cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nc0NvZy5jbGljaygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxdWFsaXR5TWVudSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbltkYXRhLWEtdGFyZ2V0PSJwbGF5ZXItc2V0dGluZ3MtbWVudS1pdGVtLXF1YWxpdHkiXScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxdWFsaXR5TWVudSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWFsaXR5TWVudS5jbGljaygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbG93UXVhbGl0eSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W2RhdGEtYS10YXJnZXQ9InR3LXJhZGlvIicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb3dRdWFsaXR5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxdWFsaXR5VG9TZWxlY3QgPSBsb3dRdWFsaXR5Lmxlbmd0aCAtIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEudmFsdWUgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuZGF0YS52YWx1ZS5pbmNsdWRlcygnb3JpZ2luYWwnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZGF0YS52YWx1ZSA9IE9yaWdpbmFsVmlkZW9QbGF5ZXJRdWFsaXR5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJc1BsYXllckF1dG9RdWFsaXR5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuZGF0YS52YWx1ZSA9ICdhdXRvJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5kYXRhLnZhbHVlLmluY2x1ZGVzKCcxNjBwJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWFsaXR5VG9TZWxlY3QgPSA1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuZGF0YS52YWx1ZS5pbmNsdWRlcygnMzYwcCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVhbGl0eVRvU2VsZWN0ID0gNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEudmFsdWUuaW5jbHVkZXMoJzQ4MHAnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YWxpdHlUb1NlbGVjdCA9IDM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5kYXRhLnZhbHVlLmluY2x1ZGVzKCc3MjBwJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWFsaXR5VG9TZWxlY3QgPSAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuZGF0YS52YWx1ZS5pbmNsdWRlcygnODIycCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVhbGl0eVRvU2VsZWN0ID0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEudmFsdWUuaW5jbHVkZXMoJzg2NHAnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YWxpdHlUb1NlbGVjdCA9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5kYXRhLnZhbHVlLmluY2x1ZGVzKCc5MDBwJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWFsaXR5VG9TZWxlY3QgPSAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUuZGF0YS52YWx1ZS5pbmNsdWRlcygnOTM2cCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVhbGl0eVRvU2VsZWN0ID0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEudmFsdWUuaW5jbHVkZXMoJzk2MHAnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YWxpdHlUb1NlbGVjdCA9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5kYXRhLnZhbHVlLmluY2x1ZGVzKCcxMDgwcCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVhbGl0eVRvU2VsZWN0ID0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEudmFsdWUuaW5jbHVkZXMoJ3NvdXJjZScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVhbGl0eVRvU2VsZWN0ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEudmFsdWUuaW5jbHVkZXMoJ2F1dG8nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YWxpdHlUb1NlbGVjdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRRdWFsaXR5TFMgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3ZpZGVvLXF1YWxpdHknKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG93UXVhbGl0eVtxdWFsaXR5VG9TZWxlY3RdLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzQ29nLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndmlkZW8tcXVhbGl0eScsIGN1cnJlbnRRdWFsaXR5TFMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZS5kYXRhLnZhbHVlICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yaWdpbmFsVmlkZW9QbGF5ZXJRdWFsaXR5ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElzUGxheWVyQXV0b1F1YWxpdHkgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9Ud2l0Y2hQbGF5ZXJUYXNrKGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yaWdpbmFsVmlkZW9QbGF5ZXJRdWFsaXR5ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElzUGxheWVyQXV0b1F1YWxpdHkgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGdldEFkQmxvY2tEaXYoKSB7CiAgICAgICAgICAgICAgICAgICAgLy9UbyBkaXNwbGF5IGEgbm90aWZpY2F0aW9uIHRvIHRoZSB1c2VyLCB0aGF0IGFuIGFkIGlzIGJlaW5nIGJsb2NrZWQuCiAgICAgICAgICAgICAgICAgICAgdmFyIHBsYXllclJvb3REaXYgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudmlkZW8tcGxheWVyJyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFkQmxvY2tEaXYgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGlmIChwbGF5ZXJSb290RGl2ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYWRCbG9ja0RpdiA9IHBsYXllclJvb3REaXYucXVlcnlTZWxlY3RvcignLmFkYmxvY2stb3ZlcmxheScpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWRCbG9ja0RpdiA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZEJsb2NrRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZEJsb2NrRGl2LmNsYXNzTmFtZSA9ICdhZGJsb2NrLW92ZXJsYXknOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRCbG9ja0Rpdi5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0icGxheWVyLWFkYmxvY2stbm90aWNlIiBzdHlsZT0iY29sb3I6IHdoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOCk7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwcHg7IGxlZnQ6IDBweDsgcGFkZGluZzogNXB4OyI+PHA+PC9wPjwvZGl2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZEJsb2NrRGl2LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZEJsb2NrRGl2LlAgPSBhZEJsb2NrRGl2LnF1ZXJ5U2VsZWN0b3IoJ3AnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXllclJvb3REaXYuYXBwZW5kQ2hpbGQoYWRCbG9ja0Rpdik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkQmxvY2tEaXY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfQogICAgZnVuY3Rpb24gZ2V0V2FzbVdvcmtlclVybCh0d2l0Y2hCbG9iVXJsKSB7CiAgICAgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgIHJlcS5vcGVuKCdHRVQnLCB0d2l0Y2hCbG9iVXJsLCBmYWxzZSk7CiAgICAgICAgcmVxLm92ZXJyaWRlTWltZVR5cGUoInRleHQvamF2YXNjcmlwdCIpOwogICAgICAgIHJlcS5zZW5kKCk7CiAgICAgICAgcmV0dXJuIHJlcS5yZXNwb25zZVRleHQuc3BsaXQoIiciKVsxXTsKICAgIH0KICAgIGZ1bmN0aW9uIGhvb2tXb3JrZXJGZXRjaCgpIHsKICAgICAgICBjb25zb2xlLmxvZygnaG9va1dvcmtlckZldGNoJyk7CiAgICAgICAgdmFyIHJlYWxGZXRjaCA9IGZldGNoOwogICAgICAgIGZldGNoID0gYXN5bmMgZnVuY3Rpb24odXJsLCBvcHRpb25zKSB7CiAgICAgICAgICAgIGlmICh0eXBlb2YgdXJsID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgaWYgKHVybC5lbmRzV2l0aCgnbTN1OCcpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvY2Vzc0FmdGVyID0gYXN5bmMgZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vSGVyZSB3ZSBjaGVjayB0aGUgbTN1OCBmb3IgYW55IGFkcyBhbmQgYWxzbyB0cnkgZmFsbGJhY2sgcGxheWVyIHR5cGVzIGlmIG5lZWRlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcG9uc2VUZXh0ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB3ZWF2ZXJUZXh0ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWF2ZXJUZXh0ID0gYXdhaXQgcHJvY2Vzc00zVTgodXJsLCByZXNwb25zZVRleHQsIHJlYWxGZXRjaCwgUGxheWVyVHlwZTIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWF2ZXJUZXh0LmluY2x1ZGVzKEFkU2lnbmlmaWVyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWF2ZXJUZXh0ID0gYXdhaXQgcHJvY2Vzc00zVTgodXJsLCByZXNwb25zZVRleHQsIHJlYWxGZXRjaCwgUGxheWVyVHlwZTMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2VhdmVyVGV4dC5pbmNsdWRlcyhBZFNpZ25pZmllcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2VhdmVyVGV4dCA9IGF3YWl0IHByb2Nlc3NNM1U4KHVybCwgcmVzcG9uc2VUZXh0LCByZWFsRmV0Y2gsIFBsYXllclR5cGU0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShuZXcgUmVzcG9uc2Uod2VhdmVyVGV4dCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlbmQgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWFsRmV0Y2godXJsLCBvcHRpb25zKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0FmdGVyKHJlc3BvbnNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pWydjYXRjaCddKGZ1bmN0aW9uKGVycikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbmQoKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodXJsLmluY2x1ZGVzKCcvYXBpL2NoYW5uZWwvaGxzLycpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNoYW5uZWxOYW1lID0gKG5ldyBVUkwodXJsKSkucGF0aG5hbWUubWF0Y2goLyhbXlwvXSspKD89XC5cdyskKS8pWzBdOwogICAgICAgICAgICAgICAgICAgIFVzaGVyUGFyYW1zID0gKG5ldyBVUkwodXJsKSkuc2VhcmNoOwogICAgICAgICAgICAgICAgICAgIEN1cnJlbnRDaGFubmVsTmFtZSA9IGNoYW5uZWxOYW1lOwogICAgICAgICAgICAgICAgICAgIC8vVG8gcHJldmVudCBwYXVzZS9yZXN1bWUgbG9vcCBmb3IgbWlkLXJvbGxzLgogICAgICAgICAgICAgICAgICAgIHZhciBpc1BCWVBSZXF1ZXN0ID0gdXJsLmluY2x1ZGVzKCdwaWN0dXJlLWJ5LXBpY3R1cmUnKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNQQllQUmVxdWVzdCkgewogICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSAnJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvY2Vzc0FmdGVyID0gYXN5bmMgZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gMjAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmdzTTN1OCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RyZWFtSW5mbyA9IFN0cmVhbUluZm9zW2NoYW5uZWxOYW1lXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyZWFtSW5mbyA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbUluZm9zW2NoYW5uZWxOYW1lXSA9IHN0cmVhbUluZm8gPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtSW5mby5DaGFubmVsTmFtZSA9IGNoYW5uZWxOYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbUluZm8uUmVxdWVzdGVkQWRzID0gbmV3IFNldCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbUluZm8uVXJscyA9IFtdOy8vIHh4eC5tM3U4IC0+IHsgUmVzb2x1dGlvbjogIjI4NHgxNjAiLCBGcmFtZVJhdGU6IDMwLjAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbUluZm8uRW5jb2RpbmdzTTNVOENhY2hlID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtSW5mby5FbmNvZGluZ3NNM1U4ID0gZW5jb2RpbmdzTTN1ODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGluZXMgPSBlbmNvZGluZ3NNM3U4LnJlcGxhY2UoJ1xyJywgJycpLnNwbGl0KCdcbicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFsaW5lc1tpXS5zdGFydHNXaXRoKCcjJykgJiYgbGluZXNbaV0uaW5jbHVkZXMoJy5tM3U4JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbUluZm8uVXJsc1tsaW5lc1tpXV0gPSAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID4gMCAmJiBsaW5lc1tpIC0gMV0uc3RhcnRzV2l0aCgnI0VYVC1YLVNUUkVBTS1JTkYnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhdHRyaWJ1dGVzID0gcGFyc2VBdHRyaWJ1dGVzKGxpbmVzW2kgLSAxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc29sdXRpb24gPSBhdHRyaWJ1dGVzWydSRVNPTFVUSU9OJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZyYW1lUmF0ZSA9IGF0dHJpYnV0ZXNbJ0ZSQU1FLVJBVEUnXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzb2x1dGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1JbmZvLlVybHNbbGluZXNbaV1dID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb2x1dGlvbjogcmVzb2x1dGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lUmF0ZTogZnJhbWVSYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyZWFtSW5mb3NCeVVybFtsaW5lc1tpXV0gPSBzdHJlYW1JbmZvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpblVybEJ5VXJsW2xpbmVzW2ldXSA9IHVybDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG5ldyBSZXNwb25zZShlbmNvZGluZ3NNM3U4KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VuZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWxGZXRjaCh1cmwsIG9wdGlvbnMpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQWZ0ZXIocmVzcG9uc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlbJ2NhdGNoJ10oZnVuY3Rpb24oZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgc2VuZCgpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByZWFsRmV0Y2guYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgfQogICAgZnVuY3Rpb24gZ2V0U3RyZWFtVXJsRm9yUmVzb2x1dGlvbihlbmNvZGluZ3NNM3U4LCByZXNvbHV0aW9uSW5mbywgcXVhbGl0eU92ZXJyaWRlU3RyKSB7CiAgICAgICAgdmFyIHF1YWxpdHlPdmVycmlkZSA9IDA7CiAgICAgICAgaWYgKHF1YWxpdHlPdmVycmlkZVN0ciAmJiBxdWFsaXR5T3ZlcnJpZGVTdHIuZW5kc1dpdGgoJ3AnKSkgewogICAgICAgICAgICBxdWFsaXR5T3ZlcnJpZGUgPSBxdWFsaXR5T3ZlcnJpZGVTdHIuc3Vic3RyKDAsIHF1YWxpdHlPdmVycmlkZVN0ci5sZW5ndGggLSAxKSB8IDA7CiAgICAgICAgfQogICAgICAgIHZhciBxdWFsaXR5T3ZlcnJpZGVGb3VuZFF1YWxpdHkgPSAwOwogICAgICAgIHZhciBxdWFsaXR5T3ZlcnJpZGVGb3VuZEZyYW1lUmF0ZSA9IDA7CiAgICAgICAgdmFyIGVuY29kaW5nc0xpbmVzID0gZW5jb2RpbmdzTTN1OC5yZXBsYWNlKCdccicsICcnKS5zcGxpdCgnXG4nKTsKICAgICAgICB2YXIgZmlyc3RVcmwgPSBudWxsOwogICAgICAgIHZhciBsYXN0VXJsID0gbnVsbDsKICAgICAgICB2YXIgbWF0Y2hlZFJlc29sdXRpb25VcmwgPSBudWxsOwogICAgICAgIHZhciBtYXRjaGVkRnJhbWVSYXRlID0gZmFsc2U7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbmNvZGluZ3NMaW5lcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoIWVuY29kaW5nc0xpbmVzW2ldLnN0YXJ0c1dpdGgoJyMnKSAmJiBlbmNvZGluZ3NMaW5lc1tpXS5pbmNsdWRlcygnLm0zdTgnKSkgewogICAgICAgICAgICAgICAgaWYgKGkgPiAwICYmIGVuY29kaW5nc0xpbmVzW2kgLSAxXS5zdGFydHNXaXRoKCcjRVhULVgtU1RSRUFNLUlORicpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGF0dHJpYnV0ZXMgPSBwYXJzZUF0dHJpYnV0ZXMoZW5jb2RpbmdzTGluZXNbaSAtIDFdKTsKICAgICAgICAgICAgICAgICAgICB2YXIgcmVzb2x1dGlvbiA9IGF0dHJpYnV0ZXNbJ1JFU09MVVRJT04nXTsKICAgICAgICAgICAgICAgICAgICB2YXIgZnJhbWVSYXRlID0gYXR0cmlidXRlc1snRlJBTUUtUkFURSddOwogICAgICAgICAgICAgICAgICAgIGlmIChyZXNvbHV0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxdWFsaXR5T3ZlcnJpZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxdWFsaXR5ID0gcmVzb2x1dGlvbi50b0xvd2VyQ2FzZSgpLnNwbGl0KCd4JylbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocXVhbGl0eSA9PSBxdWFsaXR5T3ZlcnJpZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWFsaXR5T3ZlcnJpZGVGb3VuZFF1YWxpdHkgPSBxdWFsaXR5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YWxpdHlPdmVycmlkZUZvdW5kRnJhbWVSYXRlID0gZnJhbWVSYXRlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRSZXNvbHV0aW9uVXJsID0gZW5jb2RpbmdzTGluZXNbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZyYW1lUmF0ZSA8IDQwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coYHF1YWxpdHlPdmVycmlkZShBKSBxdWFsaXR5OiR7cXVhbGl0eX0gZnJhbWVSYXRlOiR7ZnJhbWVSYXRlfWApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hlZFJlc29sdXRpb25Vcmw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChxdWFsaXR5IDwgcXVhbGl0eU92ZXJyaWRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiAobWF0Y2hlZFJlc29sdXRpb25VcmwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICBjb25zb2xlLmxvZyhgcXVhbGl0eU92ZXJyaWRlKEIpIHF1YWxpdHk6JHtxdWFsaXR5T3ZlcnJpZGVGb3VuZFF1YWxpdHl9IGZyYW1lUmF0ZToke3F1YWxpdHlPdmVycmlkZUZvdW5kRnJhbWVSYXRlfWApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICBjb25zb2xlLmxvZyhgcXVhbGl0eU92ZXJyaWRlKEMpIHF1YWxpdHk6JHtxdWFsaXR5fSBmcmFtZVJhdGU6JHtmcmFtZVJhdGV9YCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy99CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZWRSZXNvbHV0aW9uVXJsID8gbWF0Y2hlZFJlc29sdXRpb25VcmwgOiBlbmNvZGluZ3NMaW5lc1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoIXJlc29sdXRpb25JbmZvIHx8IHJlc29sdXRpb24gPT0gcmVzb2x1dGlvbkluZm8uUmVzb2x1dGlvbikgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIW1hdGNoZWRSZXNvbHV0aW9uVXJsIHx8ICghbWF0Y2hlZEZyYW1lUmF0ZSAmJiBmcmFtZVJhdGUgPT0gcmVzb2x1dGlvbkluZm8uRnJhbWVSYXRlKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRSZXNvbHV0aW9uVXJsID0gZW5jb2RpbmdzTGluZXNbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkRnJhbWVSYXRlID0gZnJhbWVSYXRlID09IHJlc29sdXRpb25JbmZvLkZyYW1lUmF0ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkRnJhbWVSYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoZWRSZXNvbHV0aW9uVXJsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdFVybCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0VXJsID0gZW5jb2RpbmdzTGluZXNbaV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGxhc3RVcmwgPSBlbmNvZGluZ3NMaW5lc1tpXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAocXVhbGl0eU92ZXJyaWRlKSB7CiAgICAgICAgICAgIHJldHVybiBsYXN0VXJsOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbWF0Y2hlZFJlc29sdXRpb25VcmwgPyBtYXRjaGVkUmVzb2x1dGlvblVybCA6IGZpcnN0VXJsOwogICAgfQogICAgYXN5bmMgZnVuY3Rpb24gZ2V0U3RyZWFtRm9yUmVzb2x1dGlvbihzdHJlYW1JbmZvLCByZXNvbHV0aW9uSW5mbywgZW5jb2RpbmdzTTN1OCwgZmFsbGJhY2tTdHJlYW1TdHIsIHBsYXllclR5cGUsIHJlYWxGZXRjaCkgewogICAgICAgIHZhciBxdWFsaXR5T3ZlcnJpZGUgPSBudWxsOwogICAgICAgIGlmIChzdHJlYW1JbmZvLkVuY29kaW5nc00zVThDYWNoZVtwbGF5ZXJUeXBlXS5SZXNvbHV0aW9uICE9IHJlc29sdXRpb25JbmZvLlJlc29sdXRpb24gfHwKICAgICAgICAgICAgc3RyZWFtSW5mby5FbmNvZGluZ3NNM1U4Q2FjaGVbcGxheWVyVHlwZV0uUmVxdWVzdFRpbWUgPCBEYXRlLm5vdygpIC0gRW5jb2RpbmdDYWNoZVRpbWVvdXQpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coYEJsb2NraW5nIGFkcyAodHlwZToke3BsYXllclR5cGV9LCByZXNvbHV0aW9uOiR7cmVzb2x1dGlvbkluZm8uUmVzb2x1dGlvbn0sIGZyYW1lUmF0ZToke3Jlc29sdXRpb25JbmZvLkZyYW1lUmF0ZX0sIHF1YWxpdHlPdmVycmlkZToke3F1YWxpdHlPdmVycmlkZX0pYCk7CiAgICAgICAgfQogICAgICAgIHN0cmVhbUluZm8uRW5jb2RpbmdzTTNVOENhY2hlW3BsYXllclR5cGVdLlJlcXVlc3RUaW1lID0gRGF0ZS5ub3coKTsKICAgICAgICBzdHJlYW1JbmZvLkVuY29kaW5nc00zVThDYWNoZVtwbGF5ZXJUeXBlXS5WYWx1ZSA9IGVuY29kaW5nc00zdTg7CiAgICAgICAgc3RyZWFtSW5mby5FbmNvZGluZ3NNM1U4Q2FjaGVbcGxheWVyVHlwZV0uUmVzb2x1dGlvbiA9IHJlc29sdXRpb25JbmZvLlJlc29sdXRpb247CiAgICAgICAgdmFyIHN0cmVhbU0zdThVcmwgPSBnZXRTdHJlYW1VcmxGb3JSZXNvbHV0aW9uKGVuY29kaW5nc00zdTgsIHJlc29sdXRpb25JbmZvLCBxdWFsaXR5T3ZlcnJpZGUpOwogICAgICAgIHZhciBzdHJlYW1NM3U4UmVzcG9uc2UgPSBhd2FpdCByZWFsRmV0Y2goc3RyZWFtTTN1OFVybCk7CiAgICAgICAgaWYgKHN0cmVhbU0zdThSZXNwb25zZS5zdGF0dXMgPT0gMjAwKSB7CiAgICAgICAgICAgIHZhciBtM3U4VGV4dCA9IGF3YWl0IHN0cmVhbU0zdThSZXNwb25zZS50ZXh0KCk7CiAgICAgICAgICAgIFdhc1Nob3dpbmdBZCA9IHRydWU7CiAgICAgICAgICAgIHBvc3RNZXNzYWdlKHsKICAgICAgICAgICAgICAgIGtleTogJ1Nob3dBZEJsb2NrQmFubmVyJwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcG9zdE1lc3NhZ2UoewogICAgICAgICAgICAgICAga2V5OiAnRm9yY2VDaGFuZ2VRdWFsaXR5JwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgaWYgKCFtM3U4VGV4dCB8fCBtM3U4VGV4dC5pbmNsdWRlcyhBZFNpZ25pZmllcikpIHsKICAgICAgICAgICAgICAgIHN0cmVhbUluZm8uRW5jb2RpbmdzTTNVOENhY2hlW3BsYXllclR5cGVdLlZhbHVlID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbTN1OFRleHQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc3RyZWFtSW5mby5FbmNvZGluZ3NNM1U4Q2FjaGVbcGxheWVyVHlwZV0uVmFsdWUgPSBudWxsOwogICAgICAgICAgICByZXR1cm4gZmFsbGJhY2tTdHJlYW1TdHI7CiAgICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gc3RyaXBVbnVzZWRQYXJhbXMoc3RyLCBwYXJhbXMpIHsKICAgICAgICBpZiAoIXBhcmFtcykgewogICAgICAgICAgICBwYXJhbXMgPSBbICd0b2tlbicsICdzaWcnIF07CiAgICAgICAgfQogICAgICAgIHZhciB0ZW1wVXJsID0gbmV3IFVSTCgnaHR0cHM6Ly9sb2NhbGhvc3QvJyArIHN0cik7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdGVtcFVybC5zZWFyY2hQYXJhbXMuZGVsZXRlKHBhcmFtc1tpXSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0ZW1wVXJsLnBhdGhuYW1lLnN1YnN0cmluZygxKSArIHRlbXBVcmwuc2VhcmNoOwogICAgfQogICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc00zVTgodXJsLCB0ZXh0U3RyLCByZWFsRmV0Y2gsIHBsYXllclR5cGUpIHsKICAgICAgICAvL0NoZWNrcyB0aGUgbTN1OCBmb3IgYWRzIGFuZCBpZiBpdCBmaW5kcyBvbmUsIGluc3RlYWQgcmV0dXJucyBhbiBhZC1mcmVlIHN0cmVhbS4KICAgICAgICB2YXIgc3RyZWFtSW5mbyA9IFN0cmVhbUluZm9zQnlVcmxbdXJsXTsKICAgICAgICAvL0FkIGJsb2NraW5nIGZvciBzcXVhZCBzdHJlYW1zIGlzIGRpc2FibGVkIGR1ZSB0byB0aGUgd2F5IG11bHRpcGxlIHdlYXZlciB1cmxzIGFyZSB1c2VkLiBObyB3b3JrYXJvdW5kIHNvIGZhci4KICAgICAgICBpZiAoSXNTcXVhZFN0cmVhbSA9PSB0cnVlKSB7CiAgICAgICAgICAgIHJldHVybiB0ZXh0U3RyOwogICAgICAgIH0KICAgICAgICBpZiAoIXRleHRTdHIpIHsKICAgICAgICAgICAgcmV0dXJuIHRleHRTdHI7CiAgICAgICAgfQogICAgICAgIC8vU29tZSBsaXZlIHN0cmVhbXMgdXNlIG1wNC4KICAgICAgICBpZiAoIXRleHRTdHIuaW5jbHVkZXMoJy50cycpICYmICF0ZXh0U3RyLmluY2x1ZGVzKCcubXA0JykpIHsKICAgICAgICAgICAgcmV0dXJuIHRleHRTdHI7CiAgICAgICAgfQogICAgICAgIHZhciBoYXZlQWRUYWdzID0gdGV4dFN0ci5pbmNsdWRlcyhBZFNpZ25pZmllcik7CiAgICAgICAgaWYgKGhhdmVBZFRhZ3MpIHsKICAgICAgICAgICAgdmFyIGlzTWlkcm9sbCA9IHRleHRTdHIuaW5jbHVkZXMoJyJNSURST0xMIicpIHx8IHRleHRTdHIuaW5jbHVkZXMoJyJtaWRyb2xsIicpOwogICAgICAgICAgICAvL1JlZHVjZXMgYWQgZnJlcXVlbmN5LiBUT0RPOiBSZWR1Y2UgdGhlIG51bWJlciBvZiByZXF1ZXN0cy4gVGhpcyBpcyByZWFsbHkgc3BhbW1pbmcgVHdpdGNoIHdpdGggcmVxdWVzdHMuCiAgICAgICAgICAgIGlmICghaXNNaWRyb2xsKSB7CiAgICAgICAgICAgICAgICBpZiAocGxheWVyVHlwZSA9PT0gUGxheWVyVHlwZTIpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbGluZXMgPSB0ZXh0U3RyLnJlcGxhY2UoJ1xyJywgJycpLnNwbGl0KCdcbicpOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxpbmUgPSBsaW5lc1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aCgnI0VYVElORicpICYmIGxpbmVzLmxlbmd0aCA+IGkgKyAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWxpbmUuaW5jbHVkZXMoJyxsaXZlJykgJiYgIXN0cmVhbUluZm8uUmVxdWVzdGVkQWRzLmhhcyhsaW5lc1tpICsgMV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT25seSByZXF1ZXN0IG9uZSAudHMgZmlsZSBwZXIgLm0zdTggcmVxdWVzdCB0byBhdm9pZCBtYWtpbmcgdG9vIG1hbnkgcmVxdWVzdHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdGZXRjaCBhZCAudHMgZmlsZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbUluZm8uUmVxdWVzdGVkQWRzLmFkZChsaW5lc1tpICsgMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZldGNoKGxpbmVzW2kgKyAxXSkudGhlbigocmVzcG9uc2UpPT57cmVzcG9uc2UuYmxvYigpfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIC8vdHJ5Tm90aWZ5VHdpdGNoKHRleHRTdHIpOwogICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBjdXJyZW50UmVzb2x1dGlvbiA9IG51bGw7CiAgICAgICAgICAgIGlmIChzdHJlYW1JbmZvICYmIHN0cmVhbUluZm8uVXJscykgewogICAgICAgICAgICAgICAgZm9yIChjb25zdCBbcmVzVXJsLCByZXNJbmZvXSBvZiBPYmplY3QuZW50cmllcyhzdHJlYW1JbmZvLlVybHMpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc1VybCA9PSB1cmwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlc29sdXRpb24gPSByZXNJbmZvOwogICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKHJlc0luZm8uUmVzb2x1dGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBLZWVwIHRoZSBtM3U4IGFyb3VuZCBmb3IgYSBsaXR0bGUgd2hpbGUgKG9uY2UgcGVyIGFkKSBiZWZvcmUgcmVxdWVzdGluZyBhIG5ldyBvbmUKICAgICAgICAgICAgdmFyIGVuY29kaW5nc00zVThDYWNoZSA9IHN0cmVhbUluZm8uRW5jb2RpbmdzTTNVOENhY2hlW3BsYXllclR5cGVdOwogICAgICAgICAgICBpZiAoZW5jb2RpbmdzTTNVOENhY2hlKSB7CiAgICAgICAgICAgICAgICBpZiAoZW5jb2RpbmdzTTNVOENhY2hlLlZhbHVlICYmIGVuY29kaW5nc00zVThDYWNoZS5SZXF1ZXN0VGltZSA+PSBEYXRlLm5vdygpIC0gRW5jb2RpbmdDYWNoZVRpbWVvdXQpIHsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0U3RyZWFtRm9yUmVzb2x1dGlvbihzdHJlYW1JbmZvLCBjdXJyZW50UmVzb2x1dGlvbiwgZW5jb2RpbmdzTTNVOENhY2hlLlZhbHVlLCBudWxsLCBwbGF5ZXJUeXBlLCByZWFsRmV0Y2gpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nc00zVThDYWNoZS5WYWx1ZSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgc3RyZWFtSW5mby5FbmNvZGluZ3NNM1U4Q2FjaGVbcGxheWVyVHlwZV0gPSB7CiAgICAgICAgICAgICAgICAgICAgUmVxdWVzdFRpbWU6IERhdGUubm93KCksCiAgICAgICAgICAgICAgICAgICAgVmFsdWU6IG51bGwsCiAgICAgICAgICAgICAgICAgICAgUmVzb2x1dGlvbjogbnVsbAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgYWNjZXNzVG9rZW5SZXNwb25zZSA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuKEN1cnJlbnRDaGFubmVsTmFtZSwgcGxheWVyVHlwZSk7CiAgICAgICAgICAgIGlmIChhY2Nlc3NUb2tlblJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7CiAgICAgICAgICAgICAgICB2YXIgYWNjZXNzVG9rZW4gPSBhd2FpdCBhY2Nlc3NUb2tlblJlc3BvbnNlLmpzb24oKTsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHVybEluZm8gPSBuZXcgVVJMKCdodHRwczovL3VzaGVyLnR0dm53Lm5ldC9hcGkvY2hhbm5lbC9obHMvJyArIEN1cnJlbnRDaGFubmVsTmFtZSArICcubTN1OCcgKyBVc2hlclBhcmFtcyk7CiAgICAgICAgICAgICAgICAgICAgdXJsSW5mby5zZWFyY2hQYXJhbXMuc2V0KCdzaWcnLCBhY2Nlc3NUb2tlbi5kYXRhLnN0cmVhbVBsYXliYWNrQWNjZXNzVG9rZW4uc2lnbmF0dXJlKTsKICAgICAgICAgICAgICAgICAgICB1cmxJbmZvLnNlYXJjaFBhcmFtcy5zZXQoJ3Rva2VuJywgYWNjZXNzVG9rZW4uZGF0YS5zdHJlYW1QbGF5YmFja0FjY2Vzc1Rva2VuLnZhbHVlKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZW5jb2RpbmdzTTN1OFJlc3BvbnNlID0gYXdhaXQgcmVhbEZldGNoKHVybEluZm8uaHJlZik7CiAgICAgICAgICAgICAgICAgICAgaWYgKGVuY29kaW5nc00zdThSZXNwb25zZS5zdGF0dXMgPT09IDIwMCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0U3RyZWFtRm9yUmVzb2x1dGlvbihzdHJlYW1JbmZvLCBjdXJyZW50UmVzb2x1dGlvbiwgYXdhaXQgZW5jb2RpbmdzTTN1OFJlc3BvbnNlLnRleHQoKSwgdGV4dFN0ciwgcGxheWVyVHlwZSwgcmVhbEZldGNoKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dFN0cjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHt9CiAgICAgICAgICAgICAgICByZXR1cm4gdGV4dFN0cjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0U3RyOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKFdhc1Nob3dpbmdBZCkgewogICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0ZpbmlzaGVkIGJsb2NraW5nIGFkcycpOwogICAgICAgICAgICAgICAgV2FzU2hvd2luZ0FkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAvL0hlcmUgd2UgcHV0IHBsYXllciBiYWNrIHRvIG9yaWdpbmFsIHF1YWxpdHkgYW5kIHJlbW92ZSB0aGUgYmxvY2tpbmcgbWVzc2FnZS4KICAgICAgICAgICAgICAgIHBvc3RNZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgICBrZXk6ICdGb3JjZUNoYW5nZVF1YWxpdHknLAogICAgICAgICAgICAgICAgICAgIHZhbHVlOiAnb3JpZ2luYWwnCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHBvc3RNZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgICBrZXk6ICdQYXVzZVJlc3VtZVBsYXllcicKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2UoewogICAgICAgICAgICAgICAgICAgIGtleTogJ0hpZGVBZEJsb2NrQmFubmVyJwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRleHRTdHI7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0ZXh0U3RyOwogICAgfQogICAgZnVuY3Rpb24gcGFyc2VBdHRyaWJ1dGVzKHN0cikgewogICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoCiAgICAgICAgICAgIHN0ci5zcGxpdCgvKD86XnwsKSgoPzpbXj1dKik9KD86IlteIl0qInxbXixdKikpLykKICAgICAgICAgICAgLmZpbHRlcihCb29sZWFuKQogICAgICAgICAgICAubWFwKHggPT4gewogICAgICAgICAgICAgICAgY29uc3QgaWR4ID0geC5pbmRleE9mKCc9Jyk7CiAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSB4LnN1YnN0cmluZygwLCBpZHgpOwogICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB4LnN1YnN0cmluZyhpZHggKyAxKTsKICAgICAgICAgICAgICAgIGNvbnN0IG51bSA9IE51bWJlcih2YWx1ZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gW2tleSwgTnVtYmVyLmlzTmFOKG51bSkgPyB2YWx1ZS5zdGFydHNXaXRoKCciJykgPyBKU09OLnBhcnNlKHZhbHVlKSA6IHZhbHVlIDogbnVtXTsKICAgICAgICAgICAgfSkpOwogICAgfQogICAgYXN5bmMgZnVuY3Rpb24gdHJ5Tm90aWZ5VHdpdGNoKHN0cmVhbU0zdTgpIHsKICAgICAgICAvL1dlIG5vdGlmeSB0aGF0IGFuIGFkIHdhcyByZXF1ZXN0ZWQgYnV0IHdhcyBub3QgdmlzaWJsZSBhbmQgd2FzIGFsc28gbXV0ZWQuCiAgICAgICAgdmFyIG1hdGNoZXMgPSBzdHJlYW1NM3U4Lm1hdGNoKC8jRVhULVgtREFURVJBTkdFOihJRD0ic3RpdGNoZWQtYWQtW15cbl0rKVxuLyk7CiAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID4gMSkgewogICAgICAgICAgICBjb25zdCBhdHRyU3RyaW5nID0gbWF0Y2hlc1sxXTsKICAgICAgICAgICAgY29uc3QgYXR0ciA9IHBhcnNlQXR0cmlidXRlcyhhdHRyU3RyaW5nKTsKICAgICAgICAgICAgdmFyIHBvZExlbmd0aCA9IHBhcnNlSW50KGF0dHJbJ1gtVFYtVFdJVENILUFELVBPRC1MRU5HVEgnXSA/IGF0dHJbJ1gtVFYtVFdJVENILUFELVBPRC1MRU5HVEgnXSA6ICcxJyk7CiAgICAgICAgICAgIHZhciBwb2RQb3NpdGlvbiA9IHBhcnNlSW50KGF0dHJbJ1gtVFYtVFdJVENILUFELVBPRC1QT1NJVElPTiddID8gYXR0clsnWC1UVi1UV0lUQ0gtQUQtUE9ELVBPU0lUSU9OJ10gOiAnMCcpOwogICAgICAgICAgICB2YXIgcmFkVG9rZW4gPSBhdHRyWydYLVRWLVRXSVRDSC1BRC1SQURTLVRPS0VOJ107CiAgICAgICAgICAgIHZhciBsaW5lSXRlbUlkID0gYXR0clsnWC1UVi1UV0lUQ0gtQUQtTElORS1JVEVNLUlEJ107CiAgICAgICAgICAgIHZhciBvcmRlcklkID0gYXR0clsnWC1UVi1UV0lUQ0gtQUQtT1JERVItSUQnXTsKICAgICAgICAgICAgdmFyIGNyZWF0aXZlSWQgPSBhdHRyWydYLVRWLVRXSVRDSC1BRC1DUkVBVElWRS1JRCddOwogICAgICAgICAgICB2YXIgYWRJZCA9IGF0dHJbJ1gtVFYtVFdJVENILUFELUFEVkVSVElTRVItSUQnXTsKICAgICAgICAgICAgdmFyIHJvbGxUeXBlID0gYXR0clsnWC1UVi1UV0lUQ0gtQUQtUk9MTC1UWVBFJ10udG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgY29uc3QgYmFzZURhdGEgPSB7CiAgICAgICAgICAgICAgICBzdGl0Y2hlZDogdHJ1ZSwKICAgICAgICAgICAgICAgIHJvbGxfdHlwZTogcm9sbFR5cGUsCiAgICAgICAgICAgICAgICBwbGF5ZXJfbXV0ZTogdHJ1ZSwKICAgICAgICAgICAgICAgIHBsYXllcl92b2x1bWU6IDAuMCwKICAgICAgICAgICAgICAgIHZpc2libGU6IGZhbHNlLAogICAgICAgICAgICB9OwogICAgICAgICAgICBmb3IgKGxldCBwb2RQb3NpdGlvbiA9IDA7IHBvZFBvc2l0aW9uIDwgcG9kTGVuZ3RoOyBwb2RQb3NpdGlvbisrKSB7CiAgICAgICAgICAgICAgICBjb25zdCBleHRlbmRlZERhdGEgPSB7CiAgICAgICAgICAgICAgICAgICAgLi4uYmFzZURhdGEsCiAgICAgICAgICAgICAgICAgICAgYWRfaWQ6IGFkSWQsCiAgICAgICAgICAgICAgICAgICAgYWRfcG9zaXRpb246IHBvZFBvc2l0aW9uLAogICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAwLAogICAgICAgICAgICAgICAgICAgIGNyZWF0aXZlX2lkOiBjcmVhdGl2ZUlkLAogICAgICAgICAgICAgICAgICAgIHRvdGFsX2FkczogcG9kTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgIG9yZGVyX2lkOiBvcmRlcklkLAogICAgICAgICAgICAgICAgICAgIGxpbmVfaXRlbV9pZDogbGluZUl0ZW1JZCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBhd2FpdCBncWxSZXF1ZXN0KGFkUmVjb3JkZ3FsUGFja2V0KCd2aWRlb19hZF9pbXByZXNzaW9uJywgcmFkVG9rZW4sIGV4dGVuZGVkRGF0YSkpOwogICAgICAgICAgICAgICAgZm9yIChsZXQgcXVhcnRpbGUgPSAwOyBxdWFydGlsZSA8IDQ7IHF1YXJ0aWxlKyspIHsKICAgICAgICAgICAgICAgICAgICBhd2FpdCBncWxSZXF1ZXN0KAogICAgICAgICAgICAgICAgICAgICAgICBhZFJlY29yZGdxbFBhY2tldCgndmlkZW9fYWRfcXVhcnRpbGVfY29tcGxldGUnLCByYWRUb2tlbiwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZXh0ZW5kZWREYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVhcnRpbGU6IHF1YXJ0aWxlICsgMSwKICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYXdhaXQgZ3FsUmVxdWVzdChhZFJlY29yZGdxbFBhY2tldCgndmlkZW9fYWRfcG9kX2NvbXBsZXRlJywgcmFkVG9rZW4sIGJhc2VEYXRhKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBmdW5jdGlvbiBhZFJlY29yZGdxbFBhY2tldChldmVudCwgcmFkVG9rZW4sIHBheWxvYWQpIHsKICAgICAgICByZXR1cm4gW3sKICAgICAgICAgICAgb3BlcmF0aW9uTmFtZTogJ0NsaWVudFNpZGVBZEV2ZW50SGFuZGxpbmdfUmVjb3JkQWRFdmVudCcsCiAgICAgICAgICAgIHZhcmlhYmxlczogewogICAgICAgICAgICAgICAgaW5wdXQ6IHsKICAgICAgICAgICAgICAgICAgICBldmVudE5hbWU6IGV2ZW50LAogICAgICAgICAgICAgICAgICAgIGV2ZW50UGF5bG9hZDogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksCiAgICAgICAgICAgICAgICAgICAgcmFkVG9rZW4sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBleHRlbnNpb25zOiB7CiAgICAgICAgICAgICAgICBwZXJzaXN0ZWRRdWVyeTogewogICAgICAgICAgICAgICAgICAgIHZlcnNpb246IDEsCiAgICAgICAgICAgICAgICAgICAgc2hhMjU2SGFzaDogJzdlNmM2OWU2ZWI1OWY4Y2NiOTdhYjczNjg2ZjNkOGI3ZDg1YTcyYTAyOTg3NDVjY2Q4YmZjNjhlNDA1NGNhNWInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9XTsKICAgIH0KICAgIGZ1bmN0aW9uIGdldEFjY2Vzc1Rva2VuKGNoYW5uZWxOYW1lLCBwbGF5ZXJUeXBlLCByZWFsRmV0Y2gpIHsKICAgICAgICB2YXIgYm9keSA9IG51bGw7CiAgICAgICAgdmFyIHRlbXBsYXRlUXVlcnkgPSAncXVlcnkgUGxheWJhY2tBY2Nlc3NUb2tlbl9UZW1wbGF0ZSgkbG9naW46IFN0cmluZyEsICRpc0xpdmU6IEJvb2xlYW4hLCAkdm9kSUQ6IElEISwgJGlzVm9kOiBCb29sZWFuISwgJHBsYXllclR5cGU6IFN0cmluZyEpIHsgIHN0cmVhbVBsYXliYWNrQWNjZXNzVG9rZW4oY2hhbm5lbE5hbWU6ICRsb2dpbiwgcGFyYW1zOiB7cGxhdGZvcm06ICJpb3MiLCBwbGF5ZXJCYWNrZW5kOiAibWVkaWFwbGF5ZXIiLCBwbGF5ZXJUeXBlOiAkcGxheWVyVHlwZX0pIEBpbmNsdWRlKGlmOiAkaXNMaXZlKSB7ICAgIHZhbHVlICAgIHNpZ25hdHVyZSAgICBfX3R5cGVuYW1lICB9ICB2aWRlb1BsYXliYWNrQWNjZXNzVG9rZW4oaWQ6ICR2b2RJRCwgcGFyYW1zOiB7cGxhdGZvcm06ICJpb3MiLCBwbGF5ZXJCYWNrZW5kOiAibWVkaWFwbGF5ZXIiLCBwbGF5ZXJUeXBlOiAkcGxheWVyVHlwZX0pIEBpbmNsdWRlKGlmOiAkaXNWb2QpIHsgICAgdmFsdWUgICAgc2lnbmF0dXJlICAgIF9fdHlwZW5hbWUgIH19JzsKICAgICAgICBib2R5ID0gewogICAgICAgICAgICBvcGVyYXRpb25OYW1lOiAnUGxheWJhY2tBY2Nlc3NUb2tlbl9UZW1wbGF0ZScsCiAgICAgICAgICAgIHF1ZXJ5OiB0ZW1wbGF0ZVF1ZXJ5LAogICAgICAgICAgICB2YXJpYWJsZXM6IHsKICAgICAgICAgICAgICAgICdpc0xpdmUnOiB0cnVlLAogICAgICAgICAgICAgICAgJ2xvZ2luJzogY2hhbm5lbE5hbWUsCiAgICAgICAgICAgICAgICAnaXNWb2QnOiBmYWxzZSwKICAgICAgICAgICAgICAgICd2b2RJRCc6ICcnLAogICAgICAgICAgICAgICAgJ3BsYXllclR5cGUnOiBwbGF5ZXJUeXBlCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHJldHVybiBncWxSZXF1ZXN0KGJvZHksIHJlYWxGZXRjaCk7CiAgICB9CiAgICBmdW5jdGlvbiBncWxSZXF1ZXN0KGJvZHksIHJlYWxGZXRjaCkgewogICAgICAgIGlmIChDbGllbnRJbnRlZ3JpdHlIZWFkZXIgPT0gbnVsbCkgewogICAgICAgICAgICAvL2NvbnNvbGUud2FybignQ2xpZW50SW50ZWdyaXR5SGVhZGVyIGlzIG51bGwnKTsKICAgICAgICAgICAgLy90aHJvdyAnQ2xpZW50SW50ZWdyaXR5SGVhZGVyIGlzIG51bGwnOwogICAgICAgIH0KICAgICAgICB2YXIgZmV0Y2hGdW5jID0gcmVhbEZldGNoID8gcmVhbEZldGNoIDogZmV0Y2g7CiAgICAgICAgaWYgKCFHUUxEZXZpY2VJRCkgewogICAgICAgICAgICB2YXIgZGNoYXJhY3RlcnMgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JzsKICAgICAgICAgICAgdmFyIGRjaGFyYWN0ZXJzTGVuZ3RoID0gZGNoYXJhY3RlcnMubGVuZ3RoOwogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDMyOyBpKyspIHsKICAgICAgICAgICAgICAgIEdRTERldmljZUlEICs9IGRjaGFyYWN0ZXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBkY2hhcmFjdGVyc0xlbmd0aCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBmZXRjaEZ1bmMoJ2h0dHBzOi8vZ3FsLnR3aXRjaC50di9ncWwnLCB7CiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAogICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShib2R5KSwKICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgJ0NsaWVudC1JRCc6IENsaWVudElELAogICAgICAgICAgICAgICAgJ0NsaWVudC1JbnRlZ3JpdHknOiBDbGllbnRJbnRlZ3JpdHlIZWFkZXIsCiAgICAgICAgICAgICAgICAnRGV2aWNlLUlEJzogR1FMRGV2aWNlSUQsCiAgICAgICAgICAgICAgICAnWC1EZXZpY2UtSWQnOiBHUUxEZXZpY2VJRCwKICAgICAgICAgICAgICAgICdDbGllbnQtVmVyc2lvbic6IENsaWVudFZlcnNpb24sCiAgICAgICAgICAgICAgICAnQ2xpZW50LVNlc3Npb24tSWQnOiBDbGllbnRTZXNzaW9uLAogICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBBdXRob3JpemF0aW9uSGVhZGVyCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0KICAgIGZ1bmN0aW9uIGRvVHdpdGNoUGxheWVyVGFzayhpc1BhdXNlUGxheSwgaXNDaGVja1F1YWxpdHksIGlzQ29ycmVjdEJ1ZmZlciwgaXNBdXRvUXVhbGl0eSwgc2V0QXV0b1F1YWxpdHkpIHsKICAgICAgICAvL1RoaXMgd2lsbCBkbyBhbiBpbnN0YW50IHBhdXNlL3BsYXkgdG8gcmV0dXJuIHRvIG9yaWdpbmFsIHF1YWxpdHkgb25jZSB0aGUgYWQgaXMgZmluaXNoZWQuCiAgICAgICAgLy9XZSBhbHNvIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGdldCB0aGUgY3VycmVudCB2aWRlbyBwbGF5ZXIgcXVhbGl0eSBzZXQgYnkgdGhlIHVzZXIuCiAgICAgICAgLy9XZSBhbHNvIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIHF1aWNrbHkgcGF1c2UvcGxheSB0aGUgcGxheWVyIHdoZW4gc3dpdGNoaW5nIHRhYnMgdG8gc3RvcCBkZWxheXMuCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgdmFyIHZpZGVvQ29udHJvbGxlciA9IG51bGw7CiAgICAgICAgICAgIHZhciB2aWRlb1BsYXllciA9IG51bGw7CiAgICAgICAgICAgIGZ1bmN0aW9uIGZpbmRSZWFjdE5vZGUocm9vdCwgY29uc3RyYWludCkgewogICAgICAgICAgICAgICAgaWYgKHJvb3Quc3RhdGVOb2RlICYmIGNvbnN0cmFpbnQocm9vdC5zdGF0ZU5vZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvb3Quc3RhdGVOb2RlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbGV0IG5vZGUgPSByb290LmNoaWxkOwogICAgICAgICAgICAgICAgd2hpbGUgKG5vZGUpIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBmaW5kUmVhY3ROb2RlKG5vZGUsIGNvbnN0cmFpbnQpOwogICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUuc2libGluZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZ1bmN0aW9uIGZpbmRSZWFjdFJvb3ROb2RlKCkgewogICAgICAgICAgICAgICAgdmFyIHJlYWN0Um9vdE5vZGUgPSBudWxsOwogICAgICAgICAgICAgICAgdmFyIHJvb3ROb2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3Jvb3QnKTsKICAgICAgICAgICAgICAgIGlmIChyb290Tm9kZSAmJiByb290Tm9kZS5fcmVhY3RSb290Q29udGFpbmVyICYmIHJvb3ROb2RlLl9yZWFjdFJvb3RDb250YWluZXIuX2ludGVybmFsUm9vdCAmJiByb290Tm9kZS5fcmVhY3RSb290Q29udGFpbmVyLl9pbnRlcm5hbFJvb3QuY3VycmVudCkgewogICAgICAgICAgICAgICAgICAgIHJlYWN0Um9vdE5vZGUgPSByb290Tm9kZS5fcmVhY3RSb290Q29udGFpbmVyLl9pbnRlcm5hbFJvb3QuY3VycmVudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChyZWFjdFJvb3ROb2RlID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyTmFtZSA9IE9iamVjdC5rZXlzKHJvb3ROb2RlKS5maW5kKHggPT4geC5zdGFydHNXaXRoKCdfX3JlYWN0Q29udGFpbmVyJykpOwogICAgICAgICAgICAgICAgICAgIGlmIChjb250YWluZXJOYW1lICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmVhY3RSb290Tm9kZSA9IHJvb3ROb2RlW2NvbnRhaW5lck5hbWVdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiByZWFjdFJvb3ROb2RlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciByZWFjdFJvb3ROb2RlID0gZmluZFJlYWN0Um9vdE5vZGUoKTsKICAgICAgICAgICAgaWYgKCFyZWFjdFJvb3ROb2RlKSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQ291bGQgbm90IGZpbmQgcmVhY3Qgcm9vdCcpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZpZGVvUGxheWVyID0gZmluZFJlYWN0Tm9kZShyZWFjdFJvb3ROb2RlLCBub2RlID0+IG5vZGUuc2V0UGxheWVyQWN0aXZlICYmIG5vZGUucHJvcHMgJiYgbm9kZS5wcm9wcy5tZWRpYVBsYXllckluc3RhbmNlKTsKICAgICAgICAgICAgdmlkZW9QbGF5ZXIgPSB2aWRlb1BsYXllciAmJiB2aWRlb1BsYXllci5wcm9wcyAmJiB2aWRlb1BsYXllci5wcm9wcy5tZWRpYVBsYXllckluc3RhbmNlID8gdmlkZW9QbGF5ZXIucHJvcHMubWVkaWFQbGF5ZXJJbnN0YW5jZSA6IG51bGw7CiAgICAgICAgICAgIGlmIChpc1BhdXNlUGxheSkgewogICAgICAgICAgICAgICAgdmlkZW9QbGF5ZXIucGF1c2UoKTsKICAgICAgICAgICAgICAgIHZpZGVvUGxheWVyLnBsYXkoKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNDaGVja1F1YWxpdHkpIHsKICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmlkZW9QbGF5ZXIuZ2V0UXVhbGl0eSgpID09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIHBsYXllclF1YWxpdHkgPSBKU09OLnN0cmluZ2lmeSh2aWRlb1BsYXllci5nZXRRdWFsaXR5KCkpOwogICAgICAgICAgICAgICAgaWYgKHBsYXllclF1YWxpdHkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGxheWVyUXVhbGl0eTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpc0F1dG9RdWFsaXR5KSB7CiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZpZGVvUGxheWVyLmlzQXV0b1F1YWxpdHlNb2RlKCkgPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgYXV0b1F1YWxpdHkgPSB2aWRlb1BsYXllci5pc0F1dG9RdWFsaXR5TW9kZSgpOwogICAgICAgICAgICAgICAgaWYgKGF1dG9RdWFsaXR5KSB7CiAgICAgICAgICAgICAgICAgICAgdmlkZW9QbGF5ZXIuc2V0QXV0b1F1YWxpdHlNb2RlKGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXV0b1F1YWxpdHk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoc2V0QXV0b1F1YWxpdHkpIHsKICAgICAgICAgICAgICAgIHZpZGVvUGxheWVyLnNldEF1dG9RdWFsaXR5TW9kZSh0cnVlKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICAvL1RoaXMgb25seSBoYXBwZW5zIHdoZW4gc3dpdGNoaW5nIHRhYnMgYW5kIGlzIHRvIGNvcnJlY3QgdGhlIGhpZ2ggbGF0ZW5jeSBjYXVzZWQgd2hlbiBvcGVuaW5nIGJhY2tncm91bmQgdGFicyBhbmQgZ29pbmcgdG8gdGhlbSBhdCBhIGxhdGVyIHRpbWUuCiAgICAgICAgICAgIC8vV2UgY2hlY2sgdGhhdCB0aGlzIGlzIGEgbGl2ZSBzdHJlYW0gYnkgdGhlIHBhZ2UgVVJMLCB0byBwcmV2ZW50IHZvZC9jbGlwIHBhdXNlL3BsYXlzLgogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRQYWdlVVJMID0gZG9jdW1lbnQuVVJMOwogICAgICAgICAgICAgICAgdmFyIGlzTGl2ZSA9IHRydWU7CiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhZ2VVUkwuaW5jbHVkZXMoJ3ZpZGVvcy8nKSB8fCBjdXJyZW50UGFnZVVSTC5pbmNsdWRlcygnY2xpcC8nKSkgewogICAgICAgICAgICAgICAgICAgIGlzTGl2ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGlzQ29ycmVjdEJ1ZmZlciAmJiBpc0xpdmUpIHsKICAgICAgICAgICAgICAgICAgICAvL0EgdGltZXIgaXMgbmVlZGVkIGR1ZSB0byB0aGUgcGxheWVyIG5vdCByZXN1bWluZyB3aXRob3V0IGl0LgogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vSWYgbGF0ZW5jeSB0byBicm9hZGNhc3RlciBpcyBhYm92ZSA1IG9yIDE1IHNlY29uZHMgdXBvbiBzd2l0Y2hpbmcgdGFicywgd2UgcGF1c2UgYW5kIHBsYXkgdGhlIHBsYXllciB0byByZXNldCB0aGUgbGF0ZW5jeS4KICAgICAgICAgICAgICAgICAgICAgICAgLy9JZiBsYXRlbmN5IGlzIGJldHdlZW4gMC02LCB1c2VyIGNhbiBtYW51YWxseSBwYXVzZSBhbmQgcmVzdW1lIHRvIHJlc2V0IGxhdGVuY3kgZnVydGhlci4KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZGVvUGxheWVyLmlzTGl2ZUxvd0xhdGVuY3koKSAmJiB2aWRlb1BsYXllci5nZXRMaXZlTGF0ZW5jeSgpID4gNSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9QbGF5ZXIucGF1c2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvUGxheWVyLnBsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2aWRlb1BsYXllci5nZXRMaXZlTGF0ZW5jeSgpID4gMTUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvUGxheWVyLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWRlb1BsYXllci5wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LCAzMDAwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fQogICAgICAgIH0gY2F0Y2ggKGVycikge30KICAgIH0KICAgIHdpbmRvdy5yZWxvYWRUd2l0Y2hQbGF5ZXIgPSBkb1R3aXRjaFBsYXllclRhc2s7CiAgICB2YXIgbG9jYWxEZXZpY2VJRCA9IG51bGw7CiAgICBsb2NhbERldmljZUlEID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsb2NhbF9jb3B5X3VuaXF1ZV9pZCcpOwogICAgZnVuY3Rpb24gcG9zdFR3aXRjaFdvcmtlck1lc3NhZ2Uoa2V5LCB2YWx1ZSkgewogICAgICAgIHR3aXRjaFdvcmtlcnMuZm9yRWFjaCgod29ya2VyKSA9PiB7CiAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7a2V5OiBrZXksIHZhbHVlOiB2YWx1ZX0pOwogICAgICAgIH0pOwogICAgfQogICAgZnVuY3Rpb24gaG9va0ZldGNoKCkgewogICAgICAgIHZhciByZWFsRmV0Y2ggPSB3aW5kb3cuZmV0Y2g7CiAgICAgICAgd2luZG93LmZldGNoID0gZnVuY3Rpb24odXJsLCBpbml0LCAuLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICh0eXBlb2YgdXJsID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgLy9DaGVjayBpZiBzcXVhZCBzdHJlYW0uCiAgICAgICAgICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLmluY2x1ZGVzKCcvc3F1YWQnKSkgewogICAgICAgICAgICAgICAgICAgIHBvc3RUd2l0Y2hXb3JrZXJNZXNzYWdlKCdVcGRhdGVJc1NxdWFkU3RyZWFtJywgdHJ1ZSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHBvc3RUd2l0Y2hXb3JrZXJNZXNzYWdlKCdVcGRhdGVJc1NxdWFkU3RyZWFtJywgZmFsc2UpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHVybC5pbmNsdWRlcygnL2FjY2Vzc190b2tlbicpIHx8IHVybC5pbmNsdWRlcygnZ3FsJykpIHsKICAgICAgICAgICAgICAgICAgICAvL0RldmljZSBJRCBpcyB1c2VkIHdoZW4gbm90aWZ5aW5nIFR3aXRjaCBvZiBhZHMuCiAgICAgICAgICAgICAgICAgICAgdmFyIGRldmljZUlkID0gaW5pdC5oZWFkZXJzWydYLURldmljZS1JZCddOwogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGV2aWNlSWQgIT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUlkID0gaW5pdC5oZWFkZXJzWydEZXZpY2UtSUQnXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy9BZGRlZCB0byBwcmV2ZW50IGV2ZW50dWFsIFVCbG9jayBjb25mbGljdHMuCiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZXZpY2VJZCA9PT0gJ3N0cmluZycgJiYgIWRldmljZUlkLmluY2x1ZGVzKCd0d2l0Y2gtd2ViLXdhbGwtbWFzb24nKSkgewogICAgICAgICAgICAgICAgICAgICAgICBHUUxEZXZpY2VJRCA9IGRldmljZUlkOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobG9jYWxEZXZpY2VJRCkgewogICAgICAgICAgICAgICAgICAgICAgICBHUUxEZXZpY2VJRCA9IGxvY2FsRGV2aWNlSUQucmVwbGFjZSgnIicsICcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgR1FMRGV2aWNlSUQgPSBHUUxEZXZpY2VJRC5yZXBsYWNlKCciJywgJycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoR1FMRGV2aWNlSUQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpbml0LmhlYWRlcnNbJ1gtRGV2aWNlLUlkJ10gPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0LmhlYWRlcnNbJ1gtRGV2aWNlLUlkJ10gPSBHUUxEZXZpY2VJRDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGluaXQuaGVhZGVyc1snRGV2aWNlLUlEJ10gPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0LmhlYWRlcnNbJ0RldmljZS1JRCddID0gR1FMRGV2aWNlSUQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcG9zdFR3aXRjaFdvcmtlck1lc3NhZ2UoJ1VwZGF0ZURldmljZUlkJywgR1FMRGV2aWNlSUQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAvL0NsaWVudCB2ZXJzaW9uIGlzIHVzZWQgaW4gR1FMIHJlcXVlc3RzLgogICAgICAgICAgICAgICAgICAgIHZhciBjbGllbnRWZXJzaW9uID0gaW5pdC5oZWFkZXJzWydDbGllbnQtVmVyc2lvbiddOwogICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnRWZXJzaW9uICYmIHR5cGVvZiBjbGllbnRWZXJzaW9uID09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIENsaWVudFZlcnNpb24gPSBjbGllbnRWZXJzaW9uOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoQ2xpZW50VmVyc2lvbikgewogICAgICAgICAgICAgICAgICAgICAgICBwb3N0VHdpdGNoV29ya2VyTWVzc2FnZSgnVXBkYXRlQ2xpZW50VmVyc2lvbicsIENsaWVudFZlcnNpb24pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAvL0NsaWVudCBzZXNzaW9uIGlzIHVzZWQgaW4gR1FMIHJlcXVlc3RzLgogICAgICAgICAgICAgICAgICAgIHZhciBjbGllbnRTZXNzaW9uID0gaW5pdC5oZWFkZXJzWydDbGllbnQtU2Vzc2lvbi1JZCddOwogICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnRTZXNzaW9uICYmIHR5cGVvZiBjbGllbnRTZXNzaW9uID09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIENsaWVudFNlc3Npb24gPSBjbGllbnRTZXNzaW9uOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoQ2xpZW50U2Vzc2lvbikgewogICAgICAgICAgICAgICAgICAgICAgICBwb3N0VHdpdGNoV29ya2VyTWVzc2FnZSgnVXBkYXRlQ2xpZW50U2Vzc2lvbicsIENsaWVudFNlc3Npb24pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAvL0NsaWVudCBJRCBpcyB1c2VkIGluIEdRTCByZXF1ZXN0cy4KICAgICAgICAgICAgICAgICAgICBpZiAodXJsLmluY2x1ZGVzKCdncWwnKSAmJiBpbml0ICYmIHR5cGVvZiBpbml0LmJvZHkgPT09ICdzdHJpbmcnICYmIGluaXQuYm9keS5pbmNsdWRlcygnUGxheWJhY2tBY2Nlc3NUb2tlbicpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjbGllbnRJZCA9IGluaXQuaGVhZGVyc1snQ2xpZW50LUlEJ107CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnRJZCAmJiB0eXBlb2YgY2xpZW50SWQgPT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWVudElEID0gY2xpZW50SWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJZCA9IGluaXQuaGVhZGVyc1snQ2xpZW50LUlkJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2xpZW50SWQgJiYgdHlwZW9mIGNsaWVudElkID09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpZW50SUQgPSBjbGllbnRJZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQ2xpZW50SUQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RUd2l0Y2hXb3JrZXJNZXNzYWdlKCdVcGRhdGVDbGllbnRJZCcsIENsaWVudElEKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAvL0NsaWVudCBpbnRlZ3JpdHkgaGVhZGVyCiAgICAgICAgICAgICAgICAgICAgICAgIENsaWVudEludGVncml0eUhlYWRlciA9IGluaXQuaGVhZGVyc1snQ2xpZW50LUludGVncml0eSddOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQ2xpZW50SW50ZWdyaXR5SGVhZGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0VHdpdGNoV29ya2VyTWVzc2FnZSgnVXBkYXRlQ2xpZW50SW50ZWdyaXR5SGVhZGVyJywgQ2xpZW50SW50ZWdyaXR5SGVhZGVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAvL0F1dGhvcml6YXRpb24gaGVhZGVyCiAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb25IZWFkZXIgPSBpbml0LmhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEF1dGhvcml6YXRpb25IZWFkZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RUd2l0Y2hXb3JrZXJNZXNzYWdlKCdVcGRhdGVBdXRob3JpemF0aW9uSGVhZGVyJywgQXV0aG9yaXphdGlvbkhlYWRlcik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy9UbyBwcmV2ZW50IHBhdXNlL3Jlc3VtZSBsb29wIGZvciBtaWQtcm9sbHMuCiAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmNsdWRlcygnZ3FsJykgJiYgaW5pdCAmJiB0eXBlb2YgaW5pdC5ib2R5ID09PSAnc3RyaW5nJyAmJiBpbml0LmJvZHkuaW5jbHVkZXMoJ1BsYXliYWNrQWNjZXNzVG9rZW4nKSAmJiBpbml0LmJvZHkuaW5jbHVkZXMoJ3BpY3R1cmUtYnktcGljdHVyZScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGluaXQuYm9keSA9ICcnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB2YXIgaXNQQllQUmVxdWVzdCA9IHVybC5pbmNsdWRlcygncGljdHVyZS1ieS1waWN0dXJlJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUEJZUFJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gJyc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByZWFsRmV0Y2guYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgfQogICAgZnVuY3Rpb24gb25Db250ZW50TG9hZGVkKCkgewogICAgICAgIC8vIFRoaXMgc3RvcHMgVHdpdGNoIGZyb20gcGF1c2luZyB0aGUgcGxheWVyIHdoZW4gaW4gYW5vdGhlciB0YWIgYW5kIGFuIGFkIHNob3dzLgogICAgICAgIC8vIFRha2VuIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3NhdWNldHR2L1ZpZGVvQWRCbG9ja0ZvclR3aXRjaC9ibG9iL2NlZmNlOWQyYjU2NTc2OWM3N2UzNjY2YWM4MjM0YzNhY2ZlMjBkODMvY2hyb21lL2NvbnRlbnQuanMjTDMwCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAndmlzaWJpbGl0eVN0YXRlJywgewogICAgICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAndmlzaWJsZSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH1jYXRjaHt9CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywgewogICAgICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfWNhdGNoe30KICAgICAgICB2YXIgYmxvY2sgPSBlID0+IHsKICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOwogICAgICAgIH07CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIGJsb2NrLCB0cnVlKTsKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlJywgYmxvY2ssIHRydWUpOwogICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21venZpc2liaWxpdHljaGFuZ2UnLCBibG9jaywgdHJ1ZSk7CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaGFzRm9jdXMnLCBibG9jaywgdHJ1ZSk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYgKC9GaXJlZm94Ly50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKSB7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZG9jdW1lbnQsICdtb3pIaWRkZW4nLCB7CiAgICAgICAgICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZG9jdW1lbnQsICd3ZWJraXRIaWRkZW4nLCB7CiAgICAgICAgICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9Y2F0Y2h7fQogICAgfQogICAgaWYgKGlzV29ya2VyRG91YmxlSG9va2VkKG51bGwsICd0d2l0Y2gnKSkgewogICAgICAgIGNvbnNvbGUubG9nKCdUd2l0Y2ggV29ya2VyIGlzIGFscmVhZHkgaG9va2VkLiBTa2lwcGluZyAodmFmdCknKTsKICAgIH0gZWxzZSB7CiAgICAgICAgd2luZG93LnJlbG9hZFR3aXRjaFBsYXllciA9IHJlbG9hZFR3aXRjaFBsYXllcjsKICAgICAgICBkZWNsYXJlT3B0aW9ucyh3aW5kb3cpOwogICAgICAgIGhvb2tXaW5kb3dXb3JrZXIoKTsKICAgICAgICBob29rRmV0Y2goKTsKICAgICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIiB8fCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAibG9hZGVkIiB8fCBkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiaW50ZXJhY3RpdmUiKSB7CiAgICAgICAgICAgIG9uQ29udGVudExvYWRlZCgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBvbkNvbnRlbnRMb2FkZWQoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfQp9KSgpOwo="},{"name":"video-swap-new-ublock-origin.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"KGZ1bmN0aW9uKCkgewogICAgaWYgKCAvKF58XC4pdHdpdGNoXC50diQvLnRlc3QoZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWUpID09PSBmYWxzZSApIHsgcmV0dXJuOyB9CiAgICBmdW5jdGlvbiBkZWNsYXJlT3B0aW9ucyhzY29wZSkgewogICAgICAgIC8vIE9wdGlvbnMgLyBnbG9iYWxzCiAgICAgICAgc2NvcGUuT1BUX01PREVfU1RSSVBfQURfU0VHTUVOVFMgPSB0cnVlOwogICAgICAgIHNjb3BlLk9QVF9NT0RFX05PVElGWV9BRFNfV0FUQ0hFRCA9IHRydWU7CiAgICAgICAgc2NvcGUuT1BUX01PREVfTk9USUZZX0FEU19XQVRDSEVEX01JTl9SRVFVRVNUUyA9IGZhbHNlOwogICAgICAgIHNjb3BlLk9QVF9CQUNLVVBfUExBWUVSX1RZUEUgPSAnYXV0b3BsYXknOwogICAgICAgIHNjb3BlLk9QVF9CQUNLVVBfUExBVEZPUk0gPSAnaW9zJzsKICAgICAgICBzY29wZS5PUFRfUkVHVUxBUl9QTEFZRVJfVFlQRSA9ICdzaXRlJzsKICAgICAgICBzY29wZS5PUFRfQUNDRVNTX1RPS0VOX1BMQVlFUl9UWVBFID0gbnVsbDsKICAgICAgICBzY29wZS5PUFRfU0hPV19BRF9CQU5ORVIgPSB0cnVlOwogICAgICAgIHNjb3BlLkFEX1NJR05JRklFUiA9ICdzdGl0Y2hlZC1hZCc7CiAgICAgICAgc2NvcGUuTElWRV9TSUdOSUZJRVIgPSAnLGxpdmUnOwogICAgICAgIHNjb3BlLkNMSUVOVF9JRCA9ICdraW1uZTc4a3gzbmN4NmJyZ280bXY2d2tpNWgxa28nOwogICAgICAgIC8vIFRoZXNlIGFyZSBvbmx5IHJlYWxseSBmb3IgV29ya2VyIHNjb3BlLi4uCiAgICAgICAgc2NvcGUuU3RyZWFtSW5mb3MgPSBbXTsKICAgICAgICBzY29wZS5TdHJlYW1JbmZvc0J5VXJsID0gW107CiAgICAgICAgc2NvcGUuQ3VycmVudENoYW5uZWxOYW1lRnJvbU0zVTggPSBudWxsOwogICAgICAgIC8vIE5lZWQgdGhpcyBpbiBib3RoIHNjb3Blcy4gV2luZG93IHNjb3BlIG5lZWRzIHRvIHVwZGF0ZSB0aGlzIHRvIHdvcmtlciBzY29wZS4KICAgICAgICBzY29wZS5ncWxfZGV2aWNlX2lkID0gbnVsbDsKICAgICAgICBzY29wZS5DbGllbnRJbnRlZ3JpdHlIZWFkZXIgPSBudWxsOwogICAgICAgIHNjb3BlLkF1dGhvcml6YXRpb25IZWFkZXIgPSBudWxsOwogICAgfQogICAgdmFyIHR3aXRjaFdvcmtlcnMgPSBbXTsKICAgIGNvbnN0IG9sZFdvcmtlciA9IHdpbmRvdy5Xb3JrZXI7CiAgICBmdW5jdGlvbiBpc1dvcmtlckRvdWJsZUhvb2tlZChvdXJXb3JrZXIsIGlkZW50aWZpZXIpIHsKICAgICAgICB2YXIgb3VyV29ya2VyU3RyaW5nID0gb3VyV29ya2VyID8gb3VyV29ya2VyLnRvU3RyaW5nKCkgOiBudWxsOwogICAgICAgIHZhciBwcm90byA9IHdpbmRvdy5Xb3JrZXI7CiAgICAgICAgd2hpbGUgKHByb3RvKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIHdvcmtlclN0cmluZyA9IHByb3RvLnRvU3RyaW5nKCk7CiAgICAgICAgICAgIGlmICh3b3JrZXJTdHJpbmcuaW5jbHVkZXMoaWRlbnRpZmllcikgJiYgd29ya2VyU3RyaW5nICE9PSBvdXJXb3JrZXJTdHJpbmcpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHByb3RvKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgZnVuY3Rpb24gaG9va1dpbmRvd1dvcmtlcigpIHsKICAgICAgICB2YXIgbmV3V29ya2VyID0gd2luZG93LldvcmtlciA9IGNsYXNzIFdvcmtlciBleHRlbmRzIG9sZFdvcmtlciB7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKHR3aXRjaEJsb2JVcmwsIG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgIHZhciBpc1R3aXRjaFdvcmtlciA9IGZhbHNlOwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBpc1R3aXRjaFdvcmtlciA9IG5ldyBVUkwodHdpdGNoQmxvYlVybCkub3JpZ2luLmVuZHNXaXRoKCcudHdpdGNoLnR2Jyk7CiAgICAgICAgICAgICAgICB9IGNhdGNoIHt9CiAgICAgICAgICAgICAgICBpZiAoaXNXb3JrZXJEb3VibGVIb29rZWQobmV3V29ya2VyLCAndHdpdGNoJykpIHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnTXVsdGlwbGUgdHdpdGNoIGFkYmxvY2tlcnMgaW5zdGFsbGVkLiBTa2lwcGluZyBXb3JrZXIgaG9vayAodmlkZW8tc3dhcC1uZXcpJyk7CiAgICAgICAgICAgICAgICAgICAgaXNUd2l0Y2hXb3JrZXIgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghaXNUd2l0Y2hXb3JrZXIpIHsKICAgICAgICAgICAgICAgICAgICBzdXBlcih0d2l0Y2hCbG9iVXJsLCBvcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgbmV3QmxvYlN0ciA9IGAKICAgICAgICAgICAgICAgICAgICAke3Byb2Nlc3NNM1U4LnRvU3RyaW5nKCl9CiAgICAgICAgICAgICAgICAgICAgJHtob29rV29ya2VyRmV0Y2gudG9TdHJpbmcoKX0KICAgICAgICAgICAgICAgICAgICAke2RlY2xhcmVPcHRpb25zLnRvU3RyaW5nKCl9CiAgICAgICAgICAgICAgICAgICAgJHtnZXRBY2Nlc3NUb2tlbi50b1N0cmluZygpfQogICAgICAgICAgICAgICAgICAgICR7Z3FsUmVxdWVzdC50b1N0cmluZygpfQogICAgICAgICAgICAgICAgICAgICR7bWFrZUdyYXBoUWxQYWNrZXQudG9TdHJpbmcoKX0KICAgICAgICAgICAgICAgICAgICAke3RyeU5vdGlmeUFkc1dhdGNoZWRNM1U4LnRvU3RyaW5nKCl9CiAgICAgICAgICAgICAgICAgICAgJHtwYXJzZUF0dHJpYnV0ZXMudG9TdHJpbmcoKX0KICAgICAgICAgICAgICAgICAgICAke29uRm91bmRBZC50b1N0cmluZygpfQogICAgICAgICAgICAgICAgICAgICR7Z2V0V2FzbVdvcmtlclVybC50b1N0cmluZygpfQogICAgICAgICAgICAgICAgICAgIHZhciB3b3JrZXJVcmwgPSBnZXRXYXNtV29ya2VyVXJsKCcke3R3aXRjaEJsb2JVcmwucmVwbGFjZUFsbCgiJyIsICIlMjciKX0nKTsKICAgICAgICAgICAgICAgICAgICBpZiAod29ya2VyVXJsICYmIHdvcmtlclVybC5pbmNsdWRlcygnYXNzZXRzLnR3aXRjaC50di9hc3NldHMvYW1hem9uLWl2cy13YXNtd29ya2VyJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVjbGFyZU9wdGlvbnMoc2VsZik7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmRhdGEua2V5ID09ICdVYm9VcGRhdGVEZXZpY2VJZCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncWxfZGV2aWNlX2lkID0gZS5kYXRhLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlLmRhdGEua2V5ID09ICdVcGRhdGVDbGllbnRJbnRlZ3JpdHlIZWFkZXInKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpZW50SW50ZWdyaXR5SGVhZGVyID0gZS5kYXRhLnZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlLmRhdGEua2V5ID09ICdVcGRhdGVBdXRob3JpemF0aW9uSGVhZGVyJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb25IZWFkZXIgPSBlLmRhdGEudmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBob29rV29ya2VyRmV0Y2goKTsKICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0U2NyaXB0cyh3b3JrZXJVcmwpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGAKICAgICAgICAgICAgICAgIHN1cGVyKFVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW25ld0Jsb2JTdHJdKSksIG9wdGlvbnMpOwogICAgICAgICAgICAgICAgdHdpdGNoV29ya2Vycy5wdXNoKHRoaXMpOwogICAgICAgICAgICAgICAgdGhpcy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gTk9URTogUmVtb3ZlZCBhZERpdiBjYWNoaW5nIGFzICcudmlkZW8tcGxheWVyJyBjYW4gY2hhbmdlIGJldHdlZW4gc3RyZWFtcz8KICAgICAgICAgICAgICAgICAgICBpZiAoZS5kYXRhLmtleSA9PSAnVWJvU2hvd0FkQmFubmVyJykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWREaXYgPSBnZXRBZERpdigpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWREaXYgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWREaXYuUC50ZXh0Q29udGVudCA9ICdCbG9ja2luZycgKyAoZS5kYXRhLmlzTWlkcm9sbCA/ICcgbWlkcm9sbCcgOiAnJykgKyAnIGFkcyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoT1BUX1NIT1dfQURfQkFOTkVSKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWREaXYuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUuZGF0YS5rZXkgPT0gJ1Vib0hpZGVBZEJhbm5lcicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkRGl2ID0gZ2V0QWREaXYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFkRGl2ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkRGl2LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUuZGF0YS5rZXkgPT0gJ1Vib0NoYW5uZWxOYW1lTTNVOENoYW5nZWQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ00zVTggY2hhbm5lbCBuYW1lIGNoYW5nZWQgdG8gJyArIGUuZGF0YS52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlLmRhdGEua2V5ID09ICdVYm9SZWxvYWRQbGF5ZXInKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlbG9hZFR3aXRjaFBsYXllcigpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5kYXRhLmtleSA9PSAnVWJvUGF1c2VSZXN1bWVQbGF5ZXInKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlbG9hZFR3aXRjaFBsYXllcihmYWxzZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlLmRhdGEua2V5ID09ICdVYm9TZWVrUGxheWVyJykgewogICAgICAgICAgICAgICAgICAgICAgICByZWxvYWRUd2l0Y2hQbGF5ZXIodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZnVuY3Rpb24gZ2V0QWREaXYoKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHBsYXllclJvb3REaXYgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudmlkZW8tcGxheWVyJyk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGFkRGl2ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICBpZiAocGxheWVyUm9vdERpdiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFkRGl2ID0gcGxheWVyUm9vdERpdi5xdWVyeVNlbGVjdG9yKCcudWJvLW92ZXJsYXknKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFkRGl2ID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZERpdi5jbGFzc05hbWUgPSAndWJvLW92ZXJsYXknOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWREaXYuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9InBsYXllci1hZC1ub3RpY2UiIHN0eWxlPSJjb2xvcjogd2hpdGU7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC44KTsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDBweDsgbGVmdDogMHB4OyBwYWRkaW5nOiA1cHg7Ij48cD48L3A+PC9kaXY+JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkRGl2LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZERpdi5QID0gYWREaXYucXVlcnlTZWxlY3RvcigncCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheWVyUm9vdERpdi5hcHBlbmRDaGlsZChhZERpdik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkRGl2OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gZ2V0V2FzbVdvcmtlclVybCh0d2l0Y2hCbG9iVXJsKSB7CiAgICAgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgIHJlcS5vcGVuKCdHRVQnLCB0d2l0Y2hCbG9iVXJsLCBmYWxzZSk7CiAgICAgICAgcmVxLm92ZXJyaWRlTWltZVR5cGUoInRleHQvamF2YXNjcmlwdCIpOwogICAgICAgIHJlcS5zZW5kKCk7CiAgICAgICAgcmV0dXJuIHJlcS5yZXNwb25zZVRleHQuc3BsaXQoIiciKVsxXTsKICAgIH0KICAgIGZ1bmN0aW9uIG9uRm91bmRBZChzdHJlYW1JbmZvLCB0ZXh0U3RyLCByZWxvYWRQbGF5ZXIpIHsKICAgICAgICBjb25zb2xlLmxvZygnRm91bmQgYWRzLCBzd2l0Y2ggdG8gYmFja3VwJyk7CiAgICAgICAgc3RyZWFtSW5mby5Vc2VCYWNrdXBTdHJlYW0gPSB0cnVlOwogICAgICAgIHN0cmVhbUluZm8uSXNNaWRyb2xsID0gdGV4dFN0ci5pbmNsdWRlcygnIk1JRFJPTEwiJykgfHwgdGV4dFN0ci5pbmNsdWRlcygnIm1pZHJvbGwiJyk7CiAgICAgICAgaWYgKHJlbG9hZFBsYXllcikgewogICAgICAgICAgICBwb3N0TWVzc2FnZSh7a2V5OidVYm9SZWxvYWRQbGF5ZXInfSk7CiAgICAgICAgfQogICAgICAgIHBvc3RNZXNzYWdlKHtrZXk6J1Vib1Nob3dBZEJhbm5lcicsaXNNaWRyb2xsOnN0cmVhbUluZm8uSXNNaWRyb2xsfSk7CiAgICB9CiAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzTTNVOCh1cmwsIHRleHRTdHIsIHJlYWxGZXRjaCkgewogICAgICAgIHZhciBzdHJlYW1JbmZvID0gU3RyZWFtSW5mb3NCeVVybFt1cmxdOwogICAgICAgIGlmIChzdHJlYW1JbmZvID09IG51bGwpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coJ1Vua25vd24gc3RyZWFtIHVybCAnICsgdXJsKTsKICAgICAgICAgICAgLy9wb3N0TWVzc2FnZSh7a2V5OidVYm9IaWRlQWRCYW5uZXInfSk7CiAgICAgICAgICAgIHJldHVybiB0ZXh0U3RyOwogICAgICAgIH0KICAgICAgICBpZiAoIU9QVF9NT0RFX1NUUklQX0FEX1NFR01FTlRTKSB7CiAgICAgICAgICAgIHJldHVybiB0ZXh0U3RyOwogICAgICAgIH0KICAgICAgICB2YXIgaGF2ZUFkVGFncyA9IHRleHRTdHIuaW5jbHVkZXMoQURfU0lHTklGSUVSKTsKICAgICAgICBpZiAoc3RyZWFtSW5mby5Vc2VCYWNrdXBTdHJlYW0pIHsKICAgICAgICAgICAgaWYgKHN0cmVhbUluZm8uRW5jb2RpbmdzID09IG51bGwpIHsKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdGb3VuZCBiYWNrdXAgc3RyZWFtIGJ1dCBub3QgbWFpbiBzdHJlYW0/Jyk7CiAgICAgICAgICAgICAgICBzdHJlYW1JbmZvLlVzZUJhY2t1cFN0cmVhbSA9IGZhbHNlOwogICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2Uoe2tleTonVWJvUmVsb2FkUGxheWVyJ30pOwogICAgICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFyIHN0cmVhbU0zdThVcmwgPSBzdHJlYW1JbmZvLkVuY29kaW5ncy5tYXRjaCgvXmh0dHBzOi4qXC5tM3U4JC9tKVswXTsKICAgICAgICAgICAgICAgIHZhciBzdHJlYW1NM3U4UmVzcG9uc2UgPSBhd2FpdCByZWFsRmV0Y2goc3RyZWFtTTN1OFVybCk7CiAgICAgICAgICAgICAgICBpZiAoc3RyZWFtTTN1OFJlc3BvbnNlLnN0YXR1cyA9PSAyMDApIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc3RyZWFtTTN1OCA9IGF3YWl0IHN0cmVhbU0zdThSZXNwb25zZS50ZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmVhbU0zdTggIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cmVhbU0zdTguaW5jbHVkZXMoQURfU0lHTklGSUVSKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ05vIG1vcmUgYWRzIG9uIG1haW4gc3RyZWFtLiBUcmlnZ2VyaW5nIHBsYXllciByZWxvYWQgdG8gZ28gYmFjayB0byBtYWluIHN0cmVhbS4uLicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtSW5mby5Vc2VCYWNrdXBTdHJlYW0gPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RNZXNzYWdlKHtrZXk6J1Vib0hpZGVBZEJhbm5lcid9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RNZXNzYWdlKHtrZXk6J1Vib1JlbG9hZFBsYXllcid9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyZWFtTTN1OC5pbmNsdWRlcygnIk1JRFJPTEwiJykgJiYgIXN0cmVhbU0zdTguaW5jbHVkZXMoJyJtaWRyb2xsIicpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGluZXMgPSBzdHJlYW1NM3U4LnJlcGxhY2UoJ1xyJywgJycpLnNwbGl0KCdcbicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaW5lID0gbGluZXNbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aCgnI0VYVElORicpICYmIGxpbmVzLmxlbmd0aCA+IGkgKyAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGluZS5pbmNsdWRlcyhMSVZFX1NJR05JRklFUikgJiYgIXN0cmVhbUluZm8uUmVxdWVzdGVkQWRzLmhhcyhsaW5lc1tpICsgMV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHJlcXVlc3Qgb25lIC50cyBmaWxlIHBlciAubTN1OCByZXF1ZXN0IHRvIGF2b2lkIG1ha2luZyB0b28gbWFueSByZXF1ZXN0cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnRmV0Y2ggYWQgLnRzIGZpbGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbUluZm8uUmVxdWVzdGVkQWRzLmFkZChsaW5lc1tpICsgMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2gobGluZXNbaSArIDFdKS50aGVuKChyZXNwb25zZSk9PntyZXNwb25zZS5ibG9iKCl9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChoYXZlQWRUYWdzKSB7CiAgICAgICAgICAgIG9uRm91bmRBZChzdHJlYW1JbmZvLCB0ZXh0U3RyLCB0cnVlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBwb3N0TWVzc2FnZSh7a2V5OidVYm9IaWRlQWRCYW5uZXInfSk7CiAgICAgICAgfQogICAgICAgIGlmIChoYXZlQWRUYWdzICYmIHN0cmVhbUluZm8uQmFja3VwRW5jb2RpbmdzICE9IG51bGwpIHsKICAgICAgICAgICAgdmFyIHN0cmVhbU0zdThVcmwgPSBzdHJlYW1JbmZvLkJhY2t1cEVuY29kaW5ncy5tYXRjaCgvXmh0dHBzOi4qXC5tM3U4LiokL20pWzBdOwogICAgICAgICAgICB2YXIgc3RyZWFtTTN1OFJlc3BvbnNlID0gYXdhaXQgcmVhbEZldGNoKHN0cmVhbU0zdThVcmwpOwogICAgICAgICAgICBpZiAoc3RyZWFtTTN1OFJlc3BvbnNlLnN0YXR1cyA9PSAyMDApIHsKICAgICAgICAgICAgICAgIHRleHRTdHIgPSBhd2FpdCBzdHJlYW1NM3U4UmVzcG9uc2UudGV4dCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0ZXh0U3RyOwogICAgfQogICAgZnVuY3Rpb24gaG9va1dvcmtlckZldGNoKCkgewogICAgICAgIGNvbnNvbGUubG9nKCdob29rV29ya2VyRmV0Y2gnKTsKICAgICAgICB2YXIgcmVhbEZldGNoID0gZmV0Y2g7CiAgICAgICAgZmV0Y2ggPSBhc3luYyBmdW5jdGlvbih1cmwsIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKHR5cGVvZiB1cmwgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICB1cmwgPSB1cmwudHJpbUVuZCgpOwogICAgICAgICAgICAgICAgaWYgKHVybC5lbmRzV2l0aCgnbTN1OCcpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvY2Vzc0FmdGVyID0gYXN5bmMgZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBhd2FpdCBwcm9jZXNzTTNVOCh1cmwsIGF3YWl0IHJlc3BvbnNlLnRleHQoKSwgcmVhbEZldGNoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobmV3IFJlc3BvbnNlKHN0ciwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlLnN0YXR1c1RleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogcmVzcG9uc2UuaGVhZGVycwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VuZCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWxGZXRjaCh1cmwsIG9wdGlvbnMpLnRoZW4oZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQWZ0ZXIocmVzcG9uc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlbJ2NhdGNoJ10oZnVuY3Rpb24oZXJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2ZldGNoIGhvb2sgZXJyICcgKyBlcnIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbmQoKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHVybC5pbmNsdWRlcygnL2FwaS9jaGFubmVsL2hscy8nKSAmJiAhdXJsLmluY2x1ZGVzKCdwaWN0dXJlLWJ5LXBpY3R1cmUnKSkgewogICAgICAgICAgICAgICAgICAgIHZhciBjaGFubmVsTmFtZSA9IChuZXcgVVJMKHVybCkpLnBhdGhuYW1lLm1hdGNoKC8oW15cL10rKSg/PVwuXHcrJCkvKVswXTsKICAgICAgICAgICAgICAgICAgICBpZiAoQ3VycmVudENoYW5uZWxOYW1lRnJvbU0zVTggIT0gY2hhbm5lbE5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2UoewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAnVWJvQ2hhbm5lbE5hbWVNM1U4Q2hhbmdlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogY2hhbm5lbE5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIEN1cnJlbnRDaGFubmVsTmFtZUZyb21NM1U4ID0gY2hhbm5lbE5hbWU7CiAgICAgICAgICAgICAgICAgICAgaWYgKE9QVF9NT0RFX1NUUklQX0FEX1NFR01FTlRTKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyBmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gRmlyc3QgbTN1OCByZXF1ZXN0IGlzIHRoZSBtM3U4IHdpdGggdGhlIHZpZGVvIGVuY29kaW5ncyAoMzYwcCw0ODBwLDcyMHAsZXRjKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gU2Vjb25kIG0zdTggcmVxdWVzdCBpcyB0aGUgbTN1OCBmb3IgdGhlIGdpdmVuIGVuY29kaW5nIG9idGFpbmVkIGluIHRoZSBmaXJzdCByZXF1ZXN0LiBBdCB0aGlzIHBvaW50IHdlIHdpbGwga25vdyBpZiB0aGVyZSdzIGFkcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdHJlYW1JbmZvID0gU3RyZWFtSW5mb3NbY2hhbm5lbE5hbWVdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmVhbUluZm8gIT0gbnVsbCAmJiBzdHJlYW1JbmZvLkVuY29kaW5ncyAhPSBudWxsICYmIChhd2FpdCByZWFsRmV0Y2goc3RyZWFtSW5mby5FbmNvZGluZ3MubWF0Y2goL15odHRwczouKlwubTN1OCQvbSlbMF0pKS5zdGF0dXMgIT09IDIwMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBjYWNoZWQgZW5jb2RpbmdzIGFyZSBkZWFkICh0aGUgc3RyZWFtIHByb2JhYmx5IHJlc3RhcnRlZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1JbmZvID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJlYW1JbmZvID09IG51bGwgfHwgc3RyZWFtSW5mby5FbmNvZGluZ3MgPT0gbnVsbCB8fCBzdHJlYW1JbmZvLkJhY2t1cEVuY29kaW5ncyA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyZWFtSW5mb3NbY2hhbm5lbE5hbWVdID0gc3RyZWFtSW5mbyA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWVzdGVkQWRzOiBuZXcgU2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuY29kaW5nczogbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFja3VwRW5jb2RpbmdzOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJc01pZHJvbGw6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VCYWNrdXBTdHJlYW06IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFubmVsTmFtZTogY2hhbm5lbE5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbmNvZGluZ3NVcmwgPSB1cmw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhY2Nlc3NUb2tlblJlc3BvbnNlID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oY2hhbm5lbE5hbWUsIE9QVF9CQUNLVVBfUExBWUVSX1RZUEUsIE9QVF9CQUNLVVBfUExBVEZPUk0sIHJlYWxGZXRjaCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWNjZXNzVG9rZW5SZXNwb25zZSAhPSBudWxsICYmIGFjY2Vzc1Rva2VuUmVzcG9uc2Uuc3RhdHVzID09PSAyMDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWNjZXNzVG9rZW4gPSBhd2FpdCBhY2Nlc3NUb2tlblJlc3BvbnNlLmpzb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsSW5mbyA9IG5ldyBVUkwoJ2h0dHBzOi8vdXNoZXIudHR2bncubmV0L2FwaS9jaGFubmVsL2hscy8nICsgY2hhbm5lbE5hbWUgKyAnLm0zdTgnICsgKG5ldyBVUkwodXJsKSkuc2VhcmNoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxJbmZvLnNlYXJjaFBhcmFtcy5zZXQoJ3NpZycsIGFjY2Vzc1Rva2VuLmRhdGEuc3RyZWFtUGxheWJhY2tBY2Nlc3NUb2tlbi5zaWduYXR1cmUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybEluZm8uc2VhcmNoUGFyYW1zLnNldCgndG9rZW4nLCBhY2Nlc3NUb2tlbi5kYXRhLnN0cmVhbVBsYXliYWNrQWNjZXNzVG9rZW4udmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nc1VybCA9IHVybEluZm8uaHJlZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShhY2Nlc3NUb2tlblJlc3BvbnNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVuY29kaW5nc00zdThSZXNwb25zZSA9IGF3YWl0IHJlYWxGZXRjaChlbmNvZGluZ3NVcmwsIG9wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW5jb2RpbmdzTTN1OFJlc3BvbnNlICE9IG51bGwgJiYgZW5jb2RpbmdzTTN1OFJlc3BvbnNlLnN0YXR1cyA9PT0gMjAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZW5jb2RpbmdzTTN1OCA9IGF3YWl0IGVuY29kaW5nc00zdThSZXNwb25zZS50ZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtSW5mby5FbmNvZGluZ3MgPSBlbmNvZGluZ3NNM3U4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdHJlYW1NM3U4VXJsID0gZW5jb2RpbmdzTTN1OC5tYXRjaCgvXmh0dHBzOi4qXC5tM3U4JC9tKVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RyZWFtTTN1OFJlc3BvbnNlID0gYXdhaXQgcmVhbEZldGNoKHN0cmVhbU0zdThVcmwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJlYW1NM3U4UmVzcG9uc2Uuc3RhdHVzID09IDIwMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RyZWFtTTN1OCA9IGF3YWl0IHN0cmVhbU0zdThSZXNwb25zZS50ZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJlYW1NM3U4LmluY2x1ZGVzKEFEX1NJR05JRklFUikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uRm91bmRBZChzdHJlYW1JbmZvLCBzdHJlYW1NM3U4LCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHN0cmVhbU0zdThSZXNwb25zZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsb3dSZXNMaW5lcyA9IGVuY29kaW5nc00zdTgucmVwbGFjZSgnXHInLCAnJykuc3BsaXQoJ1xuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxvd1Jlc0Jlc3RVcmwgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbG93UmVzTGluZXMubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvd1Jlc0xpbmVzW2pdLnN0YXJ0c1dpdGgoJyNFWFQtWC1TVFJFQU0tSU5GJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXMgPSBwYXJzZUF0dHJpYnV0ZXMobG93UmVzTGluZXNbal0pWydSRVNPTFVUSU9OJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICYmIGxvd1Jlc0xpbmVzW2ogKyAxXS5lbmRzV2l0aCgnLm0zdTgnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFzc3VtZXMgcmVzb2x1dGlvbnMgYXJlIGNvcnJlY3RseSBvcmRlcmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG93UmVzQmVzdFVybCA9IGxvd1Jlc0xpbmVzW2ogKyAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobG93UmVzQmVzdFVybCAhPSBudWxsICYmIHN0cmVhbUluZm8uRW5jb2RpbmdzICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5vcm1hbEVuY29kaW5nc00zdTggPSBzdHJlYW1JbmZvLkVuY29kaW5nczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5vcm1hbExpbmVzID0gbm9ybWFsRW5jb2RpbmdzTTN1OC5yZXBsYWNlKCdccicsICcnKS5zcGxpdCgnXG4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBub3JtYWxMaW5lcy5sZW5ndGggLSAxOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub3JtYWxMaW5lc1tqXS5zdGFydHNXaXRoKCcjRVhULVgtU1RSRUFNLUlORicpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlcyA9IHBhcnNlQXR0cmlidXRlcyhub3JtYWxMaW5lc1tqXSlbJ1JFU09MVVRJT04nXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvd1Jlc0Jlc3RVcmwgKz0gJyAnOy8vIFRoZSBzdHJlYW0gZG9lc24ndCBsb2FkIHVubGVzcyBlYWNoIHVybCBsaW5lIGlzIHVuaXF1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxMaW5lc1tqICsgMV0gPSBsb3dSZXNCZXN0VXJsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZ3NNM3U4ID0gbm9ybWFsTGluZXMuam9pbignXHJcbicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1JbmZvLkJhY2t1cEVuY29kaW5ncyA9IGVuY29kaW5nc00zdTg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGluZXMgPSBlbmNvZGluZ3NNM3U4LnJlcGxhY2UoJ1xyJywgJycpLnNwbGl0KCdcbicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBsaW5lcy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGluZXNbal0uc3RhcnRzV2l0aCgnIycpICYmIGxpbmVzW2pdLmluY2x1ZGVzKCcubTN1OCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmVhbUluZm9zQnlVcmxbbGluZXNbal0udHJpbUVuZCgpXSA9IHN0cmVhbUluZm87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShlbmNvZGluZ3NNM3U4UmVzcG9uc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmVhbUluZm8uVXNlQmFja3VwU3RyZWFtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShuZXcgUmVzcG9uc2Uoc3RyZWFtSW5mby5CYWNrdXBFbmNvZGluZ3MpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShuZXcgUmVzcG9uc2Uoc3RyZWFtSW5mby5FbmNvZGluZ3MpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByZWFsRmV0Y2guYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9CiAgICB9CiAgICBmdW5jdGlvbiBtYWtlR3JhcGhRbFBhY2tldChldmVudCwgcmFkVG9rZW4sIHBheWxvYWQpIHsKICAgICAgICByZXR1cm4gW3sKICAgICAgICAgICAgb3BlcmF0aW9uTmFtZTogJ0NsaWVudFNpZGVBZEV2ZW50SGFuZGxpbmdfUmVjb3JkQWRFdmVudCcsCiAgICAgICAgICAgIHZhcmlhYmxlczogewogICAgICAgICAgICAgICAgaW5wdXQ6IHsKICAgICAgICAgICAgICAgICAgICBldmVudE5hbWU6IGV2ZW50LAogICAgICAgICAgICAgICAgICAgIGV2ZW50UGF5bG9hZDogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCksCiAgICAgICAgICAgICAgICAgICAgcmFkVG9rZW4sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBleHRlbnNpb25zOiB7CiAgICAgICAgICAgICAgICBwZXJzaXN0ZWRRdWVyeTogewogICAgICAgICAgICAgICAgICAgIHZlcnNpb246IDEsCiAgICAgICAgICAgICAgICAgICAgc2hhMjU2SGFzaDogJzdlNmM2OWU2ZWI1OWY4Y2NiOTdhYjczNjg2ZjNkOGI3ZDg1YTcyYTAyOTg3NDVjY2Q4YmZjNjhlNDA1NGNhNWInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9XTsKICAgIH0KICAgIGZ1bmN0aW9uIGdldEFjY2Vzc1Rva2VuKGNoYW5uZWxOYW1lLCBwbGF5ZXJUeXBlLCBwbGF0Zm9ybSwgcmVhbEZldGNoKSB7CiAgICAgICAgaWYgKCFwbGF0Zm9ybSkgewogICAgICAgICAgICBwbGF0Zm9ybSA9ICd3ZWInOwogICAgICAgIH0KICAgICAgICB2YXIgYm9keSA9IG51bGw7CiAgICAgICAgdmFyIHRlbXBsYXRlUXVlcnkgPSAncXVlcnkgUGxheWJhY2tBY2Nlc3NUb2tlbl9UZW1wbGF0ZSgkbG9naW46IFN0cmluZyEsICRpc0xpdmU6IEJvb2xlYW4hLCAkdm9kSUQ6IElEISwgJGlzVm9kOiBCb29sZWFuISwgJHBsYXllclR5cGU6IFN0cmluZyEpIHsgIHN0cmVhbVBsYXliYWNrQWNjZXNzVG9rZW4oY2hhbm5lbE5hbWU6ICRsb2dpbiwgcGFyYW1zOiB7cGxhdGZvcm06ICInICsgcGxhdGZvcm0gKyAnIiwgcGxheWVyQmFja2VuZDogIm1lZGlhcGxheWVyIiwgcGxheWVyVHlwZTogJHBsYXllclR5cGV9KSBAaW5jbHVkZShpZjogJGlzTGl2ZSkgeyAgICB2YWx1ZSAgICBzaWduYXR1cmUgICAgX190eXBlbmFtZSAgfSAgdmlkZW9QbGF5YmFja0FjY2Vzc1Rva2VuKGlkOiAkdm9kSUQsIHBhcmFtczoge3BsYXRmb3JtOiAiJyArIHBsYXRmb3JtICsgJyIsIHBsYXllckJhY2tlbmQ6ICJtZWRpYXBsYXllciIsIHBsYXllclR5cGU6ICRwbGF5ZXJUeXBlfSkgQGluY2x1ZGUoaWY6ICRpc1ZvZCkgeyAgICB2YWx1ZSAgICBzaWduYXR1cmUgICAgX190eXBlbmFtZSAgfX0nOwogICAgICAgIGJvZHkgPSB7CiAgICAgICAgICAgIG9wZXJhdGlvbk5hbWU6ICdQbGF5YmFja0FjY2Vzc1Rva2VuX1RlbXBsYXRlJywKICAgICAgICAgICAgcXVlcnk6IHRlbXBsYXRlUXVlcnksCiAgICAgICAgICAgIHZhcmlhYmxlczogewogICAgICAgICAgICAgICAgJ2lzTGl2ZSc6IHRydWUsCiAgICAgICAgICAgICAgICAnbG9naW4nOiBjaGFubmVsTmFtZSwKICAgICAgICAgICAgICAgICdpc1ZvZCc6IGZhbHNlLAogICAgICAgICAgICAgICAgJ3ZvZElEJzogJycsCiAgICAgICAgICAgICAgICAncGxheWVyVHlwZSc6IHBsYXllclR5cGUKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgcmV0dXJuIGdxbFJlcXVlc3QoYm9keSwgcmVhbEZldGNoKTsKICAgIH0KICAgIGZ1bmN0aW9uIGdxbFJlcXVlc3QoYm9keSwgcmVhbEZldGNoKSB7CiAgICAgICAgaWYgKENsaWVudEludGVncml0eUhlYWRlciA9PSBudWxsKSB7CiAgICAgICAgICAgIC8vY29uc29sZS53YXJuKCdDbGllbnRJbnRlZ3JpdHlIZWFkZXIgaXMgbnVsbCcpOwogICAgICAgICAgICAvL3Rocm93ICdDbGllbnRJbnRlZ3JpdHlIZWFkZXIgaXMgbnVsbCc7CiAgICAgICAgfQogICAgICAgIHZhciBmZXRjaEZ1bmMgPSByZWFsRmV0Y2ggPyByZWFsRmV0Y2ggOiBmZXRjaDsKICAgICAgICByZXR1cm4gZmV0Y2hGdW5jKCdodHRwczovL2dxbC50d2l0Y2gudHYvZ3FsJywgewogICAgICAgICAgICBtZXRob2Q6ICdQT1NUJywKICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoYm9keSksCiAgICAgICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgICAgICAgICdDbGllbnQtSWQnOiBDTElFTlRfSUQsCiAgICAgICAgICAgICAgICAnQ2xpZW50LUludGVncml0eSc6IENsaWVudEludGVncml0eUhlYWRlciwKICAgICAgICAgICAgICAgICdYLURldmljZS1JZCc6IGdxbF9kZXZpY2VfaWQsCiAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IEF1dGhvcml6YXRpb25IZWFkZXIKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQogICAgZnVuY3Rpb24gcGFyc2VBdHRyaWJ1dGVzKHN0cikgewogICAgICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoCiAgICAgICAgICAgIHN0ci5zcGxpdCgvKD86XnwsKSgoPzpbXj1dKik9KD86IlteIl0qInxbXixdKikpLykKICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbikKICAgICAgICAgICAgICAgIC5tYXAoeCA9PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWR4ID0geC5pbmRleE9mKCc9Jyk7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0geC5zdWJzdHJpbmcoMCwgaWR4KTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHguc3Vic3RyaW5nKGlkeCArMSk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2tleSwgTnVtYmVyLmlzTmFOKG51bSkgPyB2YWx1ZS5zdGFydHNXaXRoKCciJykgPyBKU09OLnBhcnNlKHZhbHVlKSA6IHZhbHVlIDogbnVtXQogICAgICAgICAgICAgICAgfSkpOwogICAgfQogICAgYXN5bmMgZnVuY3Rpb24gdHJ5Tm90aWZ5QWRzV2F0Y2hlZE0zVTgoc3RyZWFtTTN1OCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIC8vY29uc29sZS5sb2coc3RyZWFtTTN1OCk7CiAgICAgICAgICAgIGlmICghc3RyZWFtTTN1OCB8fCAhc3RyZWFtTTN1OC5pbmNsdWRlcyhBRF9TSUdOSUZJRVIpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgbWF0Y2hlcyA9IHN0cmVhbU0zdTgubWF0Y2goLyNFWFQtWC1EQVRFUkFOR0U6KElEPSJzdGl0Y2hlZC1hZC1bXlxuXSspXG4vKTsKICAgICAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID4gMSkgewogICAgICAgICAgICAgICAgY29uc3QgYXR0clN0cmluZyA9IG1hdGNoZXNbMV07CiAgICAgICAgICAgICAgICBjb25zdCBhdHRyID0gcGFyc2VBdHRyaWJ1dGVzKGF0dHJTdHJpbmcpOwogICAgICAgICAgICAgICAgdmFyIHBvZExlbmd0aCA9IHBhcnNlSW50KGF0dHJbJ1gtVFYtVFdJVENILUFELVBPRC1MRU5HVEgnXSA/IGF0dHJbJ1gtVFYtVFdJVENILUFELVBPRC1MRU5HVEgnXSA6ICcxJyk7CiAgICAgICAgICAgICAgICB2YXIgcG9kUG9zaXRpb24gPSBwYXJzZUludChhdHRyWydYLVRWLVRXSVRDSC1BRC1QT0QtUE9TSVRJT04nXSA/IGF0dHJbJ1gtVFYtVFdJVENILUFELVBPRC1QT1NJVElPTiddIDogJzAnKTsKICAgICAgICAgICAgICAgIHZhciByYWRUb2tlbiA9IGF0dHJbJ1gtVFYtVFdJVENILUFELVJBRFMtVE9LRU4nXTsKICAgICAgICAgICAgICAgIHZhciBsaW5lSXRlbUlkID0gYXR0clsnWC1UVi1UV0lUQ0gtQUQtTElORS1JVEVNLUlEJ107CiAgICAgICAgICAgICAgICB2YXIgb3JkZXJJZCA9IGF0dHJbJ1gtVFYtVFdJVENILUFELU9SREVSLUlEJ107CiAgICAgICAgICAgICAgICB2YXIgY3JlYXRpdmVJZCA9IGF0dHJbJ1gtVFYtVFdJVENILUFELUNSRUFUSVZFLUlEJ107CiAgICAgICAgICAgICAgICB2YXIgYWRJZCA9IGF0dHJbJ1gtVFYtVFdJVENILUFELUFEVkVSVElTRVItSUQnXTsKICAgICAgICAgICAgICAgIHZhciByb2xsVHlwZSA9IGF0dHJbJ1gtVFYtVFdJVENILUFELVJPTEwtVFlQRSddLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgICAgICBjb25zdCBiYXNlRGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICBzdGl0Y2hlZDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICByb2xsX3R5cGU6IHJvbGxUeXBlLAogICAgICAgICAgICAgICAgICAgIHBsYXllcl9tdXRlOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICBwbGF5ZXJfdm9sdW1lOiAwLjUsCiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogdHJ1ZSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBmb3IgKGxldCBwb2RQb3NpdGlvbiA9IDA7IHBvZFBvc2l0aW9uIDwgcG9kTGVuZ3RoOyBwb2RQb3NpdGlvbisrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKE9QVF9NT0RFX05PVElGWV9BRFNfV0FUQ0hFRF9NSU5fUkVRVUVTVFMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbGwgdGhhdCdzIGFjdHVhbGx5IHJlcXVpcmVkIGF0IHRoZSBtb21lbnQKICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZ3FsUmVxdWVzdChtYWtlR3JhcGhRbFBhY2tldCgndmlkZW9fYWRfcG9kX2NvbXBsZXRlJywgcmFkVG9rZW4sIGJhc2VEYXRhKSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXh0ZW5kZWREYXRhID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYmFzZURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZF9pZDogYWRJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkX3Bvc2l0aW9uOiBwb2RQb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAzMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aXZlX2lkOiBjcmVhdGl2ZUlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfYWRzOiBwb2RMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcl9pZDogb3JkZXJJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfaXRlbV9pZDogbGluZUl0ZW1JZCwKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZ3FsUmVxdWVzdChtYWtlR3JhcGhRbFBhY2tldCgndmlkZW9fYWRfaW1wcmVzc2lvbicsIHJhZFRva2VuLCBleHRlbmRlZERhdGEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgcXVhcnRpbGUgPSAwOyBxdWFydGlsZSA8IDQ7IHF1YXJ0aWxlKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGdxbFJlcXVlc3QoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZUdyYXBoUWxQYWNrZXQoJ3ZpZGVvX2FkX3F1YXJ0aWxlX2NvbXBsZXRlJywgcmFkVG9rZW4sIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZXh0ZW5kZWREYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWFydGlsZTogcXVhcnRpbGUgKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGdxbFJlcXVlc3QobWFrZUdyYXBoUWxQYWNrZXQoJ3ZpZGVvX2FkX3BvZF9jb21wbGV0ZScsIHJhZFRva2VuLCBiYXNlRGF0YSkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gcG9zdFR3aXRjaFdvcmtlck1lc3NhZ2Uoa2V5LCB2YWx1ZSkgewogICAgICAgIHR3aXRjaFdvcmtlcnMuZm9yRWFjaCgod29ya2VyKSA9PiB7CiAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7a2V5OiBrZXksIHZhbHVlOiB2YWx1ZX0pOwogICAgICAgIH0pOwogICAgfQogICAgZnVuY3Rpb24gaG9va0ZldGNoKCkgewogICAgICAgIHZhciByZWFsRmV0Y2ggPSB3aW5kb3cuZmV0Y2g7CiAgICAgICAgd2luZG93LmZldGNoID0gZnVuY3Rpb24odXJsLCBpbml0LCAuLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICh0eXBlb2YgdXJsID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgaWYgKHVybC5pbmNsdWRlcygnZ3FsJykpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZGV2aWNlSWQgPSBpbml0LmhlYWRlcnNbJ1gtRGV2aWNlLUlkJ107CiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZXZpY2VJZCAhPT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlSWQgPSBpbml0LmhlYWRlcnNbJ0RldmljZS1JRCddOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRldmljZUlkID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgICAgICAgICBncWxfZGV2aWNlX2lkID0gZGV2aWNlSWQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChncWxfZGV2aWNlX2lkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RUd2l0Y2hXb3JrZXJNZXNzYWdlKCdVYm9VcGRhdGVEZXZpY2VJZCcsIGdxbF9kZXZpY2VfaWQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGluaXQuYm9keSA9PT0gJ3N0cmluZycgJiYgaW5pdC5ib2R5LmluY2x1ZGVzKCdQbGF5YmFja0FjY2Vzc1Rva2VuJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9QVF9BQ0NFU1NfVE9LRU5fUExBWUVSX1RZUEUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0JvZHkgPSBKU09OLnBhcnNlKGluaXQuYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShuZXdCb2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3Qm9keS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdCb2R5W2ldLnZhcmlhYmxlcy5wbGF5ZXJUeXBlID0gT1BUX0FDQ0VTU19UT0tFTl9QTEFZRVJfVFlQRTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0JvZHkudmFyaWFibGVzLnBsYXllclR5cGUgPSBPUFRfQUNDRVNTX1RPS0VOX1BMQVlFUl9UWVBFOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdC5ib2R5ID0gSlNPTi5zdHJpbmdpZnkobmV3Qm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpbml0LmhlYWRlcnNbJ0NsaWVudC1JbnRlZ3JpdHknXSA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWVudEludGVncml0eUhlYWRlciA9IGluaXQuaGVhZGVyc1snQ2xpZW50LUludGVncml0eSddOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENsaWVudEludGVncml0eUhlYWRlcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3RUd2l0Y2hXb3JrZXJNZXNzYWdlKCdVcGRhdGVDbGllbnRJbnRlZ3JpdHlIZWFkZXInLCBpbml0LmhlYWRlcnNbJ0NsaWVudC1JbnRlZ3JpdHknXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBpbml0LmhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb25IZWFkZXIgPSBpbml0LmhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBdXRob3JpemF0aW9uSGVhZGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zdFR3aXRjaFdvcmtlck1lc3NhZ2UoJ1VwZGF0ZUF1dGhvcml6YXRpb25IZWFkZXInLCBpbml0LmhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHJlYWxGZXRjaC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICB9CiAgICBmdW5jdGlvbiByZWxvYWRUd2l0Y2hQbGF5ZXIoaXNTZWVrLCBpc1BhdXNlUGxheSkgewogICAgICAgIC8vIFRha2VuIGZyb20gdHR2LXRvb2xzIC8gZmZ6CiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL05lcml4eXovdHR2LXRvb2xzL2Jsb2IvbWFzdGVyL3NyYy9jb250ZXh0L3R3aXRjaC1wbGF5ZXIudHMKICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vRnJhbmtlckZhY2VaL0ZyYW5rZXJGYWNlWi9ibG9iL21hc3Rlci9zcmMvc2l0ZXMvdHdpdGNoLXR3aWxpZ2h0L21vZHVsZXMvcGxheWVyLmpzeAogICAgICAgIGZ1bmN0aW9uIGZpbmRSZWFjdE5vZGUocm9vdCwgY29uc3RyYWludCkgewogICAgICAgICAgICBpZiAocm9vdC5zdGF0ZU5vZGUgJiYgY29uc3RyYWludChyb290LnN0YXRlTm9kZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiByb290LnN0YXRlTm9kZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgbm9kZSA9IHJvb3QuY2hpbGQ7CiAgICAgICAgICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBmaW5kUmVhY3ROb2RlKG5vZGUsIGNvbnN0cmFpbnQpOwogICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBub2RlID0gbm9kZS5zaWJsaW5nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgICAgICBmdW5jdGlvbiBmaW5kUmVhY3RSb290Tm9kZSgpIHsKICAgICAgICAgICAgdmFyIHJlYWN0Um9vdE5vZGUgPSBudWxsOwogICAgICAgICAgICB2YXIgcm9vdE5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjcm9vdCcpOwogICAgICAgICAgICBpZiAocm9vdE5vZGUgJiYgcm9vdE5vZGUuX3JlYWN0Um9vdENvbnRhaW5lciAmJiByb290Tm9kZS5fcmVhY3RSb290Q29udGFpbmVyLl9pbnRlcm5hbFJvb3QgJiYgcm9vdE5vZGUuX3JlYWN0Um9vdENvbnRhaW5lci5faW50ZXJuYWxSb290LmN1cnJlbnQpIHsKICAgICAgICAgICAgICAgIHJlYWN0Um9vdE5vZGUgPSByb290Tm9kZS5fcmVhY3RSb290Q29udGFpbmVyLl9pbnRlcm5hbFJvb3QuY3VycmVudDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocmVhY3RSb290Tm9kZSA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICB2YXIgY29udGFpbmVyTmFtZSA9IE9iamVjdC5rZXlzKHJvb3ROb2RlKS5maW5kKHggPT4geC5zdGFydHNXaXRoKCdfX3JlYWN0Q29udGFpbmVyJykpOwogICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lck5hbWUgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHJlYWN0Um9vdE5vZGUgPSByb290Tm9kZVtjb250YWluZXJOYW1lXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcmVhY3RSb290Tm9kZTsKICAgICAgICB9CiAgICAgICAgdmFyIHJlYWN0Um9vdE5vZGUgPSBmaW5kUmVhY3RSb290Tm9kZSgpOwogICAgICAgIGlmICghcmVhY3RSb290Tm9kZSkgewogICAgICAgICAgICBjb25zb2xlLmxvZygnQ291bGQgbm90IGZpbmQgcmVhY3Qgcm9vdCcpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHZhciBwbGF5ZXIgPSBmaW5kUmVhY3ROb2RlKHJlYWN0Um9vdE5vZGUsIG5vZGUgPT4gbm9kZS5zZXRQbGF5ZXJBY3RpdmUgJiYgbm9kZS5wcm9wcyAmJiBub2RlLnByb3BzLm1lZGlhUGxheWVySW5zdGFuY2UpOwogICAgICAgIHBsYXllciA9IHBsYXllciAmJiBwbGF5ZXIucHJvcHMgJiYgcGxheWVyLnByb3BzLm1lZGlhUGxheWVySW5zdGFuY2UgPyBwbGF5ZXIucHJvcHMubWVkaWFQbGF5ZXJJbnN0YW5jZSA6IG51bGw7CiAgICAgICAgdmFyIHBsYXllclN0YXRlID0gZmluZFJlYWN0Tm9kZShyZWFjdFJvb3ROb2RlLCBub2RlID0+IG5vZGUuc2V0U3JjICYmIG5vZGUuc2V0SW5pdGlhbFBsYXliYWNrU2V0dGluZ3MpOwogICAgICAgIGlmICghcGxheWVyKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDb3VsZCBub3QgZmluZCBwbGF5ZXInKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoIXBsYXllclN0YXRlKSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDb3VsZCBub3QgZmluZCBwbGF5ZXIgc3RhdGUnKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAocGxheWVyLnBhdXNlZCB8fCBwbGF5ZXIuY29yZT8ucGF1c2VkKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKGlzU2VlaykgewogICAgICAgICAgICBjb25zb2xlLmxvZygnRm9yY2Ugc2VlayB0byByZXNldCBwbGF5ZXIgKGhvcGVmdWxseSBmaXhpbmcgYW55IGF1ZGlvIGRlc3luYykgcG9zOicgKyBwbGF5ZXIuZ2V0UG9zaXRpb24oKSArICcgcmFuZ2U6JyArIEpTT04uc3RyaW5naWZ5KHBsYXllci5nZXRCdWZmZXJlZCgpKSk7CiAgICAgICAgICAgIHZhciBwb3MgPSBwbGF5ZXIuZ2V0UG9zaXRpb24oKTsKICAgICAgICAgICAgcGxheWVyLnNlZWtUbygwKTsKICAgICAgICAgICAgcGxheWVyLnNlZWtUbyhwb3MpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmIChpc1BhdXNlUGxheSkgewogICAgICAgICAgICBwbGF5ZXIucGF1c2UoKTsKICAgICAgICAgICAgcGxheWVyLnBsYXkoKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjb25zdCBsc0tleVF1YWxpdHkgPSAndmlkZW8tcXVhbGl0eSc7CiAgICAgICAgY29uc3QgbHNLZXlNdXRlZCA9ICd2aWRlby1tdXRlZCc7CiAgICAgICAgY29uc3QgbHNLZXlWb2x1bWUgPSAndm9sdW1lJzsKICAgICAgICB2YXIgY3VycmVudFF1YWxpdHlMUyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxzS2V5UXVhbGl0eSk7CiAgICAgICAgdmFyIGN1cnJlbnRNdXRlZExTID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0obHNLZXlNdXRlZCk7CiAgICAgICAgdmFyIGN1cnJlbnRWb2x1bWVMUyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGxzS2V5Vm9sdW1lKTsKICAgICAgICBpZiAocGxheWVyPy5jb3JlPy5zdGF0ZSkgewogICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShsc0tleU11dGVkLCBKU09OLnN0cmluZ2lmeSh7ZGVmYXVsdDpwbGF5ZXIuY29yZS5zdGF0ZS5tdXRlZH0pKTsKICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obHNLZXlWb2x1bWUsIHBsYXllci5jb3JlLnN0YXRlLnZvbHVtZSk7CiAgICAgICAgfQogICAgICAgIGlmIChwbGF5ZXI/LmNvcmU/LnN0YXRlPy5xdWFsaXR5Py5ncm91cCkgewogICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShsc0tleVF1YWxpdHksIEpTT04uc3RyaW5naWZ5KHtkZWZhdWx0OnBsYXllci5jb3JlLnN0YXRlLnF1YWxpdHkuZ3JvdXB9KSk7CiAgICAgICAgfQogICAgICAgIHBsYXllclN0YXRlLnNldFNyYyh7IGlzTmV3TWVkaWFQbGF5ZXJJbnN0YW5jZTogdHJ1ZSwgcmVmcmVzaEFjY2Vzc1Rva2VuOiB0cnVlIH0pOwogICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShsc0tleVF1YWxpdHksIGN1cnJlbnRRdWFsaXR5TFMpOwogICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShsc0tleU11dGVkLCBjdXJyZW50TXV0ZWRMUyk7CiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGxzS2V5Vm9sdW1lLCBjdXJyZW50Vm9sdW1lTFMpOwogICAgICAgIH0sIDMwMDApOwogICAgfQogICAgZnVuY3Rpb24gb25Db250ZW50TG9hZGVkKCkgewogICAgICAgIC8vIFRoaXMgc3RvcHMgVHdpdGNoIGZyb20gcGF1c2luZyB0aGUgcGxheWVyIHdoZW4gaW4gYW5vdGhlciB0YWIgYW5kIGFuIGFkIHNob3dzLgogICAgICAgIC8vIFRha2VuIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3NhdWNldHR2L1ZpZGVvQWRCbG9ja0ZvclR3aXRjaC9ibG9iL2NlZmNlOWQyYjU2NTc2OWM3N2UzNjY2YWM4MjM0YzNhY2ZlMjBkODMvY2hyb21lL2NvbnRlbnQuanMjTDMwCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAndmlzaWJpbGl0eVN0YXRlJywgewogICAgICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAndmlzaWJsZSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH1jYXRjaHt9CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRvY3VtZW50LCAnaGlkZGVuJywgewogICAgICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfWNhdGNoe30KICAgICAgICB2YXIgYmxvY2sgPSBlID0+IHsKICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOwogICAgICAgIH07CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIGJsb2NrLCB0cnVlKTsKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd3ZWJraXR2aXNpYmlsaXR5Y2hhbmdlJywgYmxvY2ssIHRydWUpOwogICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21venZpc2liaWxpdHljaGFuZ2UnLCBibG9jaywgdHJ1ZSk7CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignaGFzRm9jdXMnLCBibG9jaywgdHJ1ZSk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYgKC9GaXJlZm94Ly50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKSB7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZG9jdW1lbnQsICdtb3pIaWRkZW4nLCB7CiAgICAgICAgICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZG9jdW1lbnQsICd3ZWJraXRIaWRkZW4nLCB7CiAgICAgICAgICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9Y2F0Y2h7fQogICAgICAgIC8vIEhvb2tzIGZvciBwcmVzZXJ2aW5nIHZvbHVtZSAvIHJlc29sdXRpb24KICAgICAgICB2YXIga2V5c1RvQ2FjaGUgPSBbCiAgICAgICAgICAgICd2aWRlby1xdWFsaXR5JywKICAgICAgICAgICAgJ3ZpZGVvLW11dGVkJywKICAgICAgICAgICAgJ3ZvbHVtZScsCiAgICAgICAgICAgICdsb3dMYXRlbmN5TW9kZUVuYWJsZWQnLC8vIExvdyBMYXRlbmN5CiAgICAgICAgICAgICdwZXJzaXN0ZW5jZUVuYWJsZWQnLC8vIE1pbmkgUGxheWVyCiAgICAgICAgXTsKICAgICAgICB2YXIgY2FjaGVkVmFsdWVzID0gbmV3IE1hcCgpOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5c1RvQ2FjaGUubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgY2FjaGVkVmFsdWVzLnNldChrZXlzVG9DYWNoZVtpXSwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5c1RvQ2FjaGVbaV0pKTsKICAgICAgICB9CiAgICAgICAgdmFyIHJlYWxTZXRJdGVtID0gbG9jYWxTdG9yYWdlLnNldEl0ZW07CiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0gPSBmdW5jdGlvbihrZXksIHZhbHVlKSB7CiAgICAgICAgICAgIGlmIChjYWNoZWRWYWx1ZXMuaGFzKGtleSkpIHsKICAgICAgICAgICAgICAgIGNhY2hlZFZhbHVlcy5zZXQoa2V5LCB2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmVhbFNldEl0ZW0uYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgICB9OwogICAgICAgIHZhciByZWFsR2V0SXRlbSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtOwogICAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtID0gZnVuY3Rpb24oa2V5KSB7CiAgICAgICAgICAgIGlmIChjYWNoZWRWYWx1ZXMuaGFzKGtleSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZXMuZ2V0KGtleSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHJlYWxHZXRJdGVtLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgIH0KICAgIGlmIChpc1dvcmtlckRvdWJsZUhvb2tlZChudWxsLCAndHdpdGNoJykpIHsKICAgICAgICBjb25zb2xlLmxvZygnVHdpdGNoIFdvcmtlciBpcyBhbHJlYWR5IGhvb2tlZC4gU2tpcHBpbmcgKHZpZGVvLXN3YXAtbmV3KScpOwogICAgfSBlbHNlIHsKICAgICAgICB3aW5kb3cucmVsb2FkVHdpdGNoUGxheWVyID0gcmVsb2FkVHdpdGNoUGxheWVyOwogICAgICAgIGRlY2xhcmVPcHRpb25zKHdpbmRvdyk7CiAgICAgICAgaG9va1dpbmRvd1dvcmtlcigpOwogICAgICAgIGhvb2tGZXRjaCgpOwogICAgICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiIHx8IGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJsb2FkZWQiIHx8IGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJpbnRlcmFjdGl2ZSIpIHsKICAgICAgICAgICAgb25Db250ZW50TG9hZGVkKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIG9uQ29udGVudExvYWRlZCgpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9Cn0pKCk7Cg=="},{"name":"set-attr.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gcnVuQXQoZm4sIHdoZW4pIHsKICAgIGNvbnN0IGludEZyb21SZWFkeVN0YXRlID0gc3RhdGUgPT4gewogICAgICAgIGNvbnN0IHRhcmdldHMgPSB7CiAgICAgICAgICAgICdsb2FkaW5nJzogMSwgJ2FzYXAnOiAxLAogICAgICAgICAgICAnaW50ZXJhY3RpdmUnOiAyLCAnZW5kJzogMiwgJzInOiAyLAogICAgICAgICAgICAnY29tcGxldGUnOiAzLCAnaWRsZSc6IDMsICczJzogMywKICAgICAgICB9OwogICAgICAgIGNvbnN0IHRva2VucyA9IEFycmF5LmlzQXJyYXkoc3RhdGUpID8gc3RhdGUgOiBbIHN0YXRlIF07CiAgICAgICAgZm9yICggY29uc3QgdG9rZW4gb2YgdG9rZW5zICkgewogICAgICAgICAgICBjb25zdCBwcm9wID0gYCR7dG9rZW59YDsKICAgICAgICAgICAgaWYgKCB0YXJnZXRzLmhhc093blByb3BlcnR5KHByb3ApID09PSBmYWxzZSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRhcmdldHNbcHJvcF07CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwogICAgfTsKICAgIGNvbnN0IHJ1bkF0ID0gaW50RnJvbVJlYWR5U3RhdGUod2hlbik7CiAgICBpZiAoIGludEZyb21SZWFkeVN0YXRlKGRvY3VtZW50LnJlYWR5U3RhdGUpID49IHJ1bkF0ICkgewogICAgICAgIGZuKCk7IHJldHVybjsKICAgIH0KICAgIGNvbnN0IG9uU3RhdGVDaGFuZ2UgPSAoICkgPT4gewogICAgICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPCBydW5BdCApIHsgcmV0dXJuOyB9CiAgICAgICAgZm4oKTsKICAgICAgICBzYWZlLnJlbW92ZUV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwogICAgfTsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgYXJncyA9IFsgJ3JlYWR5c3RhdGVjaGFuZ2UnLCBvblN0YXRlQ2hhbmdlLCB7IGNhcHR1cmU6IHRydWUgfSBdOwogICAgc2FmZS5hZGRFdmVudExpc3RlbmVyLmFwcGx5KGRvY3VtZW50LCBhcmdzKTsKfQpmdW5jdGlvbiBzZXRBdHRyRm4oCiAgICBsb2dQcmVmaXgsCiAgICBzZWxlY3RvciA9ICcnLAogICAgYXR0ciA9ICcnLAogICAgdmFsdWUgPSAnJwopIHsKICAgIGlmICggc2VsZWN0b3IgPT09ICcnICkgeyByZXR1cm47IH0KICAgIGlmICggYXR0ciA9PT0gJycgKSB7IHJldHVybjsgfQoKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgY29weUZyb20gPSAvXlxbLitcXSQvLnRlc3QodmFsdWUpCiAgICAgICAgPyB2YWx1ZS5zbGljZSgxLCAtMSkKICAgICAgICA6ICcnOwoKICAgIGNvbnN0IGV4dHJhY3RWYWx1ZSA9IGVsZW0gPT4gY29weUZyb20gIT09ICcnCiAgICAgICAgPyBlbGVtLmdldEF0dHJpYnV0ZShjb3B5RnJvbSkgfHwgJycKICAgICAgICA6IHZhbHVlOwoKICAgIGNvbnN0IGFwcGx5U2V0QXR0ciA9ICggKSA9PiB7CiAgICAgICAgbGV0IGVsZW1zOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGVsZW1zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICAgICAgfSBjYXRjaChfKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZm9yICggY29uc3QgZWxlbSBvZiBlbGVtcyApIHsKICAgICAgICAgICAgY29uc3QgYmVmb3JlID0gZWxlbS5nZXRBdHRyaWJ1dGUoYXR0cik7CiAgICAgICAgICAgIGNvbnN0IGFmdGVyID0gZXh0cmFjdFZhbHVlKGVsZW0pOwogICAgICAgICAgICBpZiAoIGFmdGVyID09PSBiZWZvcmUgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgIGlmICggYWZ0ZXIgIT09ICcnICYmIC9eb24vaS50ZXN0KGF0dHIpICkgewogICAgICAgICAgICAgICAgaWYgKCBhdHRyLnRvTG93ZXJDYXNlKCkgaW4gZWxlbSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZShhdHRyLCBhZnRlcik7CiAgICAgICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgYCR7YXR0cn09IiR7YWZ0ZXJ9ImApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH07CgogICAgbGV0IG9ic2VydmVyLCB0aW1lcjsKICAgIGNvbnN0IG9uRG9tQ2hhbmdlZCA9IG11dGF0aW9ucyA9PiB7CiAgICAgICAgaWYgKCB0aW1lciAhPT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICBsZXQgc2hvdWxkV29yayA9IGZhbHNlOwogICAgICAgIGZvciAoIGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucyApIHsKICAgICAgICAgICAgaWYgKCBtdXRhdGlvbi5hZGRlZE5vZGVzLmxlbmd0aCA9PT0gMCApIHsgY29udGludWU7IH0KICAgICAgICAgICAgZm9yICggY29uc3Qgbm9kZSBvZiBtdXRhdGlvbi5hZGRlZE5vZGVzICkgewogICAgICAgICAgICAgICAgaWYgKCBub2RlLm5vZGVUeXBlICE9PSAxICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgc2hvdWxkV29yayA9IHRydWU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIHNob3VsZFdvcmsgKSB7IGJyZWFrOyB9CiAgICAgICAgfQogICAgICAgIGlmICggc2hvdWxkV29yayA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIHRpbWVyID0gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCApID0+IHsKICAgICAgICAgICAgdGltZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgIGFwcGx5U2V0QXR0cigpOwogICAgICAgIH0pOwogICAgfTsKCiAgICBjb25zdCBzdGFydCA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBhcHBseVNldEF0dHIoKSA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIob25Eb21DaGFuZ2VkKTsKICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHsKICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSwKICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLAogICAgICAgIH0pOwogICAgfTsKICAgIHJ1bkF0KCggKSA9PiB7IHN0YXJ0KCk7IH0sICdpZGxlJyk7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24gc2V0QXR0cigKICAgIHNlbGVjdG9yID0gJycsCiAgICBhdHRyID0gJycsCiAgICB2YWx1ZSA9ICcnCikgewogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBsb2dQcmVmaXggPSBzYWZlLm1ha2VMb2dQcmVmaXgoJ3NldC1hdHRyJywgc2VsZWN0b3IsIGF0dHIsIHZhbHVlKTsKICAgIGNvbnN0IHZhbGlkVmFsdWVzID0gWyAnJywgJ2ZhbHNlJywgJ3RydWUnIF07CgogICAgaWYgKCB2YWxpZFZhbHVlcy5pbmNsdWRlcyh2YWx1ZS50b0xvd2VyQ2FzZSgpKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgaWYgKCAvXlxkKyQvLnRlc3QodmFsdWUpICkgewogICAgICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQodmFsdWUsIDEwKTsKICAgICAgICAgICAgaWYgKCBuID49IDMyNzY4ICkgeyByZXR1cm47IH0KICAgICAgICAgICAgdmFsdWUgPSBgJHtufWA7CiAgICAgICAgfSBlbHNlIGlmICggL15cWy4rXF0kLy50ZXN0KHZhbHVlKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgc2V0QXR0ckZuKGxvZ1ByZWZpeCwgc2VsZWN0b3IsIGF0dHIsIHZhbHVlKTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"trusted-set-attr.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gcnVuQXQoZm4sIHdoZW4pIHsKICAgIGNvbnN0IGludEZyb21SZWFkeVN0YXRlID0gc3RhdGUgPT4gewogICAgICAgIGNvbnN0IHRhcmdldHMgPSB7CiAgICAgICAgICAgICdsb2FkaW5nJzogMSwgJ2FzYXAnOiAxLAogICAgICAgICAgICAnaW50ZXJhY3RpdmUnOiAyLCAnZW5kJzogMiwgJzInOiAyLAogICAgICAgICAgICAnY29tcGxldGUnOiAzLCAnaWRsZSc6IDMsICczJzogMywKICAgICAgICB9OwogICAgICAgIGNvbnN0IHRva2VucyA9IEFycmF5LmlzQXJyYXkoc3RhdGUpID8gc3RhdGUgOiBbIHN0YXRlIF07CiAgICAgICAgZm9yICggY29uc3QgdG9rZW4gb2YgdG9rZW5zICkgewogICAgICAgICAgICBjb25zdCBwcm9wID0gYCR7dG9rZW59YDsKICAgICAgICAgICAgaWYgKCB0YXJnZXRzLmhhc093blByb3BlcnR5KHByb3ApID09PSBmYWxzZSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRhcmdldHNbcHJvcF07CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwogICAgfTsKICAgIGNvbnN0IHJ1bkF0ID0gaW50RnJvbVJlYWR5U3RhdGUod2hlbik7CiAgICBpZiAoIGludEZyb21SZWFkeVN0YXRlKGRvY3VtZW50LnJlYWR5U3RhdGUpID49IHJ1bkF0ICkgewogICAgICAgIGZuKCk7IHJldHVybjsKICAgIH0KICAgIGNvbnN0IG9uU3RhdGVDaGFuZ2UgPSAoICkgPT4gewogICAgICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPCBydW5BdCApIHsgcmV0dXJuOyB9CiAgICAgICAgZm4oKTsKICAgICAgICBzYWZlLnJlbW92ZUV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwogICAgfTsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgYXJncyA9IFsgJ3JlYWR5c3RhdGVjaGFuZ2UnLCBvblN0YXRlQ2hhbmdlLCB7IGNhcHR1cmU6IHRydWUgfSBdOwogICAgc2FmZS5hZGRFdmVudExpc3RlbmVyLmFwcGx5KGRvY3VtZW50LCBhcmdzKTsKfQpmdW5jdGlvbiBzZXRBdHRyRm4oCiAgICBsb2dQcmVmaXgsCiAgICBzZWxlY3RvciA9ICcnLAogICAgYXR0ciA9ICcnLAogICAgdmFsdWUgPSAnJwopIHsKICAgIGlmICggc2VsZWN0b3IgPT09ICcnICkgeyByZXR1cm47IH0KICAgIGlmICggYXR0ciA9PT0gJycgKSB7IHJldHVybjsgfQoKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgY29weUZyb20gPSAvXlxbLitcXSQvLnRlc3QodmFsdWUpCiAgICAgICAgPyB2YWx1ZS5zbGljZSgxLCAtMSkKICAgICAgICA6ICcnOwoKICAgIGNvbnN0IGV4dHJhY3RWYWx1ZSA9IGVsZW0gPT4gY29weUZyb20gIT09ICcnCiAgICAgICAgPyBlbGVtLmdldEF0dHJpYnV0ZShjb3B5RnJvbSkgfHwgJycKICAgICAgICA6IHZhbHVlOwoKICAgIGNvbnN0IGFwcGx5U2V0QXR0ciA9ICggKSA9PiB7CiAgICAgICAgbGV0IGVsZW1zOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGVsZW1zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICAgICAgfSBjYXRjaChfKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZm9yICggY29uc3QgZWxlbSBvZiBlbGVtcyApIHsKICAgICAgICAgICAgY29uc3QgYmVmb3JlID0gZWxlbS5nZXRBdHRyaWJ1dGUoYXR0cik7CiAgICAgICAgICAgIGNvbnN0IGFmdGVyID0gZXh0cmFjdFZhbHVlKGVsZW0pOwogICAgICAgICAgICBpZiAoIGFmdGVyID09PSBiZWZvcmUgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgIGlmICggYWZ0ZXIgIT09ICcnICYmIC9eb24vaS50ZXN0KGF0dHIpICkgewogICAgICAgICAgICAgICAgaWYgKCBhdHRyLnRvTG93ZXJDYXNlKCkgaW4gZWxlbSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZShhdHRyLCBhZnRlcik7CiAgICAgICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgYCR7YXR0cn09IiR7YWZ0ZXJ9ImApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH07CgogICAgbGV0IG9ic2VydmVyLCB0aW1lcjsKICAgIGNvbnN0IG9uRG9tQ2hhbmdlZCA9IG11dGF0aW9ucyA9PiB7CiAgICAgICAgaWYgKCB0aW1lciAhPT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICBsZXQgc2hvdWxkV29yayA9IGZhbHNlOwogICAgICAgIGZvciAoIGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucyApIHsKICAgICAgICAgICAgaWYgKCBtdXRhdGlvbi5hZGRlZE5vZGVzLmxlbmd0aCA9PT0gMCApIHsgY29udGludWU7IH0KICAgICAgICAgICAgZm9yICggY29uc3Qgbm9kZSBvZiBtdXRhdGlvbi5hZGRlZE5vZGVzICkgewogICAgICAgICAgICAgICAgaWYgKCBub2RlLm5vZGVUeXBlICE9PSAxICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgc2hvdWxkV29yayA9IHRydWU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIHNob3VsZFdvcmsgKSB7IGJyZWFrOyB9CiAgICAgICAgfQogICAgICAgIGlmICggc2hvdWxkV29yayA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIHRpbWVyID0gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCApID0+IHsKICAgICAgICAgICAgdGltZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgIGFwcGx5U2V0QXR0cigpOwogICAgICAgIH0pOwogICAgfTsKCiAgICBjb25zdCBzdGFydCA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBhcHBseVNldEF0dHIoKSA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIob25Eb21DaGFuZ2VkKTsKICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LmJvZHksIHsKICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSwKICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLAogICAgICAgIH0pOwogICAgfTsKICAgIHJ1bkF0KCggKSA9PiB7IHN0YXJ0KCk7IH0sICdpZGxlJyk7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24gdHJ1c3RlZFNldEF0dHIoCiAgICBzZWxlY3RvciA9ICcnLAogICAgYXR0ciA9ICcnLAogICAgdmFsdWUgPSAnJwopIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbG9nUHJlZml4ID0gc2FmZS5tYWtlTG9nUHJlZml4KCd0cnVzdGVkLXNldC1hdHRyJywgc2VsZWN0b3IsIGF0dHIsIHZhbHVlKTsKICAgIHNldEF0dHJGbihsb2dQcmVmaXgsIHNlbGVjdG9yLCBhdHRyLCB2YWx1ZSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"remove-attr.js","aliases":["ra.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBydW5BdChmbiwgd2hlbikgewogICAgY29uc3QgaW50RnJvbVJlYWR5U3RhdGUgPSBzdGF0ZSA9PiB7CiAgICAgICAgY29uc3QgdGFyZ2V0cyA9IHsKICAgICAgICAgICAgJ2xvYWRpbmcnOiAxLCAnYXNhcCc6IDEsCiAgICAgICAgICAgICdpbnRlcmFjdGl2ZSc6IDIsICdlbmQnOiAyLCAnMic6IDIsCiAgICAgICAgICAgICdjb21wbGV0ZSc6IDMsICdpZGxlJzogMywgJzMnOiAzLAogICAgICAgIH07CiAgICAgICAgY29uc3QgdG9rZW5zID0gQXJyYXkuaXNBcnJheShzdGF0ZSkgPyBzdGF0ZSA6IFsgc3RhdGUgXTsKICAgICAgICBmb3IgKCBjb25zdCB0b2tlbiBvZiB0b2tlbnMgKSB7CiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBgJHt0b2tlbn1gOwogICAgICAgICAgICBpZiAoIHRhcmdldHMuaGFzT3duUHJvcGVydHkocHJvcCkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICByZXR1cm4gdGFyZ2V0c1twcm9wXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwogICAgY29uc3QgcnVuQXQgPSBpbnRGcm9tUmVhZHlTdGF0ZSh3aGVuKTsKICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPj0gcnVuQXQgKSB7CiAgICAgICAgZm4oKTsgcmV0dXJuOwogICAgfQogICAgY29uc3Qgb25TdGF0ZUNoYW5nZSA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBpbnRGcm9tUmVhZHlTdGF0ZShkb2N1bWVudC5yZWFkeVN0YXRlKSA8IHJ1bkF0ICkgeyByZXR1cm47IH0KICAgICAgICBmbigpOwogICAgICAgIHNhZmUucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseShkb2N1bWVudCwgYXJncyk7CiAgICB9OwogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBhcmdzID0gWyAncmVhZHlzdGF0ZWNoYW5nZScsIG9uU3RhdGVDaGFuZ2UsIHsgY2FwdHVyZTogdHJ1ZSB9IF07CiAgICBzYWZlLmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwp9CgogIChmdW5jdGlvbiByZW1vdmVBdHRyKAogICAgcmF3VG9rZW4gPSAnJywKICAgIHJhd1NlbGVjdG9yID0gJycsCiAgICBiZWhhdmlvciA9ICcnCikgewogICAgaWYgKCB0eXBlb2YgcmF3VG9rZW4gIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGlmICggcmF3VG9rZW4gPT09ICcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbG9nUHJlZml4ID0gc2FmZS5tYWtlTG9nUHJlZml4KCdyZW1vdmUtYXR0cicsIHJhd1Rva2VuLCByYXdTZWxlY3RvciwgYmVoYXZpb3IpOwogICAgY29uc3QgdG9rZW5zID0gcmF3VG9rZW4uc3BsaXQoL1xzKlx8XHMqLyk7CiAgICBjb25zdCBzZWxlY3RvciA9IHRva2VucwogICAgICAgIC5tYXAoYSA9PiBgJHtyYXdTZWxlY3Rvcn1bJHtDU1MuZXNjYXBlKGEpfV1gKQogICAgICAgIC5qb2luKCcsJyk7CiAgICBpZiAoIHNhZmUubG9nTGV2ZWwgPiAxICkgewogICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgYFRhcmdldCBzZWxlY3Rvcjpcblx0JHtzZWxlY3Rvcn1gKTsKICAgIH0KICAgIGNvbnN0IGFzYXAgPSAvXGJhc2FwXGIvLnRlc3QoYmVoYXZpb3IpOwogICAgbGV0IHRpbWVySWQ7CiAgICBjb25zdCBybWF0dHJBc3luYyA9ICggKSA9PiB7CiAgICAgICAgaWYgKCB0aW1lcklkICE9PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgIHRpbWVySWQgPSBzYWZlLm9uSWRsZSgoICkgPT4gewogICAgICAgICAgICB0aW1lcklkID0gdW5kZWZpbmVkOwogICAgICAgICAgICBybWF0dHIoKTsKICAgICAgICB9LCB7IHRpbWVvdXQ6IDE3IH0pOwogICAgfTsKICAgIGNvbnN0IHJtYXR0ciA9ICggKSA9PiB7CiAgICAgICAgaWYgKCB0aW1lcklkICE9PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgIHNhZmUub2ZmSWRsZSh0aW1lcklkKTsKICAgICAgICAgICAgdGltZXJJZCA9IHVuZGVmaW5lZDsKICAgICAgICB9CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsKICAgICAgICAgICAgZm9yICggY29uc3Qgbm9kZSBvZiBub2RlcyApIHsKICAgICAgICAgICAgICAgIGZvciAoIGNvbnN0IGF0dHIgb2YgdG9rZW5zICkgewogICAgICAgICAgICAgICAgICAgIGlmICggbm9kZS5oYXNBdHRyaWJ1dGUoYXR0cikgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGF0dHIpOwogICAgICAgICAgICAgICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgYFJlbW92ZWQgYXR0cmlidXRlICcke2F0dHJ9J2ApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaChleCkgewogICAgICAgIH0KICAgIH07CiAgICBjb25zdCBtdXRhdGlvbkhhbmRsZXIgPSBtdXRhdGlvbnMgPT4gewogICAgICAgIGlmICggdGltZXJJZCAhPT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICBsZXQgc2tpcCA9IHRydWU7CiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgbXV0YXRpb25zLmxlbmd0aCAmJiBza2lwOyBpKysgKSB7CiAgICAgICAgICAgIGNvbnN0IHsgdHlwZSwgYWRkZWROb2RlcywgcmVtb3ZlZE5vZGVzIH0gPSBtdXRhdGlvbnNbaV07CiAgICAgICAgICAgIGlmICggdHlwZSA9PT0gJ2F0dHJpYnV0ZXMnICkgeyBza2lwID0gZmFsc2U7IH0KICAgICAgICAgICAgZm9yICggbGV0IGogPSAwOyBqIDwgYWRkZWROb2Rlcy5sZW5ndGggJiYgc2tpcDsgaisrICkgewogICAgICAgICAgICAgICAgaWYgKCBhZGRlZE5vZGVzW2pdLm5vZGVUeXBlID09PSAxICkgeyBza2lwID0gZmFsc2U7IGJyZWFrOyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yICggbGV0IGogPSAwOyBqIDwgcmVtb3ZlZE5vZGVzLmxlbmd0aCAmJiBza2lwOyBqKysgKSB7CiAgICAgICAgICAgICAgICBpZiAoIHJlbW92ZWROb2Rlc1tqXS5ub2RlVHlwZSA9PT0gMSApIHsgc2tpcCA9IGZhbHNlOyBicmVhazsgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICggc2tpcCApIHsgcmV0dXJuOyB9CiAgICAgICAgYXNhcCA/IHJtYXR0cigpIDogcm1hdHRyQXN5bmMoKTsKICAgIH07CiAgICBjb25zdCBzdGFydCA9ICggKSA9PiB7CiAgICAgICAgcm1hdHRyKCk7CiAgICAgICAgaWYgKCAvXGJzdGF5XGIvLnRlc3QoYmVoYXZpb3IpID09PSBmYWxzZSApIHsgcmV0dXJuOyB9CiAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihtdXRhdGlvbkhhbmRsZXIpOwogICAgICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQsIHsKICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSwKICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVyOiB0b2tlbnMsCiAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSwKICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSwKICAgICAgICB9KTsKICAgIH07CiAgICBydW5BdCgoICkgPT4geyBzdGFydCgpOyB9LCBiZWhhdmlvci5zcGxpdCgvXHMrLykpOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"set-cookie.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0Q29va2llRm4oCiAgICBuYW1lID0gJycKKSB7CiAgICBmb3IgKCBjb25zdCBzIG9mIGRvY3VtZW50LmNvb2tpZS5zcGxpdCgvXHMqO1xzKi8pICkgewogICAgICAgIGNvbnN0IHBvcyA9IHMuaW5kZXhPZignPScpOwogICAgICAgIGlmICggcG9zID09PSAtMSApIHsgY29udGludWU7IH0KICAgICAgICBpZiAoIHMuc2xpY2UoMCwgcG9zKSAhPT0gbmFtZSApIHsgY29udGludWU7IH0KICAgICAgICByZXR1cm4gcy5zbGljZShwb3MrMSkudHJpbSgpOwogICAgfQp9CmZ1bmN0aW9uIHNldENvb2tpZUZuKAogICAgdHJ1c3RlZCA9IGZhbHNlLAogICAgbmFtZSA9ICcnLAogICAgdmFsdWUgPSAnJywKICAgIGV4cGlyZXMgPSAnJywKICAgIHBhdGggPSAnJywKICAgIG9wdGlvbnMgPSB7fSwKKSB7CiAgICAvLyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzI2MTYjc2VjdGlvbi0yLjIKICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91QmxvY2tPcmlnaW4vdUJsb2NrLWlzc3Vlcy9pc3N1ZXMvMjc3NwogICAgaWYgKCB0cnVzdGVkID09PSBmYWxzZSAmJiAvW14hIyQlJicqK1wtLjAtOUEtWltcXV5fYGEtenx+XS8udGVzdChuYW1lKSApIHsKICAgICAgICBuYW1lID0gZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpOwogICAgfQogICAgLy8gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2MjY1I3NlY3Rpb24tNC4xLjEKICAgIC8vIFRoZSBjaGFyYWN0ZXJzIFsiLF0gYXJlIGdpdmVuIGEgcGFzcyBmcm9tIHRoZSBSRkMgcmVxdWlyZW1lbnRzIGJlY2F1c2UKICAgIC8vIGFwcGFyZW50bHkgYnJvd3NlcnMgZG8gbm90IGZvbGxvdyB0aGUgUkZDIHRvIHRoZSBsZXR0ZXIuCiAgICBpZiAoIC9bXiAtOjwtW1xdLX5dLy50ZXN0KHZhbHVlKSApIHsKICAgICAgICB2YWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7CiAgICB9CgogICAgY29uc3QgY29va2llQmVmb3JlID0gZ2V0Q29va2llRm4obmFtZSk7CiAgICBpZiAoIGNvb2tpZUJlZm9yZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbnMuZG9udE92ZXJ3cml0ZSApIHsgcmV0dXJuOyB9CiAgICBpZiAoIGNvb2tpZUJlZm9yZSA9PT0gdmFsdWUgJiYgb3B0aW9ucy5yZWxvYWQgKSB7IHJldHVybjsgfQoKICAgIGNvbnN0IGNvb2tpZVBhcnRzID0gWyBuYW1lLCAnPScsIHZhbHVlIF07CiAgICBpZiAoIGV4cGlyZXMgIT09ICcnICkgewogICAgICAgIGNvb2tpZVBhcnRzLnB1c2goJzsgZXhwaXJlcz0nLCBleHBpcmVzKTsKICAgIH0KCiAgICBpZiAoIHBhdGggPT09ICcnICkgeyBwYXRoID0gJy8nOyB9CiAgICBlbHNlIGlmICggcGF0aCA9PT0gJ25vbmUnICkgeyBwYXRoID0gJyc7IH0KICAgIGlmICggcGF0aCAhPT0gJycgJiYgcGF0aCAhPT0gJy8nICkgeyByZXR1cm47IH0KICAgIGlmICggcGF0aCA9PT0gJy8nICkgewogICAgICAgIGNvb2tpZVBhcnRzLnB1c2goJzsgcGF0aD0vJyk7CiAgICB9CgogICAgaWYgKCB0cnVzdGVkICkgewogICAgICAgIGlmICggb3B0aW9ucy5kb21haW4gKSB7CiAgICAgICAgICAgIGNvb2tpZVBhcnRzLnB1c2goYDsgZG9tYWluPSR7b3B0aW9ucy5kb21haW59YCk7CiAgICAgICAgfQogICAgICAgIGNvb2tpZVBhcnRzLnB1c2goJzsgU2VjdXJlJyk7CiAgICB9IGVsc2UgaWYgKCAvXl9fKEhvc3R8U2VjdXJlKS0vLnRlc3QobmFtZSkgKSB7CiAgICAgICAgY29va2llUGFydHMucHVzaCgnOyBTZWN1cmUnKTsKICAgIH0KCiAgICB0cnkgewogICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZVBhcnRzLmpvaW4oJycpOwogICAgfSBjYXRjaChfKSB7CiAgICB9CgogICAgY29uc3QgZG9uZSA9IGdldENvb2tpZUZuKG5hbWUpID09PSB2YWx1ZTsKICAgIGlmICggZG9uZSAmJiBvcHRpb25zLnJlbG9hZCApIHsKICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICB9CgogICAgcmV0dXJuIGRvbmU7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBnZXRTYWZlQ29va2llVmFsdWVzRm4oKSB7CiAgICByZXR1cm4gWwogICAgICAgICdhY2NlcHQnLCAncmVqZWN0JywKICAgICAgICAnYWNjZXB0ZWQnLCAncmVqZWN0ZWQnLCAnbm90YWNjZXB0ZWQnLAogICAgICAgICdhbGxvdycsICdkaXNhbGxvdycsICdkZW55JywKICAgICAgICAnYWxsb3dlZCcsICdkZW5pZWQnLAogICAgICAgICdhcHByb3ZlZCcsICdkaXNhcHByb3ZlZCcsCiAgICAgICAgJ2NoZWNrZWQnLCAndW5jaGVja2VkJywKICAgICAgICAnZGlzbWlzcycsICdkaXNtaXNzZWQnLAogICAgICAgICdlbmFibGUnLCAnZGlzYWJsZScsCiAgICAgICAgJ2VuYWJsZWQnLCAnZGlzYWJsZWQnLAogICAgICAgICdlc3NlbnRpYWwnLCAnbm9uZXNzZW50aWFsJywKICAgICAgICAnZm9yYmlkZGVuJywgJ2ZvcmV2ZXInLAogICAgICAgICdoaWRlJywgJ2hpZGRlbicsCiAgICAgICAgJ25lY2Vzc2FyeScsICdyZXF1aXJlZCcsCiAgICAgICAgJ29rJywKICAgICAgICAnb24nLCAnb2ZmJywKICAgICAgICAndHJ1ZScsICd0JywgJ2ZhbHNlJywgJ2YnLAogICAgICAgICd5ZXMnLCAneScsICdubycsICduJywKICAgIF07Cn0KCiAgKGZ1bmN0aW9uIHNldENvb2tpZSgKICAgIG5hbWUgPSAnJywKICAgIHZhbHVlID0gJycsCiAgICBwYXRoID0gJycKKSB7CiAgICBpZiAoIG5hbWUgPT09ICcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbG9nUHJlZml4ID0gc2FmZS5tYWtlTG9nUHJlZml4KCdzZXQtY29va2llJywgbmFtZSwgdmFsdWUsIHBhdGgpOwogICAgY29uc3Qgbm9ybWFsaXplZCA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7CiAgICBjb25zdCBtYXRjaCA9IC9eKCI/KSguKylcMSQvLmV4ZWMobm9ybWFsaXplZCk7CiAgICBjb25zdCB1bnF1b3RlZCA9IG1hdGNoICYmIG1hdGNoWzJdIHx8IG5vcm1hbGl6ZWQ7CiAgICBjb25zdCB2YWxpZFZhbHVlcyA9IGdldFNhZmVDb29raWVWYWx1ZXNGbigpOwogICAgaWYgKCB2YWxpZFZhbHVlcy5pbmNsdWRlcyh1bnF1b3RlZCkgPT09IGZhbHNlICkgewogICAgICAgIGlmICggL14tP1xkKyQvLnRlc3QodW5xdW90ZWQpID09PSBmYWxzZSApIHsgcmV0dXJuOyB9CiAgICAgICAgY29uc3QgbiA9IHBhcnNlSW50KHZhbHVlLCAxMCkgfHwgMDsKICAgICAgICBpZiAoIG4gPCAtMzI3NjcgfHwgbiA+IDMyNzY3ICkgeyByZXR1cm47IH0KICAgIH0KCiAgICBjb25zdCBkb25lID0gc2V0Q29va2llRm4oCiAgICAgICAgZmFsc2UsCiAgICAgICAgbmFtZSwKICAgICAgICB2YWx1ZSwKICAgICAgICAnJywKICAgICAgICBwYXRoLAogICAgICAgIHNhZmUuZ2V0RXh0cmFBcmdzKEFycmF5LmZyb20oYXJndW1lbnRzKSwgMykKICAgICk7CgogICAgaWYgKCBkb25lICkgewogICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgJ0RvbmUnKTsKICAgIH0KfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"set-cookie-reload.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0U2FmZUNvb2tpZVZhbHVlc0ZuKCkgewogICAgcmV0dXJuIFsKICAgICAgICAnYWNjZXB0JywgJ3JlamVjdCcsCiAgICAgICAgJ2FjY2VwdGVkJywgJ3JlamVjdGVkJywgJ25vdGFjY2VwdGVkJywKICAgICAgICAnYWxsb3cnLCAnZGlzYWxsb3cnLCAnZGVueScsCiAgICAgICAgJ2FsbG93ZWQnLCAnZGVuaWVkJywKICAgICAgICAnYXBwcm92ZWQnLCAnZGlzYXBwcm92ZWQnLAogICAgICAgICdjaGVja2VkJywgJ3VuY2hlY2tlZCcsCiAgICAgICAgJ2Rpc21pc3MnLCAnZGlzbWlzc2VkJywKICAgICAgICAnZW5hYmxlJywgJ2Rpc2FibGUnLAogICAgICAgICdlbmFibGVkJywgJ2Rpc2FibGVkJywKICAgICAgICAnZXNzZW50aWFsJywgJ25vbmVzc2VudGlhbCcsCiAgICAgICAgJ2ZvcmJpZGRlbicsICdmb3JldmVyJywKICAgICAgICAnaGlkZScsICdoaWRkZW4nLAogICAgICAgICduZWNlc3NhcnknLCAncmVxdWlyZWQnLAogICAgICAgICdvaycsCiAgICAgICAgJ29uJywgJ29mZicsCiAgICAgICAgJ3RydWUnLCAndCcsICdmYWxzZScsICdmJywKICAgICAgICAneWVzJywgJ3knLCAnbm8nLCAnbicsCiAgICBdOwp9CmZ1bmN0aW9uIHNhZmVTZWxmKCkgewogICAgaWYgKCBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmOwogICAgfQogICAgY29uc3Qgc2VsZiA9IGdsb2JhbFRoaXM7CiAgICBjb25zdCBzYWZlID0gewogICAgICAgICdBcnJheV9mcm9tJzogQXJyYXkuZnJvbSwKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdGdW5jdGlvbl90b1N0cmluZ0ZuJzogc2VsZi5GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nJzogdGhpc0FyZyA9PiBzYWZlLkZ1bmN0aW9uX3RvU3RyaW5nRm4uY2FsbCh0aGlzQXJnKSwKICAgICAgICAnTWF0aF9mbG9vcic6IE1hdGguZmxvb3IsCiAgICAgICAgJ01hdGhfbWF4JzogTWF0aC5tYXgsCiAgICAgICAgJ01hdGhfbWluJzogTWF0aC5taW4sCiAgICAgICAgJ01hdGhfcmFuZG9tJzogTWF0aC5yYW5kb20sCiAgICAgICAgJ09iamVjdCc6IE9iamVjdCwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnR5JzogT2JqZWN0LmRlZmluZVByb3BlcnR5LmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnRpZXMnOiBPYmplY3QuZGVmaW5lUHJvcGVydGllcy5iaW5kKE9iamVjdCksCiAgICAgICAgJ09iamVjdF9mcm9tRW50cmllcyc6IE9iamVjdC5mcm9tRW50cmllcy5iaW5kKE9iamVjdCksCiAgICAgICAgJ09iamVjdF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLmJpbmQoT2JqZWN0KSwKICAgICAgICAnUmVnRXhwJzogc2VsZi5SZWdFeHAsCiAgICAgICAgJ1JlZ0V4cF90ZXN0Jzogc2VsZi5SZWdFeHAucHJvdG90eXBlLnRlc3QsCiAgICAgICAgJ1JlZ0V4cF9leGVjJzogc2VsZi5SZWdFeHAucHJvdG90eXBlLmV4ZWMsCiAgICAgICAgJ1JlcXVlc3RfY2xvbmUnOiBzZWxmLlJlcXVlc3QucHJvdG90eXBlLmNsb25lLAogICAgICAgICdTdHJpbmdfZnJvbUNoYXJDb2RlJzogU3RyaW5nLmZyb21DaGFyQ29kZSwKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnSlNPTic6IHNlbGYuSlNPTiwKICAgICAgICAnSlNPTl9wYXJzZUZuJzogc2VsZi5KU09OLnBhcnNlLAogICAgICAgICdKU09OX3N0cmluZ2lmeUZuJzogc2VsZi5KU09OLnN0cmluZ2lmeSwKICAgICAgICAnSlNPTl9wYXJzZSc6ICguLi5hcmdzKSA9PiBzYWZlLkpTT05fcGFyc2VGbi5jYWxsKHNhZmUuSlNPTiwgLi4uYXJncyksCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5JzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9zdHJpbmdpZnlGbi5jYWxsKHNhZmUuSlNPTiwgLi4uYXJncyksCiAgICAgICAgJ2xvZyc6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCiAgICAgICAgLy8gUHJvcGVydGllcwogICAgICAgIGxvZ0xldmVsOiAwLAogICAgICAgIC8vIE1ldGhvZHMKICAgICAgICBtYWtlTG9nUHJlZml4KC4uLmFyZ3MpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyICYmIGBbJHthcmdzLmpvaW4oJyBcdTIwNUQgJyl9XWAgfHwgJyc7CiAgICAgICAgfSwKICAgICAgICB1Ym9Mb2coLi4uYXJncykgewogICAgICAgICAgICBpZiAoIHRoaXMuc2VuZFRvTG9nZ2VyID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGFyZ3MgPT09IHVuZGVmaW5lZCB8fCBhcmdzWzBdID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbmRUb0xvZ2dlcignaW5mbycsIC4uLmFyZ3MpOwogICAgICAgICAgICAKICAgICAgICB9LAogICAgICAgIHVib0VyciguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdlcnJvcicsIC4uLmFyZ3MpOwogICAgICAgIH0sCiAgICAgICAgZXNjYXBlUmVnZXhDaGFycyhzKSB7CiAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpOwogICAgICAgIH0sCiAgICAgICAgaW5pdFBhdHRlcm4ocGF0dGVybiwgb3B0aW9ucyA9IHt9KSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geyBtYXRjaEFsbDogdHJ1ZSwgZXhwZWN0OiB0cnVlIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZXhwZWN0ID0gKG9wdGlvbnMuY2FuTmVnYXRlICE9PSB0cnVlIHx8IHBhdHRlcm4uc3RhcnRzV2l0aCgnIScpID09PSBmYWxzZSk7CiAgICAgICAgICAgIGlmICggZXhwZWN0ID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnNsaWNlKDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoICE9PSBudWxsICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMl0gfHwgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIG9wdGlvbnMuZmxhZ3MgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCh0aGlzLmVzY2FwZVJlZ2V4Q2hhcnMocGF0dGVybiksCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgcGF0dGVybiwgZXhwZWN0IH07CiAgICAgICAgfSwKICAgICAgICB0ZXN0UGF0dGVybihkZXRhaWxzLCBoYXlzdGFjaykgewogICAgICAgICAgICBpZiAoIGRldGFpbHMubWF0Y2hBbGwgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgICAgIGlmICggZGV0YWlscy5yZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLlJlZ0V4cF90ZXN0LmNhbGwoZGV0YWlscy5yZSwgaGF5c3RhY2spID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gaGF5c3RhY2suaW5jbHVkZXMoZGV0YWlscy5wYXR0ZXJuKSA9PT0gZGV0YWlscy5leHBlY3Q7CiAgICAgICAgfSwKICAgICAgICBwYXR0ZXJuVG9SZWdleChwYXR0ZXJuLCBmbGFncyA9IHVuZGVmaW5lZCwgdmVyYmF0aW0gPSBmYWxzZSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgeyByZXR1cm4gL14vOyB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoID09PSBudWxsICkgewogICAgICAgICAgICAgICAgY29uc3QgcmVTdHIgPSB0aGlzLmVzY2FwZVJlZ2V4Q2hhcnMocGF0dGVybik7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cCh2ZXJiYXRpbSA/IGBeJHtyZVN0cn0kYCA6IHJlU3RyLCBmbGFncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKG1hdGNoWzFdLCBtYXRjaFsyXSB8fCB1bmRlZmluZWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKGV4KSB7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIC9eLzsKICAgICAgICB9LAogICAgICAgIGdldEV4dHJhQXJncyhhcmdzLCBvZmZzZXQgPSAwKSB7CiAgICAgICAgICAgIGNvbnN0IGVudHJpZXMgPSBhcmdzLnNsaWNlKG9mZnNldCkucmVkdWNlKChvdXQsIHYsIGksIGEpID0+IHsKICAgICAgICAgICAgICAgIGlmICggKGkgJiAxKSA9PT0gMCApIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByYXdWYWx1ZSA9IGFbaSsxXTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IC9eXGQrJC8udGVzdChyYXdWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgPyBwYXJzZUludChyYXdWYWx1ZSwgMTApCiAgICAgICAgICAgICAgICAgICAgICAgIDogcmF3VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgb3V0LnB1c2goWyBhW2ldLCB2YWx1ZSBdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgICAgICAgIH0sIFtdKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuT2JqZWN0X2Zyb21FbnRyaWVzKGVudHJpZXMpOwogICAgICAgIH0sCiAgICAgICAgb25JZGxlKGZuLCBvcHRpb25zKSB7CiAgICAgICAgICAgIGlmICggc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayhmbiwgb3B0aW9ucyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZuKTsKICAgICAgICB9LAogICAgICAgIG9mZklkbGUoaWQpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jYW5jZWxJZGxlQ2FsbGJhY2soaWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkKTsKICAgICAgICB9CiAgICB9OwogICAgc2NyaXB0bGV0R2xvYmFscy5zYWZlU2VsZiA9IHNhZmU7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuIHNhZmU7IH0KICAgIC8vIFRoaXMgaXMgZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBsb2dnZXIgaXMgb3BlbmVkCiAgICBzYWZlLmxvZ0xldmVsID0gc2NyaXB0bGV0R2xvYmFscy5sb2dMZXZlbCB8fCAxOwogICAgbGV0IGxhc3RMb2dUeXBlID0gJyc7CiAgICBsZXQgbGFzdExvZ1RleHQgPSAnJzsKICAgIGxldCBsYXN0TG9nVGltZSA9IDA7CiAgICBzYWZlLnRvTG9nVGV4dCA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgaWYgKCBhcmdzLmxlbmd0aCA9PT0gMCApIHsgcmV0dXJuOyB9CiAgICAgICAgY29uc3QgdGV4dCA9IGBbJHtkb2N1bWVudC5sb2NhdGlvbi5ob3N0bmFtZSB8fCBkb2N1bWVudC5sb2NhdGlvbi5ocmVmfV0ke2FyZ3Muam9pbignICcpfWA7CiAgICAgICAgaWYgKCB0ZXh0ID09PSBsYXN0TG9nVGV4dCAmJiB0eXBlID09PSBsYXN0TG9nVHlwZSApIHsKICAgICAgICAgICAgaWYgKCAoRGF0ZS5ub3coKSAtIGxhc3RMb2dUaW1lKSA8IDUwMDAgKSB7IHJldHVybjsgfQogICAgICAgIH0KICAgICAgICBsYXN0TG9nVHlwZSA9IHR5cGU7CiAgICAgICAgbGFzdExvZ1RleHQgPSB0ZXh0OwogICAgICAgIGxhc3RMb2dUaW1lID0gRGF0ZS5ub3coKTsKICAgICAgICByZXR1cm4gdGV4dDsKICAgIH07CiAgICB0cnkgewogICAgICAgIGNvbnN0IGJjID0gbmV3IHNlbGYuQnJvYWRjYXN0Q2hhbm5lbChzY3JpcHRsZXRHbG9iYWxzLmJjU2VjcmV0KTsKICAgICAgICBsZXQgYmNCdWZmZXIgPSBbXTsKICAgICAgICBzYWZlLnNlbmRUb0xvZ2dlciA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzYWZlLnRvTG9nVGV4dCh0eXBlLCAuLi5hcmdzKTsKICAgICAgICAgICAgaWYgKCB0ZXh0ID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYmMucG9zdE1lc3NhZ2UoeyB3aGF0OiAnbWVzc2FnZVRvTG9nZ2VyJywgdHlwZSwgdGV4dCB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBiY0J1ZmZlci5wdXNoKHsgdHlwZSwgdGV4dCB9KTsKICAgICAgICB9OwogICAgICAgIGJjLm9ubWVzc2FnZSA9IGV2ID0+IHsKICAgICAgICAgICAgY29uc3QgbXNnID0gZXYuZGF0YTsKICAgICAgICAgICAgc3dpdGNoICggbXNnICkgewogICAgICAgICAgICBjYXNlICdpYW1yZWFkeSEnOgogICAgICAgICAgICAgICAgaWYgKCBiY0J1ZmZlciA9PT0gdW5kZWZpbmVkICkgeyBicmVhazsgfQogICAgICAgICAgICAgICAgYmNCdWZmZXIuZm9yRWFjaCgoeyB0eXBlLCB0ZXh0IH0pID0+CiAgICAgICAgICAgICAgICAgICAgYmMucG9zdE1lc3NhZ2UoeyB3aGF0OiAnbWVzc2FnZVRvTG9nZ2VyJywgdHlwZSwgdGV4dCB9KQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGJjQnVmZmVyID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3NldFNjcmlwdGxldExvZ0xldmVsVG9PbmUnOgogICAgICAgICAgICAgICAgc2FmZS5sb2dMZXZlbCA9IDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb1R3byc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBiYy5wb3N0TWVzc2FnZSgnYXJleW91cmVhZHk/Jyk7CiAgICB9IGNhdGNoKF8pIHsKICAgICAgICBzYWZlLnNlbmRUb0xvZ2dlciA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzYWZlLnRvTG9nVGV4dCh0eXBlLCAuLi5hcmdzKTsKICAgICAgICAgICAgaWYgKCB0ZXh0ID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBzYWZlLmxvZyhgdUJPICR7dGV4dH1gKTsKICAgICAgICB9OwogICAgfQogICAgcmV0dXJuIHNhZmU7Cn0KZnVuY3Rpb24gc2V0Q29va2llRm4oCiAgICB0cnVzdGVkID0gZmFsc2UsCiAgICBuYW1lID0gJycsCiAgICB2YWx1ZSA9ICcnLAogICAgZXhwaXJlcyA9ICcnLAogICAgcGF0aCA9ICcnLAogICAgb3B0aW9ucyA9IHt9LAopIHsKICAgIC8vIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMjYxNiNzZWN0aW9uLTIuMgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VCbG9ja09yaWdpbi91QmxvY2staXNzdWVzL2lzc3Vlcy8yNzc3CiAgICBpZiAoIHRydXN0ZWQgPT09IGZhbHNlICYmIC9bXiEjJCUmJyorXC0uMC05QS1aW1xdXl9gYS16fH5dLy50ZXN0KG5hbWUpICkgewogICAgICAgIG5hbWUgPSBlbmNvZGVVUklDb21wb25lbnQobmFtZSk7CiAgICB9CiAgICAvLyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzYyNjUjc2VjdGlvbi00LjEuMQogICAgLy8gVGhlIGNoYXJhY3RlcnMgWyIsXSBhcmUgZ2l2ZW4gYSBwYXNzIGZyb20gdGhlIFJGQyByZXF1aXJlbWVudHMgYmVjYXVzZQogICAgLy8gYXBwYXJlbnRseSBicm93c2VycyBkbyBub3QgZm9sbG93IHRoZSBSRkMgdG8gdGhlIGxldHRlci4KICAgIGlmICggL1teIC06PC1bXF0tfl0vLnRlc3QodmFsdWUpICkgewogICAgICAgIHZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKTsKICAgIH0KCiAgICBjb25zdCBjb29raWVCZWZvcmUgPSBnZXRDb29raWVGbihuYW1lKTsKICAgIGlmICggY29va2llQmVmb3JlICE9PSB1bmRlZmluZWQgJiYgb3B0aW9ucy5kb250T3ZlcndyaXRlICkgeyByZXR1cm47IH0KICAgIGlmICggY29va2llQmVmb3JlID09PSB2YWx1ZSAmJiBvcHRpb25zLnJlbG9hZCApIHsgcmV0dXJuOyB9CgogICAgY29uc3QgY29va2llUGFydHMgPSBbIG5hbWUsICc9JywgdmFsdWUgXTsKICAgIGlmICggZXhwaXJlcyAhPT0gJycgKSB7CiAgICAgICAgY29va2llUGFydHMucHVzaCgnOyBleHBpcmVzPScsIGV4cGlyZXMpOwogICAgfQoKICAgIGlmICggcGF0aCA9PT0gJycgKSB7IHBhdGggPSAnLyc7IH0KICAgIGVsc2UgaWYgKCBwYXRoID09PSAnbm9uZScgKSB7IHBhdGggPSAnJzsgfQogICAgaWYgKCBwYXRoICE9PSAnJyAmJiBwYXRoICE9PSAnLycgKSB7IHJldHVybjsgfQogICAgaWYgKCBwYXRoID09PSAnLycgKSB7CiAgICAgICAgY29va2llUGFydHMucHVzaCgnOyBwYXRoPS8nKTsKICAgIH0KCiAgICBpZiAoIHRydXN0ZWQgKSB7CiAgICAgICAgaWYgKCBvcHRpb25zLmRvbWFpbiApIHsKICAgICAgICAgICAgY29va2llUGFydHMucHVzaChgOyBkb21haW49JHtvcHRpb25zLmRvbWFpbn1gKTsKICAgICAgICB9CiAgICAgICAgY29va2llUGFydHMucHVzaCgnOyBTZWN1cmUnKTsKICAgIH0gZWxzZSBpZiAoIC9eX18oSG9zdHxTZWN1cmUpLS8udGVzdChuYW1lKSApIHsKICAgICAgICBjb29raWVQYXJ0cy5wdXNoKCc7IFNlY3VyZScpOwogICAgfQoKICAgIHRyeSB7CiAgICAgICAgZG9jdW1lbnQuY29va2llID0gY29va2llUGFydHMuam9pbignJyk7CiAgICB9IGNhdGNoKF8pIHsKICAgIH0KCiAgICBjb25zdCBkb25lID0gZ2V0Q29va2llRm4obmFtZSkgPT09IHZhbHVlOwogICAgaWYgKCBkb25lICYmIG9wdGlvbnMucmVsb2FkICkgewogICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgIH0KCiAgICByZXR1cm4gZG9uZTsKfQpmdW5jdGlvbiBnZXRDb29raWVGbigKICAgIG5hbWUgPSAnJwopIHsKICAgIGZvciAoIGNvbnN0IHMgb2YgZG9jdW1lbnQuY29va2llLnNwbGl0KC9ccyo7XHMqLykgKSB7CiAgICAgICAgY29uc3QgcG9zID0gcy5pbmRleE9mKCc9Jyk7CiAgICAgICAgaWYgKCBwb3MgPT09IC0xICkgeyBjb250aW51ZTsgfQogICAgICAgIGlmICggcy5zbGljZSgwLCBwb3MpICE9PSBuYW1lICkgeyBjb250aW51ZTsgfQogICAgICAgIHJldHVybiBzLnNsaWNlKHBvcysxKS50cmltKCk7CiAgICB9Cn0KZnVuY3Rpb24gc2V0Q29va2llKAogICAgbmFtZSA9ICcnLAogICAgdmFsdWUgPSAnJywKICAgIHBhdGggPSAnJwopIHsKICAgIGlmICggbmFtZSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBsb2dQcmVmaXggPSBzYWZlLm1ha2VMb2dQcmVmaXgoJ3NldC1jb29raWUnLCBuYW1lLCB2YWx1ZSwgcGF0aCk7CiAgICBjb25zdCBub3JtYWxpemVkID0gdmFsdWUudG9Mb3dlckNhc2UoKTsKICAgIGNvbnN0IG1hdGNoID0gL14oIj8pKC4rKVwxJC8uZXhlYyhub3JtYWxpemVkKTsKICAgIGNvbnN0IHVucXVvdGVkID0gbWF0Y2ggJiYgbWF0Y2hbMl0gfHwgbm9ybWFsaXplZDsKICAgIGNvbnN0IHZhbGlkVmFsdWVzID0gZ2V0U2FmZUNvb2tpZVZhbHVlc0ZuKCk7CiAgICBpZiAoIHZhbGlkVmFsdWVzLmluY2x1ZGVzKHVucXVvdGVkKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgaWYgKCAvXi0/XGQrJC8udGVzdCh1bnF1b3RlZCkgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCBuID0gcGFyc2VJbnQodmFsdWUsIDEwKSB8fCAwOwogICAgICAgIGlmICggbiA8IC0zMjc2NyB8fCBuID4gMzI3NjcgKSB7IHJldHVybjsgfQogICAgfQoKICAgIGNvbnN0IGRvbmUgPSBzZXRDb29raWVGbigKICAgICAgICBmYWxzZSwKICAgICAgICBuYW1lLAogICAgICAgIHZhbHVlLAogICAgICAgICcnLAogICAgICAgIHBhdGgsCiAgICAgICAgc2FmZS5nZXRFeHRyYUFyZ3MoQXJyYXkuZnJvbShhcmd1bWVudHMpLCAzKQogICAgKTsKCiAgICBpZiAoIGRvbmUgKSB7CiAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCAnRG9uZScpOwogICAgfQp9CgogIChmdW5jdGlvbiBzZXRDb29raWVSZWxvYWQobmFtZSwgdmFsdWUsIHBhdGgsIC4uLmFyZ3MpIHsKICAgIHNldENvb2tpZShuYW1lLCB2YWx1ZSwgcGF0aCwgJ3JlbG9hZCcsICcxJywgLi4uYXJncyk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"trusted-set-cookie.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0Q29va2llRm4oCiAgICBuYW1lID0gJycKKSB7CiAgICBmb3IgKCBjb25zdCBzIG9mIGRvY3VtZW50LmNvb2tpZS5zcGxpdCgvXHMqO1xzKi8pICkgewogICAgICAgIGNvbnN0IHBvcyA9IHMuaW5kZXhPZignPScpOwogICAgICAgIGlmICggcG9zID09PSAtMSApIHsgY29udGludWU7IH0KICAgICAgICBpZiAoIHMuc2xpY2UoMCwgcG9zKSAhPT0gbmFtZSApIHsgY29udGludWU7IH0KICAgICAgICByZXR1cm4gcy5zbGljZShwb3MrMSkudHJpbSgpOwogICAgfQp9CmZ1bmN0aW9uIHNldENvb2tpZUZuKAogICAgdHJ1c3RlZCA9IGZhbHNlLAogICAgbmFtZSA9ICcnLAogICAgdmFsdWUgPSAnJywKICAgIGV4cGlyZXMgPSAnJywKICAgIHBhdGggPSAnJywKICAgIG9wdGlvbnMgPSB7fSwKKSB7CiAgICAvLyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzI2MTYjc2VjdGlvbi0yLjIKICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91QmxvY2tPcmlnaW4vdUJsb2NrLWlzc3Vlcy9pc3N1ZXMvMjc3NwogICAgaWYgKCB0cnVzdGVkID09PSBmYWxzZSAmJiAvW14hIyQlJicqK1wtLjAtOUEtWltcXV5fYGEtenx+XS8udGVzdChuYW1lKSApIHsKICAgICAgICBuYW1lID0gZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpOwogICAgfQogICAgLy8gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2MjY1I3NlY3Rpb24tNC4xLjEKICAgIC8vIFRoZSBjaGFyYWN0ZXJzIFsiLF0gYXJlIGdpdmVuIGEgcGFzcyBmcm9tIHRoZSBSRkMgcmVxdWlyZW1lbnRzIGJlY2F1c2UKICAgIC8vIGFwcGFyZW50bHkgYnJvd3NlcnMgZG8gbm90IGZvbGxvdyB0aGUgUkZDIHRvIHRoZSBsZXR0ZXIuCiAgICBpZiAoIC9bXiAtOjwtW1xdLX5dLy50ZXN0KHZhbHVlKSApIHsKICAgICAgICB2YWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7CiAgICB9CgogICAgY29uc3QgY29va2llQmVmb3JlID0gZ2V0Q29va2llRm4obmFtZSk7CiAgICBpZiAoIGNvb2tpZUJlZm9yZSAhPT0gdW5kZWZpbmVkICYmIG9wdGlvbnMuZG9udE92ZXJ3cml0ZSApIHsgcmV0dXJuOyB9CiAgICBpZiAoIGNvb2tpZUJlZm9yZSA9PT0gdmFsdWUgJiYgb3B0aW9ucy5yZWxvYWQgKSB7IHJldHVybjsgfQoKICAgIGNvbnN0IGNvb2tpZVBhcnRzID0gWyBuYW1lLCAnPScsIHZhbHVlIF07CiAgICBpZiAoIGV4cGlyZXMgIT09ICcnICkgewogICAgICAgIGNvb2tpZVBhcnRzLnB1c2goJzsgZXhwaXJlcz0nLCBleHBpcmVzKTsKICAgIH0KCiAgICBpZiAoIHBhdGggPT09ICcnICkgeyBwYXRoID0gJy8nOyB9CiAgICBlbHNlIGlmICggcGF0aCA9PT0gJ25vbmUnICkgeyBwYXRoID0gJyc7IH0KICAgIGlmICggcGF0aCAhPT0gJycgJiYgcGF0aCAhPT0gJy8nICkgeyByZXR1cm47IH0KICAgIGlmICggcGF0aCA9PT0gJy8nICkgewogICAgICAgIGNvb2tpZVBhcnRzLnB1c2goJzsgcGF0aD0vJyk7CiAgICB9CgogICAgaWYgKCB0cnVzdGVkICkgewogICAgICAgIGlmICggb3B0aW9ucy5kb21haW4gKSB7CiAgICAgICAgICAgIGNvb2tpZVBhcnRzLnB1c2goYDsgZG9tYWluPSR7b3B0aW9ucy5kb21haW59YCk7CiAgICAgICAgfQogICAgICAgIGNvb2tpZVBhcnRzLnB1c2goJzsgU2VjdXJlJyk7CiAgICB9IGVsc2UgaWYgKCAvXl9fKEhvc3R8U2VjdXJlKS0vLnRlc3QobmFtZSkgKSB7CiAgICAgICAgY29va2llUGFydHMucHVzaCgnOyBTZWN1cmUnKTsKICAgIH0KCiAgICB0cnkgewogICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IGNvb2tpZVBhcnRzLmpvaW4oJycpOwogICAgfSBjYXRjaChfKSB7CiAgICB9CgogICAgY29uc3QgZG9uZSA9IGdldENvb2tpZUZuKG5hbWUpID09PSB2YWx1ZTsKICAgIGlmICggZG9uZSAmJiBvcHRpb25zLnJlbG9hZCApIHsKICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICB9CgogICAgcmV0dXJuIGRvbmU7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24gdHJ1c3RlZFNldENvb2tpZSgKICAgIG5hbWUgPSAnJywKICAgIHZhbHVlID0gJycsCiAgICBvZmZzZXRFeHBpcmVzU2VjID0gJycsCiAgICBwYXRoID0gJycKKSB7CiAgICBpZiAoIG5hbWUgPT09ICcnICkgeyByZXR1cm47IH0KCiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGxvZ1ByZWZpeCA9IHNhZmUubWFrZUxvZ1ByZWZpeCgnc2V0LWNvb2tpZScsIG5hbWUsIHZhbHVlLCBwYXRoKTsKICAgIGNvbnN0IHRpbWUgPSBuZXcgRGF0ZSgpOwoKICAgIGlmICggdmFsdWUuaW5jbHVkZXMoJyRub3ckJykgKSB7CiAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlQWxsKCckbm93JCcsIHRpbWUuZ2V0VGltZSgpKTsKICAgIH0KICAgIGlmICggdmFsdWUuaW5jbHVkZXMoJyRjdXJyZW50RGF0ZSQnKSApIHsKICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2VBbGwoJyRjdXJyZW50RGF0ZSQnLCB0aW1lLnRvVVRDU3RyaW5nKCkpOwogICAgfQogICAgaWYgKCB2YWx1ZS5pbmNsdWRlcygnJGN1cnJlbnRJU09EYXRlJCcpICkgewogICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZUFsbCgnJGN1cnJlbnRJU09EYXRlJCcsIHRpbWUudG9JU09TdHJpbmcoKSk7CiAgICB9CgogICAgbGV0IGV4cGlyZXMgPSAnJzsKICAgIGlmICggb2Zmc2V0RXhwaXJlc1NlYyAhPT0gJycgKSB7CiAgICAgICAgaWYgKCBvZmZzZXRFeHBpcmVzU2VjID09PSAnMWRheScgKSB7CiAgICAgICAgICAgIHRpbWUuc2V0RGF0ZSh0aW1lLmdldERhdGUoKSArIDEpOwogICAgICAgIH0gZWxzZSBpZiAoIG9mZnNldEV4cGlyZXNTZWMgPT09ICcxeWVhcicgKSB7CiAgICAgICAgICAgIHRpbWUuc2V0RnVsbFllYXIodGltZS5nZXRGdWxsWWVhcigpICsgMSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCAvXlxkKyQvLnRlc3Qob2Zmc2V0RXhwaXJlc1NlYykgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICAgICAgdGltZS5zZXRTZWNvbmRzKHRpbWUuZ2V0U2Vjb25kcygpICsgcGFyc2VJbnQob2Zmc2V0RXhwaXJlc1NlYywgMTApKTsKICAgICAgICB9CiAgICAgICAgZXhwaXJlcyA9IHRpbWUudG9VVENTdHJpbmcoKTsKICAgIH0KCiAgICBjb25zdCBkb25lID0gc2V0Q29va2llRm4oCiAgICAgICAgdHJ1ZSwKICAgICAgICBuYW1lLAogICAgICAgIHZhbHVlLAogICAgICAgIGV4cGlyZXMsCiAgICAgICAgcGF0aCwKICAgICAgICBzYWZlU2VsZigpLmdldEV4dHJhQXJncyhBcnJheS5mcm9tKGFyZ3VtZW50cyksIDQpCiAgICApOwoKICAgIGlmICggZG9uZSApIHsKICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsICdEb25lJyk7CiAgICB9Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"trusted-set-cookie-reload.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBzZXRDb29raWVGbigKICAgIHRydXN0ZWQgPSBmYWxzZSwKICAgIG5hbWUgPSAnJywKICAgIHZhbHVlID0gJycsCiAgICBleHBpcmVzID0gJycsCiAgICBwYXRoID0gJycsCiAgICBvcHRpb25zID0ge30sCikgewogICAgLy8gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMyNjE2I3NlY3Rpb24tMi4yCiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdUJsb2NrT3JpZ2luL3VCbG9jay1pc3N1ZXMvaXNzdWVzLzI3NzcKICAgIGlmICggdHJ1c3RlZCA9PT0gZmFsc2UgJiYgL1teISMkJSYnKitcLS4wLTlBLVpbXF1eX2BhLXp8fl0vLnRlc3QobmFtZSkgKSB7CiAgICAgICAgbmFtZSA9IGVuY29kZVVSSUNvbXBvbmVudChuYW1lKTsKICAgIH0KICAgIC8vIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNjI2NSNzZWN0aW9uLTQuMS4xCiAgICAvLyBUaGUgY2hhcmFjdGVycyBbIixdIGFyZSBnaXZlbiBhIHBhc3MgZnJvbSB0aGUgUkZDIHJlcXVpcmVtZW50cyBiZWNhdXNlCiAgICAvLyBhcHBhcmVudGx5IGJyb3dzZXJzIGRvIG5vdCBmb2xsb3cgdGhlIFJGQyB0byB0aGUgbGV0dGVyLgogICAgaWYgKCAvW14gLTo8LVtcXS1+XS8udGVzdCh2YWx1ZSkgKSB7CiAgICAgICAgdmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpOwogICAgfQoKICAgIGNvbnN0IGNvb2tpZUJlZm9yZSA9IGdldENvb2tpZUZuKG5hbWUpOwogICAgaWYgKCBjb29raWVCZWZvcmUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zLmRvbnRPdmVyd3JpdGUgKSB7IHJldHVybjsgfQogICAgaWYgKCBjb29raWVCZWZvcmUgPT09IHZhbHVlICYmIG9wdGlvbnMucmVsb2FkICkgeyByZXR1cm47IH0KCiAgICBjb25zdCBjb29raWVQYXJ0cyA9IFsgbmFtZSwgJz0nLCB2YWx1ZSBdOwogICAgaWYgKCBleHBpcmVzICE9PSAnJyApIHsKICAgICAgICBjb29raWVQYXJ0cy5wdXNoKCc7IGV4cGlyZXM9JywgZXhwaXJlcyk7CiAgICB9CgogICAgaWYgKCBwYXRoID09PSAnJyApIHsgcGF0aCA9ICcvJzsgfQogICAgZWxzZSBpZiAoIHBhdGggPT09ICdub25lJyApIHsgcGF0aCA9ICcnOyB9CiAgICBpZiAoIHBhdGggIT09ICcnICYmIHBhdGggIT09ICcvJyApIHsgcmV0dXJuOyB9CiAgICBpZiAoIHBhdGggPT09ICcvJyApIHsKICAgICAgICBjb29raWVQYXJ0cy5wdXNoKCc7IHBhdGg9LycpOwogICAgfQoKICAgIGlmICggdHJ1c3RlZCApIHsKICAgICAgICBpZiAoIG9wdGlvbnMuZG9tYWluICkgewogICAgICAgICAgICBjb29raWVQYXJ0cy5wdXNoKGA7IGRvbWFpbj0ke29wdGlvbnMuZG9tYWlufWApOwogICAgICAgIH0KICAgICAgICBjb29raWVQYXJ0cy5wdXNoKCc7IFNlY3VyZScpOwogICAgfSBlbHNlIGlmICggL15fXyhIb3N0fFNlY3VyZSktLy50ZXN0KG5hbWUpICkgewogICAgICAgIGNvb2tpZVBhcnRzLnB1c2goJzsgU2VjdXJlJyk7CiAgICB9CgogICAgdHJ5IHsKICAgICAgICBkb2N1bWVudC5jb29raWUgPSBjb29raWVQYXJ0cy5qb2luKCcnKTsKICAgIH0gY2F0Y2goXykgewogICAgfQoKICAgIGNvbnN0IGRvbmUgPSBnZXRDb29raWVGbihuYW1lKSA9PT0gdmFsdWU7CiAgICBpZiAoIGRvbmUgJiYgb3B0aW9ucy5yZWxvYWQgKSB7CiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgfQoKICAgIHJldHVybiBkb25lOwp9CmZ1bmN0aW9uIGdldENvb2tpZUZuKAogICAgbmFtZSA9ICcnCikgewogICAgZm9yICggY29uc3QgcyBvZiBkb2N1bWVudC5jb29raWUuc3BsaXQoL1xzKjtccyovKSApIHsKICAgICAgICBjb25zdCBwb3MgPSBzLmluZGV4T2YoJz0nKTsKICAgICAgICBpZiAoIHBvcyA9PT0gLTEgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgaWYgKCBzLnNsaWNlKDAsIHBvcykgIT09IG5hbWUgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgcmV0dXJuIHMuc2xpY2UocG9zKzEpLnRyaW0oKTsKICAgIH0KfQpmdW5jdGlvbiB0cnVzdGVkU2V0Q29va2llKAogICAgbmFtZSA9ICcnLAogICAgdmFsdWUgPSAnJywKICAgIG9mZnNldEV4cGlyZXNTZWMgPSAnJywKICAgIHBhdGggPSAnJwopIHsKICAgIGlmICggbmFtZSA9PT0gJycgKSB7IHJldHVybjsgfQoKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbG9nUHJlZml4ID0gc2FmZS5tYWtlTG9nUHJlZml4KCdzZXQtY29va2llJywgbmFtZSwgdmFsdWUsIHBhdGgpOwogICAgY29uc3QgdGltZSA9IG5ldyBEYXRlKCk7CgogICAgaWYgKCB2YWx1ZS5pbmNsdWRlcygnJG5vdyQnKSApIHsKICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2VBbGwoJyRub3ckJywgdGltZS5nZXRUaW1lKCkpOwogICAgfQogICAgaWYgKCB2YWx1ZS5pbmNsdWRlcygnJGN1cnJlbnREYXRlJCcpICkgewogICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZUFsbCgnJGN1cnJlbnREYXRlJCcsIHRpbWUudG9VVENTdHJpbmcoKSk7CiAgICB9CiAgICBpZiAoIHZhbHVlLmluY2x1ZGVzKCckY3VycmVudElTT0RhdGUkJykgKSB7CiAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlQWxsKCckY3VycmVudElTT0RhdGUkJywgdGltZS50b0lTT1N0cmluZygpKTsKICAgIH0KCiAgICBsZXQgZXhwaXJlcyA9ICcnOwogICAgaWYgKCBvZmZzZXRFeHBpcmVzU2VjICE9PSAnJyApIHsKICAgICAgICBpZiAoIG9mZnNldEV4cGlyZXNTZWMgPT09ICcxZGF5JyApIHsKICAgICAgICAgICAgdGltZS5zZXREYXRlKHRpbWUuZ2V0RGF0ZSgpICsgMSk7CiAgICAgICAgfSBlbHNlIGlmICggb2Zmc2V0RXhwaXJlc1NlYyA9PT0gJzF5ZWFyJyApIHsKICAgICAgICAgICAgdGltZS5zZXRGdWxsWWVhcih0aW1lLmdldEZ1bGxZZWFyKCkgKyAxKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoIC9eXGQrJC8udGVzdChvZmZzZXRFeHBpcmVzU2VjKSA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgICAgICB0aW1lLnNldFNlY29uZHModGltZS5nZXRTZWNvbmRzKCkgKyBwYXJzZUludChvZmZzZXRFeHBpcmVzU2VjLCAxMCkpOwogICAgICAgIH0KICAgICAgICBleHBpcmVzID0gdGltZS50b1VUQ1N0cmluZygpOwogICAgfQoKICAgIGNvbnN0IGRvbmUgPSBzZXRDb29raWVGbigKICAgICAgICB0cnVlLAogICAgICAgIG5hbWUsCiAgICAgICAgdmFsdWUsCiAgICAgICAgZXhwaXJlcywKICAgICAgICBwYXRoLAogICAgICAgIHNhZmVTZWxmKCkuZ2V0RXh0cmFBcmdzKEFycmF5LmZyb20oYXJndW1lbnRzKSwgNCkKICAgICk7CgogICAgaWYgKCBkb25lICkgewogICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgJ0RvbmUnKTsKICAgIH0KfQoKICAoZnVuY3Rpb24gdHJ1c3RlZFNldENvb2tpZVJlbG9hZChuYW1lLCB2YWx1ZSwgb2Zmc2V0RXhwaXJlc1NlYywgcGF0aCwgLi4uYXJncykgewogICAgdHJ1c3RlZFNldENvb2tpZShuYW1lLCB2YWx1ZSwgb2Zmc2V0RXhwaXJlc1NlYywgcGF0aCwgJ3JlbG9hZCcsICcxJywgLi4uYXJncyk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"remove-cookie.js","aliases":["cookie-remover.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24gcmVtb3ZlQ29va2llKAogICAgbmVlZGxlID0gJycKKSB7CiAgICBpZiAoIHR5cGVvZiBuZWVkbGUgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgcmVOYW1lID0gc2FmZS5wYXR0ZXJuVG9SZWdleChuZWVkbGUpOwogICAgY29uc3QgZXh0cmFBcmdzID0gc2FmZS5nZXRFeHRyYUFyZ3MoQXJyYXkuZnJvbShhcmd1bWVudHMpLCAxKTsKICAgIGNvbnN0IHRocm90dGxlID0gKGZuLCBtcyA9IDUwMCkgPT4gewogICAgICAgIGlmICggdGhyb3R0bGUudGltZXIgIT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgdGhyb3R0bGUudGltZXIgPSBzZXRUaW1lb3V0KCggKSA9PiB7CiAgICAgICAgICAgIHRocm90dGxlLnRpbWVyID0gdW5kZWZpbmVkOwogICAgICAgICAgICBmbigpOwogICAgICAgIH0sIG1zKTsKICAgIH07CiAgICBjb25zdCByZW1vdmUgPSAoICkgPT4gewogICAgICAgIGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpLmZvckVhY2goY29va2llU3RyID0+IHsKICAgICAgICAgICAgY29uc3QgcG9zID0gY29va2llU3RyLmluZGV4T2YoJz0nKTsKICAgICAgICAgICAgaWYgKCBwb3MgPT09IC0xICkgeyByZXR1cm47IH0KICAgICAgICAgICAgY29uc3QgY29va2llTmFtZSA9IGNvb2tpZVN0ci5zbGljZSgwLCBwb3MpLnRyaW0oKTsKICAgICAgICAgICAgaWYgKCByZU5hbWUudGVzdChjb29raWVOYW1lKSA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgICAgICBjb25zdCBwYXJ0MSA9IGNvb2tpZU5hbWUgKyAnPSc7CiAgICAgICAgICAgIGNvbnN0IHBhcnQyYSA9ICc7IGRvbWFpbj0nICsgZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWU7CiAgICAgICAgICAgIGNvbnN0IHBhcnQyYiA9ICc7IGRvbWFpbj0uJyArIGRvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lOwogICAgICAgICAgICBsZXQgcGFydDJjLCBwYXJ0MmQ7CiAgICAgICAgICAgIGNvbnN0IGRvbWFpbiA9IGRvY3VtZW50LmRvbWFpbjsKICAgICAgICAgICAgaWYgKCBkb21haW4gKSB7CiAgICAgICAgICAgICAgICBpZiAoIGRvbWFpbiAhPT0gZG9jdW1lbnQubG9jYXRpb24uaG9zdG5hbWUgKSB7CiAgICAgICAgICAgICAgICAgICAgcGFydDJjID0gJzsgZG9tYWluPS4nICsgZG9tYWluOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCBkb21haW4uc3RhcnRzV2l0aCgnd3d3LicpICkgewogICAgICAgICAgICAgICAgICAgIHBhcnQyZCA9ICc7IGRvbWFpbj0nICsgZG9tYWluLnJlcGxhY2UoJ3d3dycsICcnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBwYXJ0MyA9ICc7IHBhdGg9Lyc7CiAgICAgICAgICAgIGNvbnN0IHBhcnQ0ID0gJzsgTWF4LUFnZT0tMTAwMDsgZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCc7CiAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IHBhcnQxICsgcGFydDQ7CiAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IHBhcnQxICsgcGFydDJhICsgcGFydDQ7CiAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IHBhcnQxICsgcGFydDJiICsgcGFydDQ7CiAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IHBhcnQxICsgcGFydDMgKyBwYXJ0NDsKICAgICAgICAgICAgZG9jdW1lbnQuY29va2llID0gcGFydDEgKyBwYXJ0MmEgKyBwYXJ0MyArIHBhcnQ0OwogICAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSBwYXJ0MSArIHBhcnQyYiArIHBhcnQzICsgcGFydDQ7CiAgICAgICAgICAgIGlmICggcGFydDJjICE9PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5jb29raWUgPSBwYXJ0MSArIHBhcnQyYyArIHBhcnQzICsgcGFydDQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBwYXJ0MmQgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IHBhcnQxICsgcGFydDJkICsgcGFydDMgKyBwYXJ0NDsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfTsKICAgIHJlbW92ZSgpOwogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIHJlbW92ZSk7CiAgICBpZiAoIHR5cGVvZiBleHRyYUFyZ3Mud2hlbiAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc3VwcG9ydGVkRXZlbnRUeXBlcyA9IFsgJ3Njcm9sbCcsICdrZXlkb3duJyBdOwogICAgY29uc3QgZXZlbnRUeXBlcyA9IGV4dHJhQXJncy53aGVuLnNwbGl0KC9ccy8pOwogICAgZm9yICggY29uc3QgdHlwZSBvZiBldmVudFR5cGVzICkgewogICAgICAgIGlmICggc3VwcG9ydGVkRXZlbnRUeXBlcy5pbmNsdWRlcyh0eXBlKSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCAoICkgPT4gewogICAgICAgICAgICB0aHJvdHRsZShyZW1vdmUpOwogICAgICAgIH0sIHsgcGFzc2l2ZTogdHJ1ZSB9KTsKICAgIH0KfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"set-local-storage-item.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBnZXRTYWZlQ29va2llVmFsdWVzRm4oKSB7CiAgICByZXR1cm4gWwogICAgICAgICdhY2NlcHQnLCAncmVqZWN0JywKICAgICAgICAnYWNjZXB0ZWQnLCAncmVqZWN0ZWQnLCAnbm90YWNjZXB0ZWQnLAogICAgICAgICdhbGxvdycsICdkaXNhbGxvdycsICdkZW55JywKICAgICAgICAnYWxsb3dlZCcsICdkZW5pZWQnLAogICAgICAgICdhcHByb3ZlZCcsICdkaXNhcHByb3ZlZCcsCiAgICAgICAgJ2NoZWNrZWQnLCAndW5jaGVja2VkJywKICAgICAgICAnZGlzbWlzcycsICdkaXNtaXNzZWQnLAogICAgICAgICdlbmFibGUnLCAnZGlzYWJsZScsCiAgICAgICAgJ2VuYWJsZWQnLCAnZGlzYWJsZWQnLAogICAgICAgICdlc3NlbnRpYWwnLCAnbm9uZXNzZW50aWFsJywKICAgICAgICAnZm9yYmlkZGVuJywgJ2ZvcmV2ZXInLAogICAgICAgICdoaWRlJywgJ2hpZGRlbicsCiAgICAgICAgJ25lY2Vzc2FyeScsICdyZXF1aXJlZCcsCiAgICAgICAgJ29rJywKICAgICAgICAnb24nLCAnb2ZmJywKICAgICAgICAndHJ1ZScsICd0JywgJ2ZhbHNlJywgJ2YnLAogICAgICAgICd5ZXMnLCAneScsICdubycsICduJywKICAgIF07Cn0KZnVuY3Rpb24gc2V0TG9jYWxTdG9yYWdlSXRlbUZuKAogICAgd2hpY2ggPSAnbG9jYWwnLAogICAgdHJ1c3RlZCA9IGZhbHNlLAogICAga2V5ID0gJycsCiAgICB2YWx1ZSA9ICcnLAopIHsKICAgIGlmICgga2V5ID09PSAnJyApIHsgcmV0dXJuOyB9CgogICAgLy8gRm9yIGluY3JlYXNlZCBjb21wYXRpYmlsaXR5IHdpdGggQWRHdWFyZAogICAgaWYgKCB2YWx1ZSA9PT0gJ2VtcHR5QXJyJyApIHsKICAgICAgICB2YWx1ZSA9ICdbXSc7CiAgICB9IGVsc2UgaWYgKCB2YWx1ZSA9PT0gJ2VtcHR5T2JqJyApIHsKICAgICAgICB2YWx1ZSA9ICd7fSc7CiAgICB9CgogICAgY29uc3QgdHJ1c3RlZFZhbHVlcyA9IFsKICAgICAgICAnJywKICAgICAgICAndW5kZWZpbmVkJywgJ251bGwnLAogICAgICAgICd7fScsICdbXScsICciIicsCiAgICAgICAgJyRyZW1vdmUkJywKICAgICAgICAuLi5nZXRTYWZlQ29va2llVmFsdWVzRm4oKSwKICAgIF07CgogICAgaWYgKCB0cnVzdGVkICkgewogICAgICAgIGlmICggdmFsdWUuaW5jbHVkZXMoJyRub3ckJykgKSB7CiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZUFsbCgnJG5vdyQnLCBEYXRlLm5vdygpKTsKICAgICAgICB9CiAgICAgICAgaWYgKCB2YWx1ZS5pbmNsdWRlcygnJGN1cnJlbnREYXRlJCcpICkgewogICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2VBbGwoJyRjdXJyZW50RGF0ZSQnLCBgJHtEYXRlKCl9YCk7CiAgICAgICAgfQogICAgICAgIGlmICggdmFsdWUuaW5jbHVkZXMoJyRjdXJyZW50SVNPRGF0ZSQnKSApIHsKICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlQWxsKCckY3VycmVudElTT0RhdGUkJywgKG5ldyBEYXRlKCkpLnRvSVNPU3RyaW5nKCkpOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgY29uc3QgbWF0Y2ggPSAvXigiPykoLispXDEkLy5leGVjKG5vcm1hbGl6ZWQpOwogICAgICAgIGNvbnN0IHVucXVvdGVkID0gbWF0Y2ggJiYgbWF0Y2hbMl0gfHwgbm9ybWFsaXplZDsKICAgICAgICBpZiAoIHRydXN0ZWRWYWx1ZXMuaW5jbHVkZXModW5xdW90ZWQpID09PSBmYWxzZSApIHsKICAgICAgICAgICAgaWYgKCAvXi0/XGQrJC8udGVzdCh1bnF1b3RlZCkgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICAgICAgY29uc3QgbiA9IHBhcnNlSW50KHVucXVvdGVkLCAxMCkgfHwgMDsKICAgICAgICAgICAgaWYgKCBuIDwgLTMyNzY3IHx8IG4gPiAzMjc2NyApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgfQoKICAgIHRyeSB7CiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IHNlbGZbYCR7d2hpY2h9U3RvcmFnZWBdOwogICAgICAgIGlmICggdmFsdWUgPT09ICckcmVtb3ZlJCcgKSB7CiAgICAgICAgICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgICAgICAgICBjb25zdCBwYXR0ZXJuID0gc2FmZS5wYXR0ZXJuVG9SZWdleChrZXksIHVuZGVmaW5lZCwgdHJ1ZSApOwogICAgICAgICAgICBjb25zdCB0b1JlbW92ZSA9IFtdOwogICAgICAgICAgICBmb3IgKCBsZXQgaSA9IDAsIG4gPSBzdG9yYWdlLmxlbmd0aDsgaSA8IG47IGkrKyApIHsKICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IHN0b3JhZ2Uua2V5KGkpOwogICAgICAgICAgICAgICAgaWYgKCBwYXR0ZXJuLnRlc3Qoa2V5KSApIHsgdG9SZW1vdmUucHVzaChrZXkpOyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yICggY29uc3Qga2V5IG9mIHRvUmVtb3ZlICkgewogICAgICAgICAgICAgICAgc3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzdG9yYWdlLnNldEl0ZW0oa2V5LCBgJHt2YWx1ZX1gKTsKICAgICAgICB9CiAgICB9IGNhdGNoKGV4KSB7CiAgICB9Cn0KCiAgKGZ1bmN0aW9uIHNldExvY2FsU3RvcmFnZUl0ZW0oa2V5ID0gJycsIHZhbHVlID0gJycpIHsKICAgIHNldExvY2FsU3RvcmFnZUl0ZW1GbignbG9jYWwnLCBmYWxzZSwga2V5LCB2YWx1ZSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"set-session-storage-item.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBnZXRTYWZlQ29va2llVmFsdWVzRm4oKSB7CiAgICByZXR1cm4gWwogICAgICAgICdhY2NlcHQnLCAncmVqZWN0JywKICAgICAgICAnYWNjZXB0ZWQnLCAncmVqZWN0ZWQnLCAnbm90YWNjZXB0ZWQnLAogICAgICAgICdhbGxvdycsICdkaXNhbGxvdycsICdkZW55JywKICAgICAgICAnYWxsb3dlZCcsICdkZW5pZWQnLAogICAgICAgICdhcHByb3ZlZCcsICdkaXNhcHByb3ZlZCcsCiAgICAgICAgJ2NoZWNrZWQnLCAndW5jaGVja2VkJywKICAgICAgICAnZGlzbWlzcycsICdkaXNtaXNzZWQnLAogICAgICAgICdlbmFibGUnLCAnZGlzYWJsZScsCiAgICAgICAgJ2VuYWJsZWQnLCAnZGlzYWJsZWQnLAogICAgICAgICdlc3NlbnRpYWwnLCAnbm9uZXNzZW50aWFsJywKICAgICAgICAnZm9yYmlkZGVuJywgJ2ZvcmV2ZXInLAogICAgICAgICdoaWRlJywgJ2hpZGRlbicsCiAgICAgICAgJ25lY2Vzc2FyeScsICdyZXF1aXJlZCcsCiAgICAgICAgJ29rJywKICAgICAgICAnb24nLCAnb2ZmJywKICAgICAgICAndHJ1ZScsICd0JywgJ2ZhbHNlJywgJ2YnLAogICAgICAgICd5ZXMnLCAneScsICdubycsICduJywKICAgIF07Cn0KZnVuY3Rpb24gc2V0TG9jYWxTdG9yYWdlSXRlbUZuKAogICAgd2hpY2ggPSAnbG9jYWwnLAogICAgdHJ1c3RlZCA9IGZhbHNlLAogICAga2V5ID0gJycsCiAgICB2YWx1ZSA9ICcnLAopIHsKICAgIGlmICgga2V5ID09PSAnJyApIHsgcmV0dXJuOyB9CgogICAgLy8gRm9yIGluY3JlYXNlZCBjb21wYXRpYmlsaXR5IHdpdGggQWRHdWFyZAogICAgaWYgKCB2YWx1ZSA9PT0gJ2VtcHR5QXJyJyApIHsKICAgICAgICB2YWx1ZSA9ICdbXSc7CiAgICB9IGVsc2UgaWYgKCB2YWx1ZSA9PT0gJ2VtcHR5T2JqJyApIHsKICAgICAgICB2YWx1ZSA9ICd7fSc7CiAgICB9CgogICAgY29uc3QgdHJ1c3RlZFZhbHVlcyA9IFsKICAgICAgICAnJywKICAgICAgICAndW5kZWZpbmVkJywgJ251bGwnLAogICAgICAgICd7fScsICdbXScsICciIicsCiAgICAgICAgJyRyZW1vdmUkJywKICAgICAgICAuLi5nZXRTYWZlQ29va2llVmFsdWVzRm4oKSwKICAgIF07CgogICAgaWYgKCB0cnVzdGVkICkgewogICAgICAgIGlmICggdmFsdWUuaW5jbHVkZXMoJyRub3ckJykgKSB7CiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZUFsbCgnJG5vdyQnLCBEYXRlLm5vdygpKTsKICAgICAgICB9CiAgICAgICAgaWYgKCB2YWx1ZS5pbmNsdWRlcygnJGN1cnJlbnREYXRlJCcpICkgewogICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2VBbGwoJyRjdXJyZW50RGF0ZSQnLCBgJHtEYXRlKCl9YCk7CiAgICAgICAgfQogICAgICAgIGlmICggdmFsdWUuaW5jbHVkZXMoJyRjdXJyZW50SVNPRGF0ZSQnKSApIHsKICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlQWxsKCckY3VycmVudElTT0RhdGUkJywgKG5ldyBEYXRlKCkpLnRvSVNPU3RyaW5nKCkpOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgY29uc3QgbWF0Y2ggPSAvXigiPykoLispXDEkLy5leGVjKG5vcm1hbGl6ZWQpOwogICAgICAgIGNvbnN0IHVucXVvdGVkID0gbWF0Y2ggJiYgbWF0Y2hbMl0gfHwgbm9ybWFsaXplZDsKICAgICAgICBpZiAoIHRydXN0ZWRWYWx1ZXMuaW5jbHVkZXModW5xdW90ZWQpID09PSBmYWxzZSApIHsKICAgICAgICAgICAgaWYgKCAvXi0/XGQrJC8udGVzdCh1bnF1b3RlZCkgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICAgICAgY29uc3QgbiA9IHBhcnNlSW50KHVucXVvdGVkLCAxMCkgfHwgMDsKICAgICAgICAgICAgaWYgKCBuIDwgLTMyNzY3IHx8IG4gPiAzMjc2NyApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgfQoKICAgIHRyeSB7CiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IHNlbGZbYCR7d2hpY2h9U3RvcmFnZWBdOwogICAgICAgIGlmICggdmFsdWUgPT09ICckcmVtb3ZlJCcgKSB7CiAgICAgICAgICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgICAgICAgICBjb25zdCBwYXR0ZXJuID0gc2FmZS5wYXR0ZXJuVG9SZWdleChrZXksIHVuZGVmaW5lZCwgdHJ1ZSApOwogICAgICAgICAgICBjb25zdCB0b1JlbW92ZSA9IFtdOwogICAgICAgICAgICBmb3IgKCBsZXQgaSA9IDAsIG4gPSBzdG9yYWdlLmxlbmd0aDsgaSA8IG47IGkrKyApIHsKICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IHN0b3JhZ2Uua2V5KGkpOwogICAgICAgICAgICAgICAgaWYgKCBwYXR0ZXJuLnRlc3Qoa2V5KSApIHsgdG9SZW1vdmUucHVzaChrZXkpOyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yICggY29uc3Qga2V5IG9mIHRvUmVtb3ZlICkgewogICAgICAgICAgICAgICAgc3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzdG9yYWdlLnNldEl0ZW0oa2V5LCBgJHt2YWx1ZX1gKTsKICAgICAgICB9CiAgICB9IGNhdGNoKGV4KSB7CiAgICB9Cn0KCiAgKGZ1bmN0aW9uIHNldFNlc3Npb25TdG9yYWdlSXRlbShrZXkgPSAnJywgdmFsdWUgPSAnJykgewogICAgc2V0TG9jYWxTdG9yYWdlSXRlbUZuKCdzZXNzaW9uJywgZmFsc2UsIGtleSwgdmFsdWUpOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"trusted-set-local-storage-item.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBnZXRTYWZlQ29va2llVmFsdWVzRm4oKSB7CiAgICByZXR1cm4gWwogICAgICAgICdhY2NlcHQnLCAncmVqZWN0JywKICAgICAgICAnYWNjZXB0ZWQnLCAncmVqZWN0ZWQnLCAnbm90YWNjZXB0ZWQnLAogICAgICAgICdhbGxvdycsICdkaXNhbGxvdycsICdkZW55JywKICAgICAgICAnYWxsb3dlZCcsICdkZW5pZWQnLAogICAgICAgICdhcHByb3ZlZCcsICdkaXNhcHByb3ZlZCcsCiAgICAgICAgJ2NoZWNrZWQnLCAndW5jaGVja2VkJywKICAgICAgICAnZGlzbWlzcycsICdkaXNtaXNzZWQnLAogICAgICAgICdlbmFibGUnLCAnZGlzYWJsZScsCiAgICAgICAgJ2VuYWJsZWQnLCAnZGlzYWJsZWQnLAogICAgICAgICdlc3NlbnRpYWwnLCAnbm9uZXNzZW50aWFsJywKICAgICAgICAnZm9yYmlkZGVuJywgJ2ZvcmV2ZXInLAogICAgICAgICdoaWRlJywgJ2hpZGRlbicsCiAgICAgICAgJ25lY2Vzc2FyeScsICdyZXF1aXJlZCcsCiAgICAgICAgJ29rJywKICAgICAgICAnb24nLCAnb2ZmJywKICAgICAgICAndHJ1ZScsICd0JywgJ2ZhbHNlJywgJ2YnLAogICAgICAgICd5ZXMnLCAneScsICdubycsICduJywKICAgIF07Cn0KZnVuY3Rpb24gc2V0TG9jYWxTdG9yYWdlSXRlbUZuKAogICAgd2hpY2ggPSAnbG9jYWwnLAogICAgdHJ1c3RlZCA9IGZhbHNlLAogICAga2V5ID0gJycsCiAgICB2YWx1ZSA9ICcnLAopIHsKICAgIGlmICgga2V5ID09PSAnJyApIHsgcmV0dXJuOyB9CgogICAgLy8gRm9yIGluY3JlYXNlZCBjb21wYXRpYmlsaXR5IHdpdGggQWRHdWFyZAogICAgaWYgKCB2YWx1ZSA9PT0gJ2VtcHR5QXJyJyApIHsKICAgICAgICB2YWx1ZSA9ICdbXSc7CiAgICB9IGVsc2UgaWYgKCB2YWx1ZSA9PT0gJ2VtcHR5T2JqJyApIHsKICAgICAgICB2YWx1ZSA9ICd7fSc7CiAgICB9CgogICAgY29uc3QgdHJ1c3RlZFZhbHVlcyA9IFsKICAgICAgICAnJywKICAgICAgICAndW5kZWZpbmVkJywgJ251bGwnLAogICAgICAgICd7fScsICdbXScsICciIicsCiAgICAgICAgJyRyZW1vdmUkJywKICAgICAgICAuLi5nZXRTYWZlQ29va2llVmFsdWVzRm4oKSwKICAgIF07CgogICAgaWYgKCB0cnVzdGVkICkgewogICAgICAgIGlmICggdmFsdWUuaW5jbHVkZXMoJyRub3ckJykgKSB7CiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZUFsbCgnJG5vdyQnLCBEYXRlLm5vdygpKTsKICAgICAgICB9CiAgICAgICAgaWYgKCB2YWx1ZS5pbmNsdWRlcygnJGN1cnJlbnREYXRlJCcpICkgewogICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2VBbGwoJyRjdXJyZW50RGF0ZSQnLCBgJHtEYXRlKCl9YCk7CiAgICAgICAgfQogICAgICAgIGlmICggdmFsdWUuaW5jbHVkZXMoJyRjdXJyZW50SVNPRGF0ZSQnKSApIHsKICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlQWxsKCckY3VycmVudElTT0RhdGUkJywgKG5ldyBEYXRlKCkpLnRvSVNPU3RyaW5nKCkpOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgY29uc3QgbWF0Y2ggPSAvXigiPykoLispXDEkLy5leGVjKG5vcm1hbGl6ZWQpOwogICAgICAgIGNvbnN0IHVucXVvdGVkID0gbWF0Y2ggJiYgbWF0Y2hbMl0gfHwgbm9ybWFsaXplZDsKICAgICAgICBpZiAoIHRydXN0ZWRWYWx1ZXMuaW5jbHVkZXModW5xdW90ZWQpID09PSBmYWxzZSApIHsKICAgICAgICAgICAgaWYgKCAvXi0/XGQrJC8udGVzdCh1bnF1b3RlZCkgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICAgICAgY29uc3QgbiA9IHBhcnNlSW50KHVucXVvdGVkLCAxMCkgfHwgMDsKICAgICAgICAgICAgaWYgKCBuIDwgLTMyNzY3IHx8IG4gPiAzMjc2NyApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgfQoKICAgIHRyeSB7CiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IHNlbGZbYCR7d2hpY2h9U3RvcmFnZWBdOwogICAgICAgIGlmICggdmFsdWUgPT09ICckcmVtb3ZlJCcgKSB7CiAgICAgICAgICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgICAgICAgICBjb25zdCBwYXR0ZXJuID0gc2FmZS5wYXR0ZXJuVG9SZWdleChrZXksIHVuZGVmaW5lZCwgdHJ1ZSApOwogICAgICAgICAgICBjb25zdCB0b1JlbW92ZSA9IFtdOwogICAgICAgICAgICBmb3IgKCBsZXQgaSA9IDAsIG4gPSBzdG9yYWdlLmxlbmd0aDsgaSA8IG47IGkrKyApIHsKICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IHN0b3JhZ2Uua2V5KGkpOwogICAgICAgICAgICAgICAgaWYgKCBwYXR0ZXJuLnRlc3Qoa2V5KSApIHsgdG9SZW1vdmUucHVzaChrZXkpOyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yICggY29uc3Qga2V5IG9mIHRvUmVtb3ZlICkgewogICAgICAgICAgICAgICAgc3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzdG9yYWdlLnNldEl0ZW0oa2V5LCBgJHt2YWx1ZX1gKTsKICAgICAgICB9CiAgICB9IGNhdGNoKGV4KSB7CiAgICB9Cn0KCiAgKGZ1bmN0aW9uIHRydXN0ZWRTZXRMb2NhbFN0b3JhZ2VJdGVtKGtleSA9ICcnLCB2YWx1ZSA9ICcnKSB7CiAgICBzZXRMb2NhbFN0b3JhZ2VJdGVtRm4oJ2xvY2FsJywgdHJ1ZSwga2V5LCB2YWx1ZSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"trusted-set-session-storage-item.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBnZXRTYWZlQ29va2llVmFsdWVzRm4oKSB7CiAgICByZXR1cm4gWwogICAgICAgICdhY2NlcHQnLCAncmVqZWN0JywKICAgICAgICAnYWNjZXB0ZWQnLCAncmVqZWN0ZWQnLCAnbm90YWNjZXB0ZWQnLAogICAgICAgICdhbGxvdycsICdkaXNhbGxvdycsICdkZW55JywKICAgICAgICAnYWxsb3dlZCcsICdkZW5pZWQnLAogICAgICAgICdhcHByb3ZlZCcsICdkaXNhcHByb3ZlZCcsCiAgICAgICAgJ2NoZWNrZWQnLCAndW5jaGVja2VkJywKICAgICAgICAnZGlzbWlzcycsICdkaXNtaXNzZWQnLAogICAgICAgICdlbmFibGUnLCAnZGlzYWJsZScsCiAgICAgICAgJ2VuYWJsZWQnLCAnZGlzYWJsZWQnLAogICAgICAgICdlc3NlbnRpYWwnLCAnbm9uZXNzZW50aWFsJywKICAgICAgICAnZm9yYmlkZGVuJywgJ2ZvcmV2ZXInLAogICAgICAgICdoaWRlJywgJ2hpZGRlbicsCiAgICAgICAgJ25lY2Vzc2FyeScsICdyZXF1aXJlZCcsCiAgICAgICAgJ29rJywKICAgICAgICAnb24nLCAnb2ZmJywKICAgICAgICAndHJ1ZScsICd0JywgJ2ZhbHNlJywgJ2YnLAogICAgICAgICd5ZXMnLCAneScsICdubycsICduJywKICAgIF07Cn0KZnVuY3Rpb24gc2V0TG9jYWxTdG9yYWdlSXRlbUZuKAogICAgd2hpY2ggPSAnbG9jYWwnLAogICAgdHJ1c3RlZCA9IGZhbHNlLAogICAga2V5ID0gJycsCiAgICB2YWx1ZSA9ICcnLAopIHsKICAgIGlmICgga2V5ID09PSAnJyApIHsgcmV0dXJuOyB9CgogICAgLy8gRm9yIGluY3JlYXNlZCBjb21wYXRpYmlsaXR5IHdpdGggQWRHdWFyZAogICAgaWYgKCB2YWx1ZSA9PT0gJ2VtcHR5QXJyJyApIHsKICAgICAgICB2YWx1ZSA9ICdbXSc7CiAgICB9IGVsc2UgaWYgKCB2YWx1ZSA9PT0gJ2VtcHR5T2JqJyApIHsKICAgICAgICB2YWx1ZSA9ICd7fSc7CiAgICB9CgogICAgY29uc3QgdHJ1c3RlZFZhbHVlcyA9IFsKICAgICAgICAnJywKICAgICAgICAndW5kZWZpbmVkJywgJ251bGwnLAogICAgICAgICd7fScsICdbXScsICciIicsCiAgICAgICAgJyRyZW1vdmUkJywKICAgICAgICAuLi5nZXRTYWZlQ29va2llVmFsdWVzRm4oKSwKICAgIF07CgogICAgaWYgKCB0cnVzdGVkICkgewogICAgICAgIGlmICggdmFsdWUuaW5jbHVkZXMoJyRub3ckJykgKSB7CiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZUFsbCgnJG5vdyQnLCBEYXRlLm5vdygpKTsKICAgICAgICB9CiAgICAgICAgaWYgKCB2YWx1ZS5pbmNsdWRlcygnJGN1cnJlbnREYXRlJCcpICkgewogICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2VBbGwoJyRjdXJyZW50RGF0ZSQnLCBgJHtEYXRlKCl9YCk7CiAgICAgICAgfQogICAgICAgIGlmICggdmFsdWUuaW5jbHVkZXMoJyRjdXJyZW50SVNPRGF0ZSQnKSApIHsKICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlQWxsKCckY3VycmVudElTT0RhdGUkJywgKG5ldyBEYXRlKCkpLnRvSVNPU3RyaW5nKCkpOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgY29uc3QgbWF0Y2ggPSAvXigiPykoLispXDEkLy5leGVjKG5vcm1hbGl6ZWQpOwogICAgICAgIGNvbnN0IHVucXVvdGVkID0gbWF0Y2ggJiYgbWF0Y2hbMl0gfHwgbm9ybWFsaXplZDsKICAgICAgICBpZiAoIHRydXN0ZWRWYWx1ZXMuaW5jbHVkZXModW5xdW90ZWQpID09PSBmYWxzZSApIHsKICAgICAgICAgICAgaWYgKCAvXi0/XGQrJC8udGVzdCh1bnF1b3RlZCkgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICAgICAgY29uc3QgbiA9IHBhcnNlSW50KHVucXVvdGVkLCAxMCkgfHwgMDsKICAgICAgICAgICAgaWYgKCBuIDwgLTMyNzY3IHx8IG4gPiAzMjc2NyApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgfQoKICAgIHRyeSB7CiAgICAgICAgY29uc3Qgc3RvcmFnZSA9IHNlbGZbYCR7d2hpY2h9U3RvcmFnZWBdOwogICAgICAgIGlmICggdmFsdWUgPT09ICckcmVtb3ZlJCcgKSB7CiAgICAgICAgICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgICAgICAgICBjb25zdCBwYXR0ZXJuID0gc2FmZS5wYXR0ZXJuVG9SZWdleChrZXksIHVuZGVmaW5lZCwgdHJ1ZSApOwogICAgICAgICAgICBjb25zdCB0b1JlbW92ZSA9IFtdOwogICAgICAgICAgICBmb3IgKCBsZXQgaSA9IDAsIG4gPSBzdG9yYWdlLmxlbmd0aDsgaSA8IG47IGkrKyApIHsKICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IHN0b3JhZ2Uua2V5KGkpOwogICAgICAgICAgICAgICAgaWYgKCBwYXR0ZXJuLnRlc3Qoa2V5KSApIHsgdG9SZW1vdmUucHVzaChrZXkpOyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yICggY29uc3Qga2V5IG9mIHRvUmVtb3ZlICkgewogICAgICAgICAgICAgICAgc3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzdG9yYWdlLnNldEl0ZW0oa2V5LCBgJHt2YWx1ZX1gKTsKICAgICAgICB9CiAgICB9IGNhdGNoKGV4KSB7CiAgICB9Cn0KCiAgKGZ1bmN0aW9uIHRydXN0ZWRTZXRTZXNzaW9uU3RvcmFnZUl0ZW0oa2V5ID0gJycsIHZhbHVlID0gJycpIHsKICAgIHNldExvY2FsU3RvcmFnZUl0ZW1Gbignc2Vzc2lvbicsIHRydWUsIGtleSwgdmFsdWUpOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"abort-current-script.js","aliases":["acs.js","abort-current-inline-script.js","acis.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0UmFuZG9tVG9rZW4oKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIHJldHVybiBzYWZlLlN0cmluZ19mcm9tQ2hhckNvZGUoRGF0ZS5ub3coKSAlIDI2ICsgOTcpICsKICAgICAgICBzYWZlLk1hdGhfZmxvb3Ioc2FmZS5NYXRoX3JhbmRvbSgpICogOTgyNDUxNjUzICsgOTgyNDUxNjUzKS50b1N0cmluZygzNik7Cn0KZnVuY3Rpb24gc2hvdWxkRGVidWcoZGV0YWlscykgewogICAgaWYgKCBkZXRhaWxzIGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICByZXR1cm4gc2NyaXB0bGV0R2xvYmFscy5jYW5EZWJ1ZyAmJiBkZXRhaWxzLmRlYnVnOwp9CmZ1bmN0aW9uIHNhZmVTZWxmKCkgewogICAgaWYgKCBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmOwogICAgfQogICAgY29uc3Qgc2VsZiA9IGdsb2JhbFRoaXM7CiAgICBjb25zdCBzYWZlID0gewogICAgICAgICdBcnJheV9mcm9tJzogQXJyYXkuZnJvbSwKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdGdW5jdGlvbl90b1N0cmluZ0ZuJzogc2VsZi5GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nJzogdGhpc0FyZyA9PiBzYWZlLkZ1bmN0aW9uX3RvU3RyaW5nRm4uY2FsbCh0aGlzQXJnKSwKICAgICAgICAnTWF0aF9mbG9vcic6IE1hdGguZmxvb3IsCiAgICAgICAgJ01hdGhfbWF4JzogTWF0aC5tYXgsCiAgICAgICAgJ01hdGhfbWluJzogTWF0aC5taW4sCiAgICAgICAgJ01hdGhfcmFuZG9tJzogTWF0aC5yYW5kb20sCiAgICAgICAgJ09iamVjdCc6IE9iamVjdCwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnR5JzogT2JqZWN0LmRlZmluZVByb3BlcnR5LmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnRpZXMnOiBPYmplY3QuZGVmaW5lUHJvcGVydGllcy5iaW5kKE9iamVjdCksCiAgICAgICAgJ09iamVjdF9mcm9tRW50cmllcyc6IE9iamVjdC5mcm9tRW50cmllcy5iaW5kKE9iamVjdCksCiAgICAgICAgJ09iamVjdF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLmJpbmQoT2JqZWN0KSwKICAgICAgICAnUmVnRXhwJzogc2VsZi5SZWdFeHAsCiAgICAgICAgJ1JlZ0V4cF90ZXN0Jzogc2VsZi5SZWdFeHAucHJvdG90eXBlLnRlc3QsCiAgICAgICAgJ1JlZ0V4cF9leGVjJzogc2VsZi5SZWdFeHAucHJvdG90eXBlLmV4ZWMsCiAgICAgICAgJ1JlcXVlc3RfY2xvbmUnOiBzZWxmLlJlcXVlc3QucHJvdG90eXBlLmNsb25lLAogICAgICAgICdTdHJpbmdfZnJvbUNoYXJDb2RlJzogU3RyaW5nLmZyb21DaGFyQ29kZSwKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnSlNPTic6IHNlbGYuSlNPTiwKICAgICAgICAnSlNPTl9wYXJzZUZuJzogc2VsZi5KU09OLnBhcnNlLAogICAgICAgICdKU09OX3N0cmluZ2lmeUZuJzogc2VsZi5KU09OLnN0cmluZ2lmeSwKICAgICAgICAnSlNPTl9wYXJzZSc6ICguLi5hcmdzKSA9PiBzYWZlLkpTT05fcGFyc2VGbi5jYWxsKHNhZmUuSlNPTiwgLi4uYXJncyksCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5JzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9zdHJpbmdpZnlGbi5jYWxsKHNhZmUuSlNPTiwgLi4uYXJncyksCiAgICAgICAgJ2xvZyc6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCiAgICAgICAgLy8gUHJvcGVydGllcwogICAgICAgIGxvZ0xldmVsOiAwLAogICAgICAgIC8vIE1ldGhvZHMKICAgICAgICBtYWtlTG9nUHJlZml4KC4uLmFyZ3MpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyICYmIGBbJHthcmdzLmpvaW4oJyBcdTIwNUQgJyl9XWAgfHwgJyc7CiAgICAgICAgfSwKICAgICAgICB1Ym9Mb2coLi4uYXJncykgewogICAgICAgICAgICBpZiAoIHRoaXMuc2VuZFRvTG9nZ2VyID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGFyZ3MgPT09IHVuZGVmaW5lZCB8fCBhcmdzWzBdID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbmRUb0xvZ2dlcignaW5mbycsIC4uLmFyZ3MpOwogICAgICAgICAgICAKICAgICAgICB9LAogICAgICAgIHVib0VyciguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdlcnJvcicsIC4uLmFyZ3MpOwogICAgICAgIH0sCiAgICAgICAgZXNjYXBlUmVnZXhDaGFycyhzKSB7CiAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpOwogICAgICAgIH0sCiAgICAgICAgaW5pdFBhdHRlcm4ocGF0dGVybiwgb3B0aW9ucyA9IHt9KSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geyBtYXRjaEFsbDogdHJ1ZSwgZXhwZWN0OiB0cnVlIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZXhwZWN0ID0gKG9wdGlvbnMuY2FuTmVnYXRlICE9PSB0cnVlIHx8IHBhdHRlcm4uc3RhcnRzV2l0aCgnIScpID09PSBmYWxzZSk7CiAgICAgICAgICAgIGlmICggZXhwZWN0ID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnNsaWNlKDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoICE9PSBudWxsICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMl0gfHwgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIG9wdGlvbnMuZmxhZ3MgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCh0aGlzLmVzY2FwZVJlZ2V4Q2hhcnMocGF0dGVybiksCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgcGF0dGVybiwgZXhwZWN0IH07CiAgICAgICAgfSwKICAgICAgICB0ZXN0UGF0dGVybihkZXRhaWxzLCBoYXlzdGFjaykgewogICAgICAgICAgICBpZiAoIGRldGFpbHMubWF0Y2hBbGwgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgICAgIGlmICggZGV0YWlscy5yZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLlJlZ0V4cF90ZXN0LmNhbGwoZGV0YWlscy5yZSwgaGF5c3RhY2spID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gaGF5c3RhY2suaW5jbHVkZXMoZGV0YWlscy5wYXR0ZXJuKSA9PT0gZGV0YWlscy5leHBlY3Q7CiAgICAgICAgfSwKICAgICAgICBwYXR0ZXJuVG9SZWdleChwYXR0ZXJuLCBmbGFncyA9IHVuZGVmaW5lZCwgdmVyYmF0aW0gPSBmYWxzZSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgeyByZXR1cm4gL14vOyB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoID09PSBudWxsICkgewogICAgICAgICAgICAgICAgY29uc3QgcmVTdHIgPSB0aGlzLmVzY2FwZVJlZ2V4Q2hhcnMocGF0dGVybik7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cCh2ZXJiYXRpbSA/IGBeJHtyZVN0cn0kYCA6IHJlU3RyLCBmbGFncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKG1hdGNoWzFdLCBtYXRjaFsyXSB8fCB1bmRlZmluZWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKGV4KSB7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIC9eLzsKICAgICAgICB9LAogICAgICAgIGdldEV4dHJhQXJncyhhcmdzLCBvZmZzZXQgPSAwKSB7CiAgICAgICAgICAgIGNvbnN0IGVudHJpZXMgPSBhcmdzLnNsaWNlKG9mZnNldCkucmVkdWNlKChvdXQsIHYsIGksIGEpID0+IHsKICAgICAgICAgICAgICAgIGlmICggKGkgJiAxKSA9PT0gMCApIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByYXdWYWx1ZSA9IGFbaSsxXTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IC9eXGQrJC8udGVzdChyYXdWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgPyBwYXJzZUludChyYXdWYWx1ZSwgMTApCiAgICAgICAgICAgICAgICAgICAgICAgIDogcmF3VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgb3V0LnB1c2goWyBhW2ldLCB2YWx1ZSBdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgICAgICAgIH0sIFtdKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuT2JqZWN0X2Zyb21FbnRyaWVzKGVudHJpZXMpOwogICAgICAgIH0sCiAgICAgICAgb25JZGxlKGZuLCBvcHRpb25zKSB7CiAgICAgICAgICAgIGlmICggc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayhmbiwgb3B0aW9ucyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZuKTsKICAgICAgICB9LAogICAgICAgIG9mZklkbGUoaWQpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jYW5jZWxJZGxlQ2FsbGJhY2soaWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkKTsKICAgICAgICB9CiAgICB9OwogICAgc2NyaXB0bGV0R2xvYmFscy5zYWZlU2VsZiA9IHNhZmU7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuIHNhZmU7IH0KICAgIC8vIFRoaXMgaXMgZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBsb2dnZXIgaXMgb3BlbmVkCiAgICBzYWZlLmxvZ0xldmVsID0gc2NyaXB0bGV0R2xvYmFscy5sb2dMZXZlbCB8fCAxOwogICAgbGV0IGxhc3RMb2dUeXBlID0gJyc7CiAgICBsZXQgbGFzdExvZ1RleHQgPSAnJzsKICAgIGxldCBsYXN0TG9nVGltZSA9IDA7CiAgICBzYWZlLnRvTG9nVGV4dCA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgaWYgKCBhcmdzLmxlbmd0aCA9PT0gMCApIHsgcmV0dXJuOyB9CiAgICAgICAgY29uc3QgdGV4dCA9IGBbJHtkb2N1bWVudC5sb2NhdGlvbi5ob3N0bmFtZSB8fCBkb2N1bWVudC5sb2NhdGlvbi5ocmVmfV0ke2FyZ3Muam9pbignICcpfWA7CiAgICAgICAgaWYgKCB0ZXh0ID09PSBsYXN0TG9nVGV4dCAmJiB0eXBlID09PSBsYXN0TG9nVHlwZSApIHsKICAgICAgICAgICAgaWYgKCAoRGF0ZS5ub3coKSAtIGxhc3RMb2dUaW1lKSA8IDUwMDAgKSB7IHJldHVybjsgfQogICAgICAgIH0KICAgICAgICBsYXN0TG9nVHlwZSA9IHR5cGU7CiAgICAgICAgbGFzdExvZ1RleHQgPSB0ZXh0OwogICAgICAgIGxhc3RMb2dUaW1lID0gRGF0ZS5ub3coKTsKICAgICAgICByZXR1cm4gdGV4dDsKICAgIH07CiAgICB0cnkgewogICAgICAgIGNvbnN0IGJjID0gbmV3IHNlbGYuQnJvYWRjYXN0Q2hhbm5lbChzY3JpcHRsZXRHbG9iYWxzLmJjU2VjcmV0KTsKICAgICAgICBsZXQgYmNCdWZmZXIgPSBbXTsKICAgICAgICBzYWZlLnNlbmRUb0xvZ2dlciA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzYWZlLnRvTG9nVGV4dCh0eXBlLCAuLi5hcmdzKTsKICAgICAgICAgICAgaWYgKCB0ZXh0ID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYmMucG9zdE1lc3NhZ2UoeyB3aGF0OiAnbWVzc2FnZVRvTG9nZ2VyJywgdHlwZSwgdGV4dCB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBiY0J1ZmZlci5wdXNoKHsgdHlwZSwgdGV4dCB9KTsKICAgICAgICB9OwogICAgICAgIGJjLm9ubWVzc2FnZSA9IGV2ID0+IHsKICAgICAgICAgICAgY29uc3QgbXNnID0gZXYuZGF0YTsKICAgICAgICAgICAgc3dpdGNoICggbXNnICkgewogICAgICAgICAgICBjYXNlICdpYW1yZWFkeSEnOgogICAgICAgICAgICAgICAgaWYgKCBiY0J1ZmZlciA9PT0gdW5kZWZpbmVkICkgeyBicmVhazsgfQogICAgICAgICAgICAgICAgYmNCdWZmZXIuZm9yRWFjaCgoeyB0eXBlLCB0ZXh0IH0pID0+CiAgICAgICAgICAgICAgICAgICAgYmMucG9zdE1lc3NhZ2UoeyB3aGF0OiAnbWVzc2FnZVRvTG9nZ2VyJywgdHlwZSwgdGV4dCB9KQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGJjQnVmZmVyID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3NldFNjcmlwdGxldExvZ0xldmVsVG9PbmUnOgogICAgICAgICAgICAgICAgc2FmZS5sb2dMZXZlbCA9IDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb1R3byc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBiYy5wb3N0TWVzc2FnZSgnYXJleW91cmVhZHk/Jyk7CiAgICB9IGNhdGNoKF8pIHsKICAgICAgICBzYWZlLnNlbmRUb0xvZ2dlciA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzYWZlLnRvTG9nVGV4dCh0eXBlLCAuLi5hcmdzKTsKICAgICAgICAgICAgaWYgKCB0ZXh0ID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBzYWZlLmxvZyhgdUJPICR7dGV4dH1gKTsKICAgICAgICB9OwogICAgfQogICAgcmV0dXJuIHNhZmU7Cn0KZnVuY3Rpb24gZ2V0RXhjZXB0aW9uVG9rZW4oKSB7CiAgICBjb25zdCB0b2tlbiA9IGdldFJhbmRvbVRva2VuKCk7CiAgICBjb25zdCBvZSA9IHNlbGYub25lcnJvcjsKICAgIHNlbGYub25lcnJvciA9IGZ1bmN0aW9uKG1zZywgLi4uYXJncykgewogICAgICAgIGlmICggdHlwZW9mIG1zZyA9PT0gJ3N0cmluZycgJiYgbXNnLmluY2x1ZGVzKHRva2VuKSApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICBpZiAoIG9lIGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgIHJldHVybiBvZS5jYWxsKHRoaXMsIG1zZywgLi4uYXJncyk7CiAgICAgICAgfQogICAgfS5iaW5kKCk7CiAgICByZXR1cm4gdG9rZW47Cn0KZnVuY3Rpb24gcnVuQXRIdG1sRWxlbWVudEZuKGZuKSB7CiAgICBpZiAoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCApIHsKICAgICAgICBmbigpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCApID0+IHsKICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CiAgICAgICAgZm4oKTsKICAgIH0pOwogICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudCwgeyBjaGlsZExpc3Q6IHRydWUgfSk7Cn0KZnVuY3Rpb24gYWJvcnRDdXJyZW50U2NyaXB0Q29yZSgKICAgIHRhcmdldCA9ICcnLAogICAgbmVlZGxlID0gJycsCiAgICBjb250ZXh0ID0gJycKKSB7CiAgICBpZiAoIHR5cGVvZiB0YXJnZXQgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGlmICggdGFyZ2V0ID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGxvZ1ByZWZpeCA9IHNhZmUubWFrZUxvZ1ByZWZpeCgnYWJvcnQtY3VycmVudC1zY3JpcHQnLCB0YXJnZXQsIG5lZWRsZSwgY29udGV4dCk7CiAgICBjb25zdCByZU5lZWRsZSA9IHNhZmUucGF0dGVyblRvUmVnZXgobmVlZGxlKTsKICAgIGNvbnN0IHJlQ29udGV4dCA9IHNhZmUucGF0dGVyblRvUmVnZXgoY29udGV4dCk7CiAgICBjb25zdCBleHRyYUFyZ3MgPSBzYWZlLmdldEV4dHJhQXJncyhBcnJheS5mcm9tKGFyZ3VtZW50cyksIDMpOwogICAgY29uc3QgdGhpc1NjcmlwdCA9IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQ7CiAgICBjb25zdCBjaGFpbiA9IHRhcmdldC5zcGxpdCgnLicpOwogICAgbGV0IG93bmVyID0gd2luZG93OwogICAgbGV0IHByb3A7CiAgICBmb3IgKDs7KSB7CiAgICAgICAgcHJvcCA9IGNoYWluLnNoaWZ0KCk7CiAgICAgICAgaWYgKCBjaGFpbi5sZW5ndGggPT09IDAgKSB7IGJyZWFrOyB9CiAgICAgICAgaWYgKCBwcm9wIGluIG93bmVyID09PSBmYWxzZSApIHsgYnJlYWs7IH0KICAgICAgICBvd25lciA9IG93bmVyW3Byb3BdOwogICAgICAgIGlmICggb3duZXIgaW5zdGFuY2VvZiBPYmplY3QgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgIH0KICAgIGxldCB2YWx1ZTsKICAgIGxldCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvd25lciwgcHJvcCk7CiAgICBpZiAoCiAgICAgICAgZGVzYyBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgfHwKICAgICAgICBkZXNjLmdldCBpbnN0YW5jZW9mIEZ1bmN0aW9uID09PSBmYWxzZQogICAgKSB7CiAgICAgICAgdmFsdWUgPSBvd25lcltwcm9wXTsKICAgICAgICBkZXNjID0gdW5kZWZpbmVkOwogICAgfQogICAgY29uc3QgZGVidWcgPSBzaG91bGREZWJ1ZyhleHRyYUFyZ3MpOwogICAgY29uc3QgZXhjZXB0aW9uVG9rZW4gPSBnZXRFeGNlcHRpb25Ub2tlbigpOwogICAgY29uc3Qgc2NyaXB0VGV4dHMgPSBuZXcgV2Vha01hcCgpOwogICAgY29uc3QgZ2V0U2NyaXB0VGV4dCA9IGVsZW0gPT4gewogICAgICAgIGxldCB0ZXh0ID0gZWxlbS50ZXh0Q29udGVudDsKICAgICAgICBpZiAoIHRleHQudHJpbSgpICE9PSAnJyApIHsgcmV0dXJuIHRleHQ7IH0KICAgICAgICBpZiAoIHNjcmlwdFRleHRzLmhhcyhlbGVtKSApIHsgcmV0dXJuIHNjcmlwdFRleHRzLmdldChlbGVtKTsgfQogICAgICAgIGNvbnN0IFsgLCBtaW1lLCBjb250ZW50IF0gPQogICAgICAgICAgICAvXmRhdGE6KFteLF0qKSwoLispJC8uZXhlYyhlbGVtLnNyYy50cmltKCkpIHx8CiAgICAgICAgICAgIFsgJycsICcnLCAnJyBdOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHN3aXRjaCAoIHRydWUgKSB7CiAgICAgICAgICAgIGNhc2UgbWltZS5lbmRzV2l0aCgnO2Jhc2U2NCcpOgogICAgICAgICAgICAgICAgdGV4dCA9IHNlbGYuYXRvYihjb250ZW50KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGV4dCA9IHNlbGYuZGVjb2RlVVJJQ29tcG9uZW50KGNvbnRlbnQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoKGV4KSB7CiAgICAgICAgfQogICAgICAgIHNjcmlwdFRleHRzLnNldChlbGVtLCB0ZXh0KTsKICAgICAgICByZXR1cm4gdGV4dDsKICAgIH07CiAgICBjb25zdCB2YWxpZGF0ZSA9ICggKSA9PiB7CiAgICAgICAgY29uc3QgZSA9IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQ7CiAgICAgICAgaWYgKCBlIGluc3RhbmNlb2YgSFRNTFNjcmlwdEVsZW1lbnQgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICBpZiAoIGUgPT09IHRoaXNTY3JpcHQgKSB7IHJldHVybjsgfQogICAgICAgIGlmICggY29udGV4dCAhPT0gJycgJiYgcmVDb250ZXh0LnRlc3QoZS5zcmMpID09PSBmYWxzZSApIHsKICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWRlYnVnZ2VyCiAgICAgICAgICAgIGlmICggZGVidWcgPT09ICdub21hdGNoJyB8fCBkZWJ1ZyA9PT0gJ2FsbCcgKSB7IGRlYnVnZ2VyOyB9CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKCBzYWZlLmxvZ0xldmVsID4gMSAmJiBjb250ZXh0ICE9PSAnJyApIHsKICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCBgTWF0Y2hlZCBzcmNcbiR7ZS5zcmN9YCk7CiAgICAgICAgfQogICAgICAgIGNvbnN0IHNjcmlwdFRleHQgPSBnZXRTY3JpcHRUZXh0KGUpOwogICAgICAgIGlmICggcmVOZWVkbGUudGVzdChzY3JpcHRUZXh0KSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1kZWJ1Z2dlcgogICAgICAgICAgICBpZiAoIGRlYnVnID09PSAnbm9tYXRjaCcgfHwgZGVidWcgPT09ICdhbGwnICkgeyBkZWJ1Z2dlcjsgfQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICggc2FmZS5sb2dMZXZlbCA+IDEgKSB7CiAgICAgICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgYE1hdGNoZWQgdGV4dFxuJHtzY3JpcHRUZXh0fWApOwogICAgICAgIH0KICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZGVidWdnZXIKICAgICAgICBpZiAoIGRlYnVnID09PSAnbWF0Y2gnIHx8IGRlYnVnID09PSAnYWxsJyApIHsgZGVidWdnZXI7IH0KICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsICdBYm9ydGVkJyk7CiAgICAgICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKGV4Y2VwdGlvblRva2VuKTsKICAgIH07CiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZGVidWdnZXIKICAgIGlmICggZGVidWcgPT09ICdpbnN0YWxsJyApIHsgZGVidWdnZXI7IH0KICAgIHRyeSB7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG93bmVyLCBwcm9wLCB7CiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YWxpZGF0ZSgpOwogICAgICAgICAgICAgICAgcmV0dXJuIGRlc2MgaW5zdGFuY2VvZiBPYmplY3QKICAgICAgICAgICAgICAgICAgICA/IGRlc2MuZ2V0LmNhbGwob3duZXIpCiAgICAgICAgICAgICAgICAgICAgOiB2YWx1ZTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICB2YWxpZGF0ZSgpOwogICAgICAgICAgICAgICAgaWYgKCBkZXNjIGluc3RhbmNlb2YgT2JqZWN0ICkgewogICAgICAgICAgICAgICAgICAgIGRlc2Muc2V0LmNhbGwob3duZXIsIGEpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0gY2F0Y2goZXgpIHsKICAgICAgICBzYWZlLnVib0Vycihsb2dQcmVmaXgsIGBFcnJvcjogJHtleH1gKTsKICAgIH0KfQoKICAoZnVuY3Rpb24gYWJvcnRDdXJyZW50U2NyaXB0KC4uLmFyZ3MpIHsKICAgIHJ1bkF0SHRtbEVsZW1lbnRGbigoICkgPT4gewogICAgICAgIGFib3J0Q3VycmVudFNjcmlwdENvcmUoLi4uYXJncyk7CiAgICB9KTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"abort-on-property-read.js","aliases":["aopr.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0UmFuZG9tVG9rZW4oKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIHJldHVybiBzYWZlLlN0cmluZ19mcm9tQ2hhckNvZGUoRGF0ZS5ub3coKSAlIDI2ICsgOTcpICsKICAgICAgICBzYWZlLk1hdGhfZmxvb3Ioc2FmZS5NYXRoX3JhbmRvbSgpICogOTgyNDUxNjUzICsgOTgyNDUxNjUzKS50b1N0cmluZygzNik7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBnZXRFeGNlcHRpb25Ub2tlbigpIHsKICAgIGNvbnN0IHRva2VuID0gZ2V0UmFuZG9tVG9rZW4oKTsKICAgIGNvbnN0IG9lID0gc2VsZi5vbmVycm9yOwogICAgc2VsZi5vbmVycm9yID0gZnVuY3Rpb24obXNnLCAuLi5hcmdzKSB7CiAgICAgICAgaWYgKCB0eXBlb2YgbXNnID09PSAnc3RyaW5nJyAmJiBtc2cuaW5jbHVkZXModG9rZW4pICkgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgIGlmICggb2UgaW5zdGFuY2VvZiBGdW5jdGlvbiApIHsKICAgICAgICAgICAgcmV0dXJuIG9lLmNhbGwodGhpcywgbXNnLCAuLi5hcmdzKTsKICAgICAgICB9CiAgICB9LmJpbmQoKTsKICAgIHJldHVybiB0b2tlbjsKfQoKICAoZnVuY3Rpb24gYWJvcnRPblByb3BlcnR5UmVhZCgKICAgIGNoYWluID0gJycKKSB7CiAgICBpZiAoIHR5cGVvZiBjaGFpbiAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgaWYgKCBjaGFpbiA9PT0gJycgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBsb2dQcmVmaXggPSBzYWZlLm1ha2VMb2dQcmVmaXgoJ2Fib3J0LW9uLXByb3BlcnR5LXJlYWQnLCBjaGFpbik7CiAgICBjb25zdCBleGNlcHRpb25Ub2tlbiA9IGdldEV4Y2VwdGlvblRva2VuKCk7CiAgICBjb25zdCBhYm9ydCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgJ0Fib3J0ZWQnKTsKICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoZXhjZXB0aW9uVG9rZW4pOwogICAgfTsKICAgIGNvbnN0IG1ha2VQcm94eSA9IGZ1bmN0aW9uKG93bmVyLCBjaGFpbikgewogICAgICAgIGNvbnN0IHBvcyA9IGNoYWluLmluZGV4T2YoJy4nKTsKICAgICAgICBpZiAoIHBvcyA9PT0gLTEgKSB7CiAgICAgICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG93bmVyLCBjaGFpbik7CiAgICAgICAgICAgIGlmICggIWRlc2MgfHwgZGVzYy5nZXQgIT09IGFib3J0ICkgewogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG93bmVyLCBjaGFpbiwgewogICAgICAgICAgICAgICAgICAgIGdldDogYWJvcnQsCiAgICAgICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbigpe30KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgY29uc3QgcHJvcCA9IGNoYWluLnNsaWNlKDAsIHBvcyk7CiAgICAgICAgbGV0IHYgPSBvd25lcltwcm9wXTsKICAgICAgICBjaGFpbiA9IGNoYWluLnNsaWNlKHBvcyArIDEpOwogICAgICAgIGlmICggdiApIHsKICAgICAgICAgICAgbWFrZVByb3h5KHYsIGNoYWluKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjb25zdCBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvd25lciwgcHJvcCk7CiAgICAgICAgaWYgKCBkZXNjICYmIGRlc2Muc2V0ICE9PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvd25lciwgcHJvcCwgewogICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdjsgfSwKICAgICAgICAgICAgc2V0OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgICAgICB2ID0gYTsKICAgICAgICAgICAgICAgIGlmICggYSBpbnN0YW5jZW9mIE9iamVjdCApIHsKICAgICAgICAgICAgICAgICAgICBtYWtlUHJveHkoYSwgY2hhaW4pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwogICAgY29uc3Qgb3duZXIgPSB3aW5kb3c7CiAgICBtYWtlUHJveHkob3duZXIsIGNoYWluKTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"abort-on-property-write.js","aliases":["aopw.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0UmFuZG9tVG9rZW4oKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIHJldHVybiBzYWZlLlN0cmluZ19mcm9tQ2hhckNvZGUoRGF0ZS5ub3coKSAlIDI2ICsgOTcpICsKICAgICAgICBzYWZlLk1hdGhfZmxvb3Ioc2FmZS5NYXRoX3JhbmRvbSgpICogOTgyNDUxNjUzICsgOTgyNDUxNjUzKS50b1N0cmluZygzNik7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBnZXRFeGNlcHRpb25Ub2tlbigpIHsKICAgIGNvbnN0IHRva2VuID0gZ2V0UmFuZG9tVG9rZW4oKTsKICAgIGNvbnN0IG9lID0gc2VsZi5vbmVycm9yOwogICAgc2VsZi5vbmVycm9yID0gZnVuY3Rpb24obXNnLCAuLi5hcmdzKSB7CiAgICAgICAgaWYgKCB0eXBlb2YgbXNnID09PSAnc3RyaW5nJyAmJiBtc2cuaW5jbHVkZXModG9rZW4pICkgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgIGlmICggb2UgaW5zdGFuY2VvZiBGdW5jdGlvbiApIHsKICAgICAgICAgICAgcmV0dXJuIG9lLmNhbGwodGhpcywgbXNnLCAuLi5hcmdzKTsKICAgICAgICB9CiAgICB9LmJpbmQoKTsKICAgIHJldHVybiB0b2tlbjsKfQoKICAoZnVuY3Rpb24gYWJvcnRPblByb3BlcnR5V3JpdGUoCiAgICBwcm9wID0gJycKKSB7CiAgICBpZiAoIHR5cGVvZiBwcm9wICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBpZiAoIHByb3AgPT09ICcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbG9nUHJlZml4ID0gc2FmZS5tYWtlTG9nUHJlZml4KCdhYm9ydC1vbi1wcm9wZXJ0eS13cml0ZScsIHByb3ApOwogICAgY29uc3QgZXhjZXB0aW9uVG9rZW4gPSBnZXRFeGNlcHRpb25Ub2tlbigpOwogICAgbGV0IG93bmVyID0gd2luZG93OwogICAgZm9yICg7OykgewogICAgICAgIGNvbnN0IHBvcyA9IHByb3AuaW5kZXhPZignLicpOwogICAgICAgIGlmICggcG9zID09PSAtMSApIHsgYnJlYWs7IH0KICAgICAgICBvd25lciA9IG93bmVyW3Byb3Auc2xpY2UoMCwgcG9zKV07CiAgICAgICAgaWYgKCBvd25lciBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIHByb3AgPSBwcm9wLnNsaWNlKHBvcyArIDEpOwogICAgfQogICAgZGVsZXRlIG93bmVyW3Byb3BdOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG93bmVyLCBwcm9wLCB7CiAgICAgICAgc2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCAnQWJvcnRlZCcpOwogICAgICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoZXhjZXB0aW9uVG9rZW4pOwogICAgICAgIH0KICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"abort-on-stack-trace.js","aliases":["aost.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0UmFuZG9tVG9rZW4oKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIHJldHVybiBzYWZlLlN0cmluZ19mcm9tQ2hhckNvZGUoRGF0ZS5ub3coKSAlIDI2ICsgOTcpICsKICAgICAgICBzYWZlLk1hdGhfZmxvb3Ioc2FmZS5NYXRoX3JhbmRvbSgpICogOTgyNDUxNjUzICsgOTgyNDUxNjUzKS50b1N0cmluZygzNik7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBtYXRjaGVzU3RhY2tUcmFjZSgKICAgIG5lZWRsZURldGFpbHMsCiAgICBsb2dMZXZlbCA9ICcnCikgewogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBleGNlcHRpb25Ub2tlbiA9IGdldEV4Y2VwdGlvblRva2VuKCk7CiAgICBjb25zdCBlcnJvciA9IG5ldyBzYWZlLkVycm9yKGV4Y2VwdGlvblRva2VuKTsKICAgIGNvbnN0IGRvY1VSTCA9IG5ldyBVUkwoc2VsZi5sb2NhdGlvbi5ocmVmKTsKICAgIGRvY1VSTC5oYXNoID0gJyc7CiAgICAvLyBOb3JtYWxpemUgc3RhY2sgdHJhY2UKICAgIGNvbnN0IHJlTGluZSA9IC8oLio/QCk/KFxTKykoOlxkKyk6XGQrXCk/JC87CiAgICBjb25zdCBsaW5lcyA9IFtdOwogICAgZm9yICggbGV0IGxpbmUgb2YgZXJyb3Iuc3RhY2suc3BsaXQoL1tcblxyXSsvKSApIHsKICAgICAgICBpZiAoIGxpbmUuaW5jbHVkZXMoZXhjZXB0aW9uVG9rZW4pICkgeyBjb250aW51ZTsgfQogICAgICAgIGxpbmUgPSBsaW5lLnRyaW0oKTsKICAgICAgICBjb25zdCBtYXRjaCA9IHNhZmUuUmVnRXhwX2V4ZWMuY2FsbChyZUxpbmUsIGxpbmUpOwogICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgbGV0IHVybCA9IG1hdGNoWzJdOwogICAgICAgIGlmICggdXJsLnN0YXJ0c1dpdGgoJygnKSApIHsgdXJsID0gdXJsLnNsaWNlKDEpOyB9CiAgICAgICAgaWYgKCB1cmwgPT09IGRvY1VSTC5ocmVmICkgewogICAgICAgICAgICB1cmwgPSAnaW5saW5lU2NyaXB0JzsKICAgICAgICB9IGVsc2UgaWYgKCB1cmwuc3RhcnRzV2l0aCgnPGFub255bW91cz4nKSApIHsKICAgICAgICAgICAgdXJsID0gJ2luamVjdGVkU2NyaXB0JzsKICAgICAgICB9CiAgICAgICAgbGV0IGZuID0gbWF0Y2hbMV0gIT09IHVuZGVmaW5lZAogICAgICAgICAgICA/IG1hdGNoWzFdLnNsaWNlKDAsIC0xKQogICAgICAgICAgICA6IGxpbmUuc2xpY2UoMCwgbWF0Y2guaW5kZXgpLnRyaW0oKTsKICAgICAgICBpZiAoIGZuLnN0YXJ0c1dpdGgoJ2F0JykgKSB7IGZuID0gZm4uc2xpY2UoMikudHJpbSgpOyB9CiAgICAgICAgbGV0IHJvd2NvbCA9IG1hdGNoWzNdOwogICAgICAgIGxpbmVzLnB1c2goJyAnICsgYCR7Zm59ICR7dXJsfSR7cm93Y29sfToxYC50cmltKCkpOwogICAgfQogICAgbGluZXNbMF0gPSBgc3RhY2tEZXB0aDoke2xpbmVzLmxlbmd0aC0xfWA7CiAgICBjb25zdCBzdGFjayA9IGxpbmVzLmpvaW4oJ1x0Jyk7CiAgICBjb25zdCByID0gbmVlZGxlRGV0YWlscy5tYXRjaEFsbCAhPT0gdHJ1ZSAmJgogICAgICAgIHNhZmUudGVzdFBhdHRlcm4obmVlZGxlRGV0YWlscywgc3RhY2spOwogICAgaWYgKAogICAgICAgIGxvZ0xldmVsID09PSAnYWxsJyB8fAogICAgICAgIGxvZ0xldmVsID09PSAnbWF0Y2gnICYmIHIgfHwKICAgICAgICBsb2dMZXZlbCA9PT0gJ25vbWF0Y2gnICYmICFyCiAgICApIHsKICAgICAgICBzYWZlLnVib0xvZyhzdGFjay5yZXBsYWNlKC9cdC9nLCAnXG4nKSk7CiAgICB9CiAgICByZXR1cm4gcjsKfQpmdW5jdGlvbiBnZXRFeGNlcHRpb25Ub2tlbigpIHsKICAgIGNvbnN0IHRva2VuID0gZ2V0UmFuZG9tVG9rZW4oKTsKICAgIGNvbnN0IG9lID0gc2VsZi5vbmVycm9yOwogICAgc2VsZi5vbmVycm9yID0gZnVuY3Rpb24obXNnLCAuLi5hcmdzKSB7CiAgICAgICAgaWYgKCB0eXBlb2YgbXNnID09PSAnc3RyaW5nJyAmJiBtc2cuaW5jbHVkZXModG9rZW4pICkgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgIGlmICggb2UgaW5zdGFuY2VvZiBGdW5jdGlvbiApIHsKICAgICAgICAgICAgcmV0dXJuIG9lLmNhbGwodGhpcywgbXNnLCAuLi5hcmdzKTsKICAgICAgICB9CiAgICB9LmJpbmQoKTsKICAgIHJldHVybiB0b2tlbjsKfQoKICAoZnVuY3Rpb24gYWJvcnRPblN0YWNrVHJhY2UoCiAgICBjaGFpbiA9ICcnLAogICAgbmVlZGxlID0gJycKKSB7CiAgICBpZiAoIHR5cGVvZiBjaGFpbiAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBuZWVkbGVEZXRhaWxzID0gc2FmZS5pbml0UGF0dGVybihuZWVkbGUsIHsgY2FuTmVnYXRlOiB0cnVlIH0pOwogICAgY29uc3QgZXh0cmFBcmdzID0gc2FmZS5nZXRFeHRyYUFyZ3MoQXJyYXkuZnJvbShhcmd1bWVudHMpLCAyKTsKICAgIGlmICggbmVlZGxlID09PSAnJyApIHsgZXh0cmFBcmdzLmxvZyA9ICdhbGwnOyB9CiAgICBjb25zdCBtYWtlUHJveHkgPSBmdW5jdGlvbihvd25lciwgY2hhaW4pIHsKICAgICAgICBjb25zdCBwb3MgPSBjaGFpbi5pbmRleE9mKCcuJyk7CiAgICAgICAgaWYgKCBwb3MgPT09IC0xICkgewogICAgICAgICAgICBsZXQgdiA9IG93bmVyW2NoYWluXTsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG93bmVyLCBjaGFpbiwgewogICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIG1hdGNoZXNTdGFja1RyYWNlKG5lZWRsZURldGFpbHMsIGV4dHJhQXJncy5sb2cpICkgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoZ2V0RXhjZXB0aW9uVG9rZW4oKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB2OwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIGlmICggbWF0Y2hlc1N0YWNrVHJhY2UobmVlZGxlRGV0YWlscywgZXh0cmFBcmdzLmxvZykgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihnZXRFeGNlcHRpb25Ub2tlbigpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdiA9IGE7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjb25zdCBwcm9wID0gY2hhaW4uc2xpY2UoMCwgcG9zKTsKICAgICAgICBsZXQgdiA9IG93bmVyW3Byb3BdOwogICAgICAgIGNoYWluID0gY2hhaW4uc2xpY2UocG9zICsgMSk7CiAgICAgICAgaWYgKCB2ICkgewogICAgICAgICAgICBtYWtlUHJveHkodiwgY2hhaW4pOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG93bmVyLCBwcm9wKTsKICAgICAgICBpZiAoIGRlc2MgJiYgZGVzYy5zZXQgIT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG93bmVyLCBwcm9wLCB7CiAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiB2OyB9LAogICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgIHYgPSBhOwogICAgICAgICAgICAgICAgaWYgKCBhIGluc3RhbmNlb2YgT2JqZWN0ICkgewogICAgICAgICAgICAgICAgICAgIG1ha2VQcm94eShhLCBjaGFpbik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH07CiAgICBjb25zdCBvd25lciA9IHdpbmRvdzsKICAgIG1ha2VQcm94eShvd25lciwgY2hhaW4pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"addEventListener-defuser.js","aliases":["aeld.js","prevent-addEventListener.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2hvdWxkRGVidWcoZGV0YWlscykgewogICAgaWYgKCBkZXRhaWxzIGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICByZXR1cm4gc2NyaXB0bGV0R2xvYmFscy5jYW5EZWJ1ZyAmJiBkZXRhaWxzLmRlYnVnOwp9CmZ1bmN0aW9uIHNhZmVTZWxmKCkgewogICAgaWYgKCBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmOwogICAgfQogICAgY29uc3Qgc2VsZiA9IGdsb2JhbFRoaXM7CiAgICBjb25zdCBzYWZlID0gewogICAgICAgICdBcnJheV9mcm9tJzogQXJyYXkuZnJvbSwKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdGdW5jdGlvbl90b1N0cmluZ0ZuJzogc2VsZi5GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nJzogdGhpc0FyZyA9PiBzYWZlLkZ1bmN0aW9uX3RvU3RyaW5nRm4uY2FsbCh0aGlzQXJnKSwKICAgICAgICAnTWF0aF9mbG9vcic6IE1hdGguZmxvb3IsCiAgICAgICAgJ01hdGhfbWF4JzogTWF0aC5tYXgsCiAgICAgICAgJ01hdGhfbWluJzogTWF0aC5taW4sCiAgICAgICAgJ01hdGhfcmFuZG9tJzogTWF0aC5yYW5kb20sCiAgICAgICAgJ09iamVjdCc6IE9iamVjdCwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnR5JzogT2JqZWN0LmRlZmluZVByb3BlcnR5LmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnRpZXMnOiBPYmplY3QuZGVmaW5lUHJvcGVydGllcy5iaW5kKE9iamVjdCksCiAgICAgICAgJ09iamVjdF9mcm9tRW50cmllcyc6IE9iamVjdC5mcm9tRW50cmllcy5iaW5kKE9iamVjdCksCiAgICAgICAgJ09iamVjdF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLmJpbmQoT2JqZWN0KSwKICAgICAgICAnUmVnRXhwJzogc2VsZi5SZWdFeHAsCiAgICAgICAgJ1JlZ0V4cF90ZXN0Jzogc2VsZi5SZWdFeHAucHJvdG90eXBlLnRlc3QsCiAgICAgICAgJ1JlZ0V4cF9leGVjJzogc2VsZi5SZWdFeHAucHJvdG90eXBlLmV4ZWMsCiAgICAgICAgJ1JlcXVlc3RfY2xvbmUnOiBzZWxmLlJlcXVlc3QucHJvdG90eXBlLmNsb25lLAogICAgICAgICdTdHJpbmdfZnJvbUNoYXJDb2RlJzogU3RyaW5nLmZyb21DaGFyQ29kZSwKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnSlNPTic6IHNlbGYuSlNPTiwKICAgICAgICAnSlNPTl9wYXJzZUZuJzogc2VsZi5KU09OLnBhcnNlLAogICAgICAgICdKU09OX3N0cmluZ2lmeUZuJzogc2VsZi5KU09OLnN0cmluZ2lmeSwKICAgICAgICAnSlNPTl9wYXJzZSc6ICguLi5hcmdzKSA9PiBzYWZlLkpTT05fcGFyc2VGbi5jYWxsKHNhZmUuSlNPTiwgLi4uYXJncyksCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5JzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9zdHJpbmdpZnlGbi5jYWxsKHNhZmUuSlNPTiwgLi4uYXJncyksCiAgICAgICAgJ2xvZyc6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCiAgICAgICAgLy8gUHJvcGVydGllcwogICAgICAgIGxvZ0xldmVsOiAwLAogICAgICAgIC8vIE1ldGhvZHMKICAgICAgICBtYWtlTG9nUHJlZml4KC4uLmFyZ3MpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyICYmIGBbJHthcmdzLmpvaW4oJyBcdTIwNUQgJyl9XWAgfHwgJyc7CiAgICAgICAgfSwKICAgICAgICB1Ym9Mb2coLi4uYXJncykgewogICAgICAgICAgICBpZiAoIHRoaXMuc2VuZFRvTG9nZ2VyID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGFyZ3MgPT09IHVuZGVmaW5lZCB8fCBhcmdzWzBdID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbmRUb0xvZ2dlcignaW5mbycsIC4uLmFyZ3MpOwogICAgICAgICAgICAKICAgICAgICB9LAogICAgICAgIHVib0VyciguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdlcnJvcicsIC4uLmFyZ3MpOwogICAgICAgIH0sCiAgICAgICAgZXNjYXBlUmVnZXhDaGFycyhzKSB7CiAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpOwogICAgICAgIH0sCiAgICAgICAgaW5pdFBhdHRlcm4ocGF0dGVybiwgb3B0aW9ucyA9IHt9KSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geyBtYXRjaEFsbDogdHJ1ZSwgZXhwZWN0OiB0cnVlIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZXhwZWN0ID0gKG9wdGlvbnMuY2FuTmVnYXRlICE9PSB0cnVlIHx8IHBhdHRlcm4uc3RhcnRzV2l0aCgnIScpID09PSBmYWxzZSk7CiAgICAgICAgICAgIGlmICggZXhwZWN0ID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnNsaWNlKDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoICE9PSBudWxsICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMl0gfHwgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIG9wdGlvbnMuZmxhZ3MgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCh0aGlzLmVzY2FwZVJlZ2V4Q2hhcnMocGF0dGVybiksCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgcGF0dGVybiwgZXhwZWN0IH07CiAgICAgICAgfSwKICAgICAgICB0ZXN0UGF0dGVybihkZXRhaWxzLCBoYXlzdGFjaykgewogICAgICAgICAgICBpZiAoIGRldGFpbHMubWF0Y2hBbGwgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgICAgIGlmICggZGV0YWlscy5yZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLlJlZ0V4cF90ZXN0LmNhbGwoZGV0YWlscy5yZSwgaGF5c3RhY2spID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gaGF5c3RhY2suaW5jbHVkZXMoZGV0YWlscy5wYXR0ZXJuKSA9PT0gZGV0YWlscy5leHBlY3Q7CiAgICAgICAgfSwKICAgICAgICBwYXR0ZXJuVG9SZWdleChwYXR0ZXJuLCBmbGFncyA9IHVuZGVmaW5lZCwgdmVyYmF0aW0gPSBmYWxzZSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgeyByZXR1cm4gL14vOyB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoID09PSBudWxsICkgewogICAgICAgICAgICAgICAgY29uc3QgcmVTdHIgPSB0aGlzLmVzY2FwZVJlZ2V4Q2hhcnMocGF0dGVybik7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cCh2ZXJiYXRpbSA/IGBeJHtyZVN0cn0kYCA6IHJlU3RyLCBmbGFncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKG1hdGNoWzFdLCBtYXRjaFsyXSB8fCB1bmRlZmluZWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKGV4KSB7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIC9eLzsKICAgICAgICB9LAogICAgICAgIGdldEV4dHJhQXJncyhhcmdzLCBvZmZzZXQgPSAwKSB7CiAgICAgICAgICAgIGNvbnN0IGVudHJpZXMgPSBhcmdzLnNsaWNlKG9mZnNldCkucmVkdWNlKChvdXQsIHYsIGksIGEpID0+IHsKICAgICAgICAgICAgICAgIGlmICggKGkgJiAxKSA9PT0gMCApIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByYXdWYWx1ZSA9IGFbaSsxXTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IC9eXGQrJC8udGVzdChyYXdWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgPyBwYXJzZUludChyYXdWYWx1ZSwgMTApCiAgICAgICAgICAgICAgICAgICAgICAgIDogcmF3VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgb3V0LnB1c2goWyBhW2ldLCB2YWx1ZSBdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgICAgICAgIH0sIFtdKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuT2JqZWN0X2Zyb21FbnRyaWVzKGVudHJpZXMpOwogICAgICAgIH0sCiAgICAgICAgb25JZGxlKGZuLCBvcHRpb25zKSB7CiAgICAgICAgICAgIGlmICggc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayhmbiwgb3B0aW9ucyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZuKTsKICAgICAgICB9LAogICAgICAgIG9mZklkbGUoaWQpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jYW5jZWxJZGxlQ2FsbGJhY2soaWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkKTsKICAgICAgICB9CiAgICB9OwogICAgc2NyaXB0bGV0R2xvYmFscy5zYWZlU2VsZiA9IHNhZmU7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuIHNhZmU7IH0KICAgIC8vIFRoaXMgaXMgZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBsb2dnZXIgaXMgb3BlbmVkCiAgICBzYWZlLmxvZ0xldmVsID0gc2NyaXB0bGV0R2xvYmFscy5sb2dMZXZlbCB8fCAxOwogICAgbGV0IGxhc3RMb2dUeXBlID0gJyc7CiAgICBsZXQgbGFzdExvZ1RleHQgPSAnJzsKICAgIGxldCBsYXN0TG9nVGltZSA9IDA7CiAgICBzYWZlLnRvTG9nVGV4dCA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgaWYgKCBhcmdzLmxlbmd0aCA9PT0gMCApIHsgcmV0dXJuOyB9CiAgICAgICAgY29uc3QgdGV4dCA9IGBbJHtkb2N1bWVudC5sb2NhdGlvbi5ob3N0bmFtZSB8fCBkb2N1bWVudC5sb2NhdGlvbi5ocmVmfV0ke2FyZ3Muam9pbignICcpfWA7CiAgICAgICAgaWYgKCB0ZXh0ID09PSBsYXN0TG9nVGV4dCAmJiB0eXBlID09PSBsYXN0TG9nVHlwZSApIHsKICAgICAgICAgICAgaWYgKCAoRGF0ZS5ub3coKSAtIGxhc3RMb2dUaW1lKSA8IDUwMDAgKSB7IHJldHVybjsgfQogICAgICAgIH0KICAgICAgICBsYXN0TG9nVHlwZSA9IHR5cGU7CiAgICAgICAgbGFzdExvZ1RleHQgPSB0ZXh0OwogICAgICAgIGxhc3RMb2dUaW1lID0gRGF0ZS5ub3coKTsKICAgICAgICByZXR1cm4gdGV4dDsKICAgIH07CiAgICB0cnkgewogICAgICAgIGNvbnN0IGJjID0gbmV3IHNlbGYuQnJvYWRjYXN0Q2hhbm5lbChzY3JpcHRsZXRHbG9iYWxzLmJjU2VjcmV0KTsKICAgICAgICBsZXQgYmNCdWZmZXIgPSBbXTsKICAgICAgICBzYWZlLnNlbmRUb0xvZ2dlciA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzYWZlLnRvTG9nVGV4dCh0eXBlLCAuLi5hcmdzKTsKICAgICAgICAgICAgaWYgKCB0ZXh0ID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYmMucG9zdE1lc3NhZ2UoeyB3aGF0OiAnbWVzc2FnZVRvTG9nZ2VyJywgdHlwZSwgdGV4dCB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBiY0J1ZmZlci5wdXNoKHsgdHlwZSwgdGV4dCB9KTsKICAgICAgICB9OwogICAgICAgIGJjLm9ubWVzc2FnZSA9IGV2ID0+IHsKICAgICAgICAgICAgY29uc3QgbXNnID0gZXYuZGF0YTsKICAgICAgICAgICAgc3dpdGNoICggbXNnICkgewogICAgICAgICAgICBjYXNlICdpYW1yZWFkeSEnOgogICAgICAgICAgICAgICAgaWYgKCBiY0J1ZmZlciA9PT0gdW5kZWZpbmVkICkgeyBicmVhazsgfQogICAgICAgICAgICAgICAgYmNCdWZmZXIuZm9yRWFjaCgoeyB0eXBlLCB0ZXh0IH0pID0+CiAgICAgICAgICAgICAgICAgICAgYmMucG9zdE1lc3NhZ2UoeyB3aGF0OiAnbWVzc2FnZVRvTG9nZ2VyJywgdHlwZSwgdGV4dCB9KQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGJjQnVmZmVyID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3NldFNjcmlwdGxldExvZ0xldmVsVG9PbmUnOgogICAgICAgICAgICAgICAgc2FmZS5sb2dMZXZlbCA9IDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb1R3byc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBiYy5wb3N0TWVzc2FnZSgnYXJleW91cmVhZHk/Jyk7CiAgICB9IGNhdGNoKF8pIHsKICAgICAgICBzYWZlLnNlbmRUb0xvZ2dlciA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzYWZlLnRvTG9nVGV4dCh0eXBlLCAuLi5hcmdzKTsKICAgICAgICAgICAgaWYgKCB0ZXh0ID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBzYWZlLmxvZyhgdUJPICR7dGV4dH1gKTsKICAgICAgICB9OwogICAgfQogICAgcmV0dXJuIHNhZmU7Cn0KZnVuY3Rpb24gcnVuQXQoZm4sIHdoZW4pIHsKICAgIGNvbnN0IGludEZyb21SZWFkeVN0YXRlID0gc3RhdGUgPT4gewogICAgICAgIGNvbnN0IHRhcmdldHMgPSB7CiAgICAgICAgICAgICdsb2FkaW5nJzogMSwgJ2FzYXAnOiAxLAogICAgICAgICAgICAnaW50ZXJhY3RpdmUnOiAyLCAnZW5kJzogMiwgJzInOiAyLAogICAgICAgICAgICAnY29tcGxldGUnOiAzLCAnaWRsZSc6IDMsICczJzogMywKICAgICAgICB9OwogICAgICAgIGNvbnN0IHRva2VucyA9IEFycmF5LmlzQXJyYXkoc3RhdGUpID8gc3RhdGUgOiBbIHN0YXRlIF07CiAgICAgICAgZm9yICggY29uc3QgdG9rZW4gb2YgdG9rZW5zICkgewogICAgICAgICAgICBjb25zdCBwcm9wID0gYCR7dG9rZW59YDsKICAgICAgICAgICAgaWYgKCB0YXJnZXRzLmhhc093blByb3BlcnR5KHByb3ApID09PSBmYWxzZSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgcmV0dXJuIHRhcmdldHNbcHJvcF07CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwogICAgfTsKICAgIGNvbnN0IHJ1bkF0ID0gaW50RnJvbVJlYWR5U3RhdGUod2hlbik7CiAgICBpZiAoIGludEZyb21SZWFkeVN0YXRlKGRvY3VtZW50LnJlYWR5U3RhdGUpID49IHJ1bkF0ICkgewogICAgICAgIGZuKCk7IHJldHVybjsKICAgIH0KICAgIGNvbnN0IG9uU3RhdGVDaGFuZ2UgPSAoICkgPT4gewogICAgICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPCBydW5BdCApIHsgcmV0dXJuOyB9CiAgICAgICAgZm4oKTsKICAgICAgICBzYWZlLnJlbW92ZUV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwogICAgfTsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgYXJncyA9IFsgJ3JlYWR5c3RhdGVjaGFuZ2UnLCBvblN0YXRlQ2hhbmdlLCB7IGNhcHR1cmU6IHRydWUgfSBdOwogICAgc2FmZS5hZGRFdmVudExpc3RlbmVyLmFwcGx5KGRvY3VtZW50LCBhcmdzKTsKfQpmdW5jdGlvbiBwcm94eUFwcGx5Rm4oCiAgICB0YXJnZXQgPSAnJywKICAgIGhhbmRsZXIgPSAnJwopIHsKICAgIGxldCBjb250ZXh0ID0gZ2xvYmFsVGhpczsKICAgIGxldCBwcm9wID0gdGFyZ2V0OwogICAgZm9yICg7OykgewogICAgICAgIGNvbnN0IHBvcyA9IHByb3AuaW5kZXhPZignLicpOwogICAgICAgIGlmICggcG9zID09PSAtMSApIHsgYnJlYWs7IH0KICAgICAgICBjb250ZXh0ID0gY29udGV4dFtwcm9wLnNsaWNlKDAsIHBvcyldOwogICAgICAgIGlmICggY29udGV4dCBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIHByb3AgPSBwcm9wLnNsaWNlKHBvcysxKTsKICAgIH0KICAgIGNvbnN0IGZuID0gY29udGV4dFtwcm9wXTsKICAgIGlmICggdHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nICkgeyByZXR1cm47IH0KICAgIGlmICggcHJveHlBcHBseUZuLkN0b3JDb250ZXh0ID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dCA9IGNsYXNzIHsKICAgICAgICAgICAgY29uc3RydWN0b3IoLi4uYXJncykgewogICAgICAgICAgICAgICAgdGhpcy5pbml0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGluaXQoY2FsbEZuLCBjYWxsQXJncykgewogICAgICAgICAgICAgICAgdGhpcy5jYWxsRm4gPSBjYWxsRm47CiAgICAgICAgICAgICAgICB0aGlzLmNhbGxBcmdzID0gY2FsbEFyZ3M7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgICAgfQogICAgICAgICAgICByZWZsZWN0KCkgewogICAgICAgICAgICAgICAgY29uc3QgciA9IFJlZmxlY3QuY29uc3RydWN0KHRoaXMuY2FsbEZuLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5jdG9yQ29udGV4dHMucHVzaCh0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN0YXRpYyBmYWN0b3J5KC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwcm94eUFwcGx5Rm4uY3RvckNvbnRleHRzLmxlbmd0aCAhPT0gMAogICAgICAgICAgICAgICAgICAgID8gcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkN0b3JDb250ZXh0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5BcHBseUNvbnRleHQgPSBjbGFzcyB7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuaW5pdCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbml0KGNhbGxGbiwgdGhpc0FyZywgY2FsbEFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gY2FsbEZuOwogICAgICAgICAgICAgICAgdGhpcy50aGlzQXJnID0gdGhpc0FyZzsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEFyZ3MgPSBjYWxsQXJnczsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlZmxlY3QoKSB7CiAgICAgICAgICAgICAgICBjb25zdCByID0gUmVmbGVjdC5hcHBseSh0aGlzLmNhbGxGbiwgdGhpcy50aGlzQXJnLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy50aGlzQXJnID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5hcHBseUNvbnRleHRzLnB1c2godGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGF0aWMgZmFjdG9yeSguLi5hcmdzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcHJveHlBcHBseUZuLmFwcGx5Q29udGV4dHMubGVuZ3RoICE9PSAwCiAgICAgICAgICAgICAgICAgICAgPyBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkFwcGx5Q29udGV4dCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBmblN0ciA9IGZuLnRvU3RyaW5nKCk7CiAgICBjb25zdCB0b1N0cmluZyA9IChmdW5jdGlvbiB0b1N0cmluZygpIHsgcmV0dXJuIGZuU3RyOyB9KS5iaW5kKG51bGwpOwogICAgY29uc3QgcHJveHlEZXRhaWxzID0gewogICAgICAgIGFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICByZXR1cm4gaGFuZGxlcihwcm94eUFwcGx5Rm4uQXBwbHlDb250ZXh0LmZhY3RvcnkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSk7CiAgICAgICAgfSwKICAgICAgICBnZXQodGFyZ2V0LCBwcm9wKSB7CiAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ3RvU3RyaW5nJyApIHsgcmV0dXJuIHRvU3RyaW5nOyB9CiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3ApOwogICAgICAgIH0sCiAgICB9OwogICAgaWYgKCBmbi5wcm90b3R5cGU/LmNvbnN0cnVjdG9yID09PSBmbiApIHsKICAgICAgICBwcm94eURldGFpbHMuY29uc3RydWN0ID0gZnVuY3Rpb24odGFyZ2V0LCBhcmdzKSB7CiAgICAgICAgICAgIHJldHVybiBoYW5kbGVyKHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dC5mYWN0b3J5KHRhcmdldCwgYXJncykpOwogICAgICAgIH07CiAgICB9CiAgICBjb250ZXh0W3Byb3BdID0gbmV3IFByb3h5KGZuLCBwcm94eURldGFpbHMpOwp9CgogIChmdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyRGVmdXNlcigKICAgIHR5cGUgPSAnJywKICAgIHBhdHRlcm4gPSAnJwopIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgZXh0cmFBcmdzID0gc2FmZS5nZXRFeHRyYUFyZ3MoQXJyYXkuZnJvbShhcmd1bWVudHMpLCAyKTsKICAgIGNvbnN0IGxvZ1ByZWZpeCA9IHNhZmUubWFrZUxvZ1ByZWZpeCgncHJldmVudC1hZGRFdmVudExpc3RlbmVyJywgdHlwZSwgcGF0dGVybik7CiAgICBjb25zdCByZVR5cGUgPSBzYWZlLnBhdHRlcm5Ub1JlZ2V4KHR5cGUsIHVuZGVmaW5lZCwgdHJ1ZSk7CiAgICBjb25zdCByZVBhdHRlcm4gPSBzYWZlLnBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4pOwogICAgY29uc3QgZGVidWcgPSBzaG91bGREZWJ1ZyhleHRyYUFyZ3MpOwogICAgY29uc3QgdGFyZ2V0U2VsZWN0b3IgPSBleHRyYUFyZ3MuZWxlbWVudHMgfHwgdW5kZWZpbmVkOwogICAgY29uc3QgZWxlbWVudE1hdGNoZXMgPSBlbGVtID0+IHsKICAgICAgICBpZiAoIHRhcmdldFNlbGVjdG9yID09PSAnd2luZG93JyApIHsgcmV0dXJuIGVsZW0gPT09IHdpbmRvdzsgfQogICAgICAgIGlmICggdGFyZ2V0U2VsZWN0b3IgPT09ICdkb2N1bWVudCcgKSB7IHJldHVybiBlbGVtID09PSBkb2N1bWVudDsgfQogICAgICAgIGlmICggZWxlbSAmJiBlbGVtLm1hdGNoZXMgJiYgZWxlbS5tYXRjaGVzKHRhcmdldFNlbGVjdG9yKSApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICBjb25zdCBlbGVtcyA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0YXJnZXRTZWxlY3RvcikpOwogICAgICAgIHJldHVybiBlbGVtcy5pbmNsdWRlcyhlbGVtKTsKICAgIH07CiAgICBjb25zdCBlbGVtZW50RGV0YWlscyA9IGVsZW0gPT4gewogICAgICAgIGlmICggZWxlbSBpbnN0YW5jZW9mIFdpbmRvdyApIHsgcmV0dXJuICd3aW5kb3cnOyB9CiAgICAgICAgaWYgKCBlbGVtIGluc3RhbmNlb2YgRG9jdW1lbnQgKSB7IHJldHVybiAnZG9jdW1lbnQnOyB9CiAgICAgICAgaWYgKCBlbGVtIGluc3RhbmNlb2YgRWxlbWVudCA9PT0gZmFsc2UgKSB7IHJldHVybiAnPyc7IH0KICAgICAgICBjb25zdCBwYXJ0cyA9IFtdOwogICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91QmxvY2tPcmlnaW4vdUFzc2V0cy9kaXNjdXNzaW9ucy8xNzkwNyNkaXNjdXNzaW9uY29tbWVudC05ODcxMDc5CiAgICAgICAgY29uc3QgaWQgPSBTdHJpbmcoZWxlbS5pZCk7CiAgICAgICAgaWYgKCBpZCAhPT0gJycgKSB7IHBhcnRzLnB1c2goYCMke0NTUy5lc2NhcGUoaWQpfWApOyB9CiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgZWxlbS5jbGFzc0xpc3QubGVuZ3RoOyBpKysgKSB7CiAgICAgICAgICAgIHBhcnRzLnB1c2goYC4ke0NTUy5lc2NhcGUoZWxlbS5jbGFzc0xpc3QuaXRlbShpKSl9YCk7CiAgICAgICAgfQogICAgICAgIGZvciAoIGxldCBpID0gMDsgaSA8IGVsZW0uYXR0cmlidXRlcy5sZW5ndGg7IGkrKyApIHsKICAgICAgICAgICAgY29uc3QgYXR0ciA9IGVsZW0uYXR0cmlidXRlcy5pdGVtKGkpOwogICAgICAgICAgICBpZiAoIGF0dHIubmFtZSA9PT0gJ2lkJyApIHsgY29udGludWU7IH0KICAgICAgICAgICAgaWYgKCBhdHRyLm5hbWUgPT09ICdjbGFzcycgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgIHBhcnRzLnB1c2goYFske0NTUy5lc2NhcGUoYXR0ci5uYW1lKX09IiR7YXR0ci52YWx1ZX0iXWApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcGFydHMuam9pbignJyk7CiAgICB9OwogICAgY29uc3Qgc2hvdWxkUHJldmVudCA9ICh0aGlzQXJnLCB0eXBlLCBoYW5kbGVyKSA9PiB7CiAgICAgICAgY29uc3QgbWF0Y2hlc1R5cGUgPSBzYWZlLlJlZ0V4cF90ZXN0LmNhbGwocmVUeXBlLCB0eXBlKTsKICAgICAgICBjb25zdCBtYXRjaGVzSGFuZGxlciA9IHNhZmUuUmVnRXhwX3Rlc3QuY2FsbChyZVBhdHRlcm4sIGhhbmRsZXIpOwogICAgICAgIGNvbnN0IG1hdGNoZXNFaXRoZXIgPSBtYXRjaGVzVHlwZSB8fCBtYXRjaGVzSGFuZGxlcjsKICAgICAgICBjb25zdCBtYXRjaGVzQm90aCA9IG1hdGNoZXNUeXBlICYmIG1hdGNoZXNIYW5kbGVyOwogICAgICAgIGlmICggZGVidWcgPT09IDEgJiYgbWF0Y2hlc0JvdGggfHwgZGVidWcgPT09IDIgJiYgbWF0Y2hlc0VpdGhlciApIHsKICAgICAgICAgICAgZGVidWdnZXI7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZGVidWdnZXIKICAgICAgICB9CiAgICAgICAgaWYgKCBtYXRjaGVzQm90aCAmJiB0YXJnZXRTZWxlY3RvciAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICBpZiAoIGVsZW1lbnRNYXRjaGVzKHRoaXNBcmcpID09PSBmYWxzZSApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBtYXRjaGVzQm90aDsKICAgIH07CiAgICBydW5BdCgoICkgPT4gewogICAgICAgIHByb3h5QXBwbHlGbignRXZlbnRUYXJnZXQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXInLCBmdW5jdGlvbihjb250ZXh0KSB7CiAgICAgICAgICAgIGNvbnN0IHsgY2FsbEFyZ3MsIHRoaXNBcmcgfSA9IGNvbnRleHQ7CiAgICAgICAgICAgIGxldCB0LCBoOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgdCA9IFN0cmluZyhjYWxsQXJnc1swXSk7CiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBjYWxsQXJnc1sxXSA9PT0gJ2Z1bmN0aW9uJyApIHsKICAgICAgICAgICAgICAgICAgICBoID0gU3RyaW5nKHNhZmUuRnVuY3Rpb25fdG9TdHJpbmcoY2FsbEFyZ3NbMV0pKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR5cGVvZiBjYWxsQXJnc1sxXSA9PT0gJ29iamVjdCcgJiYgY2FsbEFyZ3NbMV0gIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgY2FsbEFyZ3NbMV0uaGFuZGxlRXZlbnQgPT09ICdmdW5jdGlvbicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBTdHJpbmcoc2FmZS5GdW5jdGlvbl90b1N0cmluZyhjYWxsQXJnc1sxXS5oYW5kbGVFdmVudCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaCA9IFN0cmluZyhjYWxsQXJnc1sxXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIHR5cGUgPT09ICcnICYmIHBhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCBgQ2FsbGVkOiAke3R9XG4ke2h9XG4ke2VsZW1lbnREZXRhaWxzKHRoaXNBcmcpfWApOwogICAgICAgICAgICB9IGVsc2UgaWYgKCBzaG91bGRQcmV2ZW50KHRoaXNBcmcsIHQsIGgpICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgYFByZXZlbnRlZDogJHt0fVxuJHtofVxuJHtlbGVtZW50RGV0YWlscyh0aGlzQXJnKX1gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gY29udGV4dC5yZWZsZWN0KCk7CiAgICAgICAgfSk7CiAgICB9LCBleHRyYUFyZ3MucnVuQXQpOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"json-prune.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0UmFuZG9tVG9rZW4oKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIHJldHVybiBzYWZlLlN0cmluZ19mcm9tQ2hhckNvZGUoRGF0ZS5ub3coKSAlIDI2ICsgOTcpICsKICAgICAgICBzYWZlLk1hdGhfZmxvb3Ioc2FmZS5NYXRoX3JhbmRvbSgpICogOTgyNDUxNjUzICsgOTgyNDUxNjUzKS50b1N0cmluZygzNik7Cn0KZnVuY3Rpb24gZ2V0RXhjZXB0aW9uVG9rZW4oKSB7CiAgICBjb25zdCB0b2tlbiA9IGdldFJhbmRvbVRva2VuKCk7CiAgICBjb25zdCBvZSA9IHNlbGYub25lcnJvcjsKICAgIHNlbGYub25lcnJvciA9IGZ1bmN0aW9uKG1zZywgLi4uYXJncykgewogICAgICAgIGlmICggdHlwZW9mIG1zZyA9PT0gJ3N0cmluZycgJiYgbXNnLmluY2x1ZGVzKHRva2VuKSApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICBpZiAoIG9lIGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgIHJldHVybiBvZS5jYWxsKHRoaXMsIG1zZywgLi4uYXJncyk7CiAgICAgICAgfQogICAgfS5iaW5kKCk7CiAgICByZXR1cm4gdG9rZW47Cn0KZnVuY3Rpb24gb2JqZWN0RmluZE93bmVyRm4oCiAgICByb290LAogICAgcGF0aCwKICAgIHBydW5lID0gZmFsc2UKKSB7CiAgICBsZXQgb3duZXIgPSByb290OwogICAgbGV0IGNoYWluID0gcGF0aDsKICAgIGZvciAoOzspIHsKICAgICAgICBpZiAoIHR5cGVvZiBvd25lciAhPT0gJ29iamVjdCcgfHwgb3duZXIgPT09IG51bGwgICkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICBjb25zdCBwb3MgPSBjaGFpbi5pbmRleE9mKCcuJyk7CiAgICAgICAgaWYgKCBwb3MgPT09IC0xICkgewogICAgICAgICAgICBpZiAoIHBydW5lID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiBvd25lci5oYXNPd25Qcm9wZXJ0eShjaGFpbik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IG1vZGlmaWVkID0gZmFsc2U7CiAgICAgICAgICAgIGlmICggY2hhaW4gPT09ICcqJyApIHsKICAgICAgICAgICAgICAgIGZvciAoIGNvbnN0IGtleSBpbiBvd25lciApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIG93bmVyLmhhc093blByb3BlcnR5KGtleSkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvd25lcltrZXldOwogICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmICggb3duZXIuaGFzT3duUHJvcGVydHkoY2hhaW4pICkgewogICAgICAgICAgICAgICAgZGVsZXRlIG93bmVyW2NoYWluXTsKICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbW9kaWZpZWQ7CiAgICAgICAgfQogICAgICAgIGNvbnN0IHByb3AgPSBjaGFpbi5zbGljZSgwLCBwb3MpOwogICAgICAgIGNvbnN0IG5leHQgPSBjaGFpbi5zbGljZShwb3MgKyAxKTsKICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTsKICAgICAgICBpZiAoIHByb3AgPT09ICdbLV0nICYmIEFycmF5LmlzQXJyYXkob3duZXIpICkgewogICAgICAgICAgICBsZXQgaSA9IG93bmVyLmxlbmd0aDsKICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CiAgICAgICAgICAgICAgICBpZiAoIG9iamVjdEZpbmRPd25lckZuKG93bmVyW2ldLCBuZXh0KSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBvd25lci5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgICAgIH0KICAgICAgICBpZiAoIHByb3AgPT09ICd7LX0nICYmIG93bmVyIGluc3RhbmNlb2YgT2JqZWN0ICkgewogICAgICAgICAgICBmb3IgKCBjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3duZXIpICkgewogICAgICAgICAgICAgICAgaWYgKCBvYmplY3RGaW5kT3duZXJGbihvd25lcltrZXldLCBuZXh0KSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBkZWxldGUgb3duZXJba2V5XTsKICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZm91bmQ7CiAgICAgICAgfQogICAgICAgIGlmICgKICAgICAgICAgICAgcHJvcCA9PT0gJ1tdJyAmJiBBcnJheS5pc0FycmF5KG93bmVyKSB8fAogICAgICAgICAgICBwcm9wID09PSAne30nICYmIG93bmVyIGluc3RhbmNlb2YgT2JqZWN0IHx8CiAgICAgICAgICAgIHByb3AgPT09ICcqJyAmJiBvd25lciBpbnN0YW5jZW9mIE9iamVjdAogICAgICAgICkgewogICAgICAgICAgICBmb3IgKCBjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3duZXIpICkgewogICAgICAgICAgICAgICAgaWYgKG9iamVjdEZpbmRPd25lckZuKG93bmVyW2tleV0sIG5leHQsIHBydW5lKSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgICAgIH0KICAgICAgICBpZiAoIG93bmVyLmhhc093blByb3BlcnR5KHByb3ApID09PSBmYWxzZSApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgb3duZXIgPSBvd25lcltwcm9wXTsKICAgICAgICBjaGFpbiA9IGNoYWluLnNsaWNlKHBvcyArIDEpOwogICAgfQp9CmZ1bmN0aW9uIG1hdGNoZXNTdGFja1RyYWNlKAogICAgbmVlZGxlRGV0YWlscywKICAgIGxvZ0xldmVsID0gJycKKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGV4Y2VwdGlvblRva2VuID0gZ2V0RXhjZXB0aW9uVG9rZW4oKTsKICAgIGNvbnN0IGVycm9yID0gbmV3IHNhZmUuRXJyb3IoZXhjZXB0aW9uVG9rZW4pOwogICAgY29uc3QgZG9jVVJMID0gbmV3IFVSTChzZWxmLmxvY2F0aW9uLmhyZWYpOwogICAgZG9jVVJMLmhhc2ggPSAnJzsKICAgIC8vIE5vcm1hbGl6ZSBzdGFjayB0cmFjZQogICAgY29uc3QgcmVMaW5lID0gLyguKj9AKT8oXFMrKSg6XGQrKTpcZCtcKT8kLzsKICAgIGNvbnN0IGxpbmVzID0gW107CiAgICBmb3IgKCBsZXQgbGluZSBvZiBlcnJvci5zdGFjay5zcGxpdCgvW1xuXHJdKy8pICkgewogICAgICAgIGlmICggbGluZS5pbmNsdWRlcyhleGNlcHRpb25Ub2tlbikgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpOwogICAgICAgIGNvbnN0IG1hdGNoID0gc2FmZS5SZWdFeHBfZXhlYy5jYWxsKHJlTGluZSwgbGluZSk7CiAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsgY29udGludWU7IH0KICAgICAgICBsZXQgdXJsID0gbWF0Y2hbMl07CiAgICAgICAgaWYgKCB1cmwuc3RhcnRzV2l0aCgnKCcpICkgeyB1cmwgPSB1cmwuc2xpY2UoMSk7IH0KICAgICAgICBpZiAoIHVybCA9PT0gZG9jVVJMLmhyZWYgKSB7CiAgICAgICAgICAgIHVybCA9ICdpbmxpbmVTY3JpcHQnOwogICAgICAgIH0gZWxzZSBpZiAoIHVybC5zdGFydHNXaXRoKCc8YW5vbnltb3VzPicpICkgewogICAgICAgICAgICB1cmwgPSAnaW5qZWN0ZWRTY3JpcHQnOwogICAgICAgIH0KICAgICAgICBsZXQgZm4gPSBtYXRjaFsxXSAhPT0gdW5kZWZpbmVkCiAgICAgICAgICAgID8gbWF0Y2hbMV0uc2xpY2UoMCwgLTEpCiAgICAgICAgICAgIDogbGluZS5zbGljZSgwLCBtYXRjaC5pbmRleCkudHJpbSgpOwogICAgICAgIGlmICggZm4uc3RhcnRzV2l0aCgnYXQnKSApIHsgZm4gPSBmbi5zbGljZSgyKS50cmltKCk7IH0KICAgICAgICBsZXQgcm93Y29sID0gbWF0Y2hbM107CiAgICAgICAgbGluZXMucHVzaCgnICcgKyBgJHtmbn0gJHt1cmx9JHtyb3djb2x9OjFgLnRyaW0oKSk7CiAgICB9CiAgICBsaW5lc1swXSA9IGBzdGFja0RlcHRoOiR7bGluZXMubGVuZ3RoLTF9YDsKICAgIGNvbnN0IHN0YWNrID0gbGluZXMuam9pbignXHQnKTsKICAgIGNvbnN0IHIgPSBuZWVkbGVEZXRhaWxzLm1hdGNoQWxsICE9PSB0cnVlICYmCiAgICAgICAgc2FmZS50ZXN0UGF0dGVybihuZWVkbGVEZXRhaWxzLCBzdGFjayk7CiAgICBpZiAoCiAgICAgICAgbG9nTGV2ZWwgPT09ICdhbGwnIHx8CiAgICAgICAgbG9nTGV2ZWwgPT09ICdtYXRjaCcgJiYgciB8fAogICAgICAgIGxvZ0xldmVsID09PSAnbm9tYXRjaCcgJiYgIXIKICAgICkgewogICAgICAgIHNhZmUudWJvTG9nKHN0YWNrLnJlcGxhY2UoL1x0L2csICdcbicpKTsKICAgIH0KICAgIHJldHVybiByOwp9CmZ1bmN0aW9uIHNhZmVTZWxmKCkgewogICAgaWYgKCBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmOwogICAgfQogICAgY29uc3Qgc2VsZiA9IGdsb2JhbFRoaXM7CiAgICBjb25zdCBzYWZlID0gewogICAgICAgICdBcnJheV9mcm9tJzogQXJyYXkuZnJvbSwKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdGdW5jdGlvbl90b1N0cmluZ0ZuJzogc2VsZi5GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nJzogdGhpc0FyZyA9PiBzYWZlLkZ1bmN0aW9uX3RvU3RyaW5nRm4uY2FsbCh0aGlzQXJnKSwKICAgICAgICAnTWF0aF9mbG9vcic6IE1hdGguZmxvb3IsCiAgICAgICAgJ01hdGhfbWF4JzogTWF0aC5tYXgsCiAgICAgICAgJ01hdGhfbWluJzogTWF0aC5taW4sCiAgICAgICAgJ01hdGhfcmFuZG9tJzogTWF0aC5yYW5kb20sCiAgICAgICAgJ09iamVjdCc6IE9iamVjdCwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnR5JzogT2JqZWN0LmRlZmluZVByb3BlcnR5LmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnRpZXMnOiBPYmplY3QuZGVmaW5lUHJvcGVydGllcy5iaW5kKE9iamVjdCksCiAgICAgICAgJ09iamVjdF9mcm9tRW50cmllcyc6IE9iamVjdC5mcm9tRW50cmllcy5iaW5kKE9iamVjdCksCiAgICAgICAgJ09iamVjdF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLmJpbmQoT2JqZWN0KSwKICAgICAgICAnUmVnRXhwJzogc2VsZi5SZWdFeHAsCiAgICAgICAgJ1JlZ0V4cF90ZXN0Jzogc2VsZi5SZWdFeHAucHJvdG90eXBlLnRlc3QsCiAgICAgICAgJ1JlZ0V4cF9leGVjJzogc2VsZi5SZWdFeHAucHJvdG90eXBlLmV4ZWMsCiAgICAgICAgJ1JlcXVlc3RfY2xvbmUnOiBzZWxmLlJlcXVlc3QucHJvdG90eXBlLmNsb25lLAogICAgICAgICdTdHJpbmdfZnJvbUNoYXJDb2RlJzogU3RyaW5nLmZyb21DaGFyQ29kZSwKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnSlNPTic6IHNlbGYuSlNPTiwKICAgICAgICAnSlNPTl9wYXJzZUZuJzogc2VsZi5KU09OLnBhcnNlLAogICAgICAgICdKU09OX3N0cmluZ2lmeUZuJzogc2VsZi5KU09OLnN0cmluZ2lmeSwKICAgICAgICAnSlNPTl9wYXJzZSc6ICguLi5hcmdzKSA9PiBzYWZlLkpTT05fcGFyc2VGbi5jYWxsKHNhZmUuSlNPTiwgLi4uYXJncyksCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5JzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9zdHJpbmdpZnlGbi5jYWxsKHNhZmUuSlNPTiwgLi4uYXJncyksCiAgICAgICAgJ2xvZyc6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCiAgICAgICAgLy8gUHJvcGVydGllcwogICAgICAgIGxvZ0xldmVsOiAwLAogICAgICAgIC8vIE1ldGhvZHMKICAgICAgICBtYWtlTG9nUHJlZml4KC4uLmFyZ3MpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyICYmIGBbJHthcmdzLmpvaW4oJyBcdTIwNUQgJyl9XWAgfHwgJyc7CiAgICAgICAgfSwKICAgICAgICB1Ym9Mb2coLi4uYXJncykgewogICAgICAgICAgICBpZiAoIHRoaXMuc2VuZFRvTG9nZ2VyID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGFyZ3MgPT09IHVuZGVmaW5lZCB8fCBhcmdzWzBdID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbmRUb0xvZ2dlcignaW5mbycsIC4uLmFyZ3MpOwogICAgICAgICAgICAKICAgICAgICB9LAogICAgICAgIHVib0VyciguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdlcnJvcicsIC4uLmFyZ3MpOwogICAgICAgIH0sCiAgICAgICAgZXNjYXBlUmVnZXhDaGFycyhzKSB7CiAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpOwogICAgICAgIH0sCiAgICAgICAgaW5pdFBhdHRlcm4ocGF0dGVybiwgb3B0aW9ucyA9IHt9KSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geyBtYXRjaEFsbDogdHJ1ZSwgZXhwZWN0OiB0cnVlIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZXhwZWN0ID0gKG9wdGlvbnMuY2FuTmVnYXRlICE9PSB0cnVlIHx8IHBhdHRlcm4uc3RhcnRzV2l0aCgnIScpID09PSBmYWxzZSk7CiAgICAgICAgICAgIGlmICggZXhwZWN0ID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnNsaWNlKDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoICE9PSBudWxsICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMl0gfHwgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIG9wdGlvbnMuZmxhZ3MgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCh0aGlzLmVzY2FwZVJlZ2V4Q2hhcnMocGF0dGVybiksCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgcGF0dGVybiwgZXhwZWN0IH07CiAgICAgICAgfSwKICAgICAgICB0ZXN0UGF0dGVybihkZXRhaWxzLCBoYXlzdGFjaykgewogICAgICAgICAgICBpZiAoIGRldGFpbHMubWF0Y2hBbGwgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgICAgIGlmICggZGV0YWlscy5yZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLlJlZ0V4cF90ZXN0LmNhbGwoZGV0YWlscy5yZSwgaGF5c3RhY2spID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gaGF5c3RhY2suaW5jbHVkZXMoZGV0YWlscy5wYXR0ZXJuKSA9PT0gZGV0YWlscy5leHBlY3Q7CiAgICAgICAgfSwKICAgICAgICBwYXR0ZXJuVG9SZWdleChwYXR0ZXJuLCBmbGFncyA9IHVuZGVmaW5lZCwgdmVyYmF0aW0gPSBmYWxzZSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgeyByZXR1cm4gL14vOyB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoID09PSBudWxsICkgewogICAgICAgICAgICAgICAgY29uc3QgcmVTdHIgPSB0aGlzLmVzY2FwZVJlZ2V4Q2hhcnMocGF0dGVybik7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cCh2ZXJiYXRpbSA/IGBeJHtyZVN0cn0kYCA6IHJlU3RyLCBmbGFncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKG1hdGNoWzFdLCBtYXRjaFsyXSB8fCB1bmRlZmluZWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKGV4KSB7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIC9eLzsKICAgICAgICB9LAogICAgICAgIGdldEV4dHJhQXJncyhhcmdzLCBvZmZzZXQgPSAwKSB7CiAgICAgICAgICAgIGNvbnN0IGVudHJpZXMgPSBhcmdzLnNsaWNlKG9mZnNldCkucmVkdWNlKChvdXQsIHYsIGksIGEpID0+IHsKICAgICAgICAgICAgICAgIGlmICggKGkgJiAxKSA9PT0gMCApIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByYXdWYWx1ZSA9IGFbaSsxXTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IC9eXGQrJC8udGVzdChyYXdWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgPyBwYXJzZUludChyYXdWYWx1ZSwgMTApCiAgICAgICAgICAgICAgICAgICAgICAgIDogcmF3VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgb3V0LnB1c2goWyBhW2ldLCB2YWx1ZSBdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgICAgICAgIH0sIFtdKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuT2JqZWN0X2Zyb21FbnRyaWVzKGVudHJpZXMpOwogICAgICAgIH0sCiAgICAgICAgb25JZGxlKGZuLCBvcHRpb25zKSB7CiAgICAgICAgICAgIGlmICggc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayhmbiwgb3B0aW9ucyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZuKTsKICAgICAgICB9LAogICAgICAgIG9mZklkbGUoaWQpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jYW5jZWxJZGxlQ2FsbGJhY2soaWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkKTsKICAgICAgICB9CiAgICB9OwogICAgc2NyaXB0bGV0R2xvYmFscy5zYWZlU2VsZiA9IHNhZmU7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuIHNhZmU7IH0KICAgIC8vIFRoaXMgaXMgZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBsb2dnZXIgaXMgb3BlbmVkCiAgICBzYWZlLmxvZ0xldmVsID0gc2NyaXB0bGV0R2xvYmFscy5sb2dMZXZlbCB8fCAxOwogICAgbGV0IGxhc3RMb2dUeXBlID0gJyc7CiAgICBsZXQgbGFzdExvZ1RleHQgPSAnJzsKICAgIGxldCBsYXN0TG9nVGltZSA9IDA7CiAgICBzYWZlLnRvTG9nVGV4dCA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgaWYgKCBhcmdzLmxlbmd0aCA9PT0gMCApIHsgcmV0dXJuOyB9CiAgICAgICAgY29uc3QgdGV4dCA9IGBbJHtkb2N1bWVudC5sb2NhdGlvbi5ob3N0bmFtZSB8fCBkb2N1bWVudC5sb2NhdGlvbi5ocmVmfV0ke2FyZ3Muam9pbignICcpfWA7CiAgICAgICAgaWYgKCB0ZXh0ID09PSBsYXN0TG9nVGV4dCAmJiB0eXBlID09PSBsYXN0TG9nVHlwZSApIHsKICAgICAgICAgICAgaWYgKCAoRGF0ZS5ub3coKSAtIGxhc3RMb2dUaW1lKSA8IDUwMDAgKSB7IHJldHVybjsgfQogICAgICAgIH0KICAgICAgICBsYXN0TG9nVHlwZSA9IHR5cGU7CiAgICAgICAgbGFzdExvZ1RleHQgPSB0ZXh0OwogICAgICAgIGxhc3RMb2dUaW1lID0gRGF0ZS5ub3coKTsKICAgICAgICByZXR1cm4gdGV4dDsKICAgIH07CiAgICB0cnkgewogICAgICAgIGNvbnN0IGJjID0gbmV3IHNlbGYuQnJvYWRjYXN0Q2hhbm5lbChzY3JpcHRsZXRHbG9iYWxzLmJjU2VjcmV0KTsKICAgICAgICBsZXQgYmNCdWZmZXIgPSBbXTsKICAgICAgICBzYWZlLnNlbmRUb0xvZ2dlciA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzYWZlLnRvTG9nVGV4dCh0eXBlLCAuLi5hcmdzKTsKICAgICAgICAgICAgaWYgKCB0ZXh0ID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYmMucG9zdE1lc3NhZ2UoeyB3aGF0OiAnbWVzc2FnZVRvTG9nZ2VyJywgdHlwZSwgdGV4dCB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBiY0J1ZmZlci5wdXNoKHsgdHlwZSwgdGV4dCB9KTsKICAgICAgICB9OwogICAgICAgIGJjLm9ubWVzc2FnZSA9IGV2ID0+IHsKICAgICAgICAgICAgY29uc3QgbXNnID0gZXYuZGF0YTsKICAgICAgICAgICAgc3dpdGNoICggbXNnICkgewogICAgICAgICAgICBjYXNlICdpYW1yZWFkeSEnOgogICAgICAgICAgICAgICAgaWYgKCBiY0J1ZmZlciA9PT0gdW5kZWZpbmVkICkgeyBicmVhazsgfQogICAgICAgICAgICAgICAgYmNCdWZmZXIuZm9yRWFjaCgoeyB0eXBlLCB0ZXh0IH0pID0+CiAgICAgICAgICAgICAgICAgICAgYmMucG9zdE1lc3NhZ2UoeyB3aGF0OiAnbWVzc2FnZVRvTG9nZ2VyJywgdHlwZSwgdGV4dCB9KQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGJjQnVmZmVyID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3NldFNjcmlwdGxldExvZ0xldmVsVG9PbmUnOgogICAgICAgICAgICAgICAgc2FmZS5sb2dMZXZlbCA9IDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb1R3byc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBiYy5wb3N0TWVzc2FnZSgnYXJleW91cmVhZHk/Jyk7CiAgICB9IGNhdGNoKF8pIHsKICAgICAgICBzYWZlLnNlbmRUb0xvZ2dlciA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzYWZlLnRvTG9nVGV4dCh0eXBlLCAuLi5hcmdzKTsKICAgICAgICAgICAgaWYgKCB0ZXh0ID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBzYWZlLmxvZyhgdUJPICR7dGV4dH1gKTsKICAgICAgICB9OwogICAgfQogICAgcmV0dXJuIHNhZmU7Cn0KZnVuY3Rpb24gb2JqZWN0UHJ1bmVGbigKICAgIG9iaiwKICAgIHJhd1BydW5lUGF0aHMsCiAgICByYXdOZWVkbGVQYXRocywKICAgIHN0YWNrTmVlZGxlRGV0YWlscyA9IHsgbWF0Y2hBbGw6IHRydWUgfSwKICAgIGV4dHJhQXJncyA9IHt9CikgewogICAgaWYgKCB0eXBlb2YgcmF3UHJ1bmVQYXRocyAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgY29uc3QgcHJ1bmVQYXRocyA9IHJhd1BydW5lUGF0aHMgIT09ICcnCiAgICAgICAgPyByYXdQcnVuZVBhdGhzLnNwbGl0KC8gKy8pCiAgICAgICAgOiBbXTsKICAgIGNvbnN0IG5lZWRsZVBhdGhzID0gcHJ1bmVQYXRocy5sZW5ndGggIT09IDAgJiYgcmF3TmVlZGxlUGF0aHMgIT09ICcnCiAgICAgICAgPyByYXdOZWVkbGVQYXRocy5zcGxpdCgvICsvKQogICAgICAgIDogW107CiAgICBpZiAoIHN0YWNrTmVlZGxlRGV0YWlscy5tYXRjaEFsbCAhPT0gdHJ1ZSApIHsKICAgICAgICBpZiAoIG1hdGNoZXNTdGFja1RyYWNlKHN0YWNrTmVlZGxlRGV0YWlscywgZXh0cmFBcmdzLmxvZ3N0YWNrKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBpZiAoIG9iamVjdFBydW5lRm4ubXVzdFByb2Nlc3MgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICBvYmplY3RQcnVuZUZuLm11c3RQcm9jZXNzID0gKHJvb3QsIG5lZWRsZVBhdGhzKSA9PiB7CiAgICAgICAgICAgIGZvciAoIGNvbnN0IG5lZWRsZVBhdGggb2YgbmVlZGxlUGF0aHMgKSB7CiAgICAgICAgICAgICAgICBpZiAoIG9iamVjdEZpbmRPd25lckZuKHJvb3QsIG5lZWRsZVBhdGgpID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfTsKICAgIH0KICAgIGlmICggcHJ1bmVQYXRocy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgbGV0IG91dGNvbWUgPSAnbm9tYXRjaCc7CiAgICBpZiAoIG9iamVjdFBydW5lRm4ubXVzdFByb2Nlc3Mob2JqLCBuZWVkbGVQYXRocykgKSB7CiAgICAgICAgZm9yICggY29uc3QgcGF0aCBvZiBwcnVuZVBhdGhzICkgewogICAgICAgICAgICBpZiAoIG9iamVjdEZpbmRPd25lckZuKG9iaiwgcGF0aCwgdHJ1ZSkgKSB7CiAgICAgICAgICAgICAgICBvdXRjb21lID0gJ21hdGNoJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmICggb3V0Y29tZSA9PT0gJ21hdGNoJyApIHsgcmV0dXJuIG9iajsgfQp9CgogIChmdW5jdGlvbiBqc29uUHJ1bmUoCiAgICByYXdQcnVuZVBhdGhzID0gJycsCiAgICByYXdOZWVkbGVQYXRocyA9ICcnLAogICAgc3RhY2tOZWVkbGUgPSAnJwopIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbG9nUHJlZml4ID0gc2FmZS5tYWtlTG9nUHJlZml4KCdqc29uLXBydW5lJywgcmF3UHJ1bmVQYXRocywgcmF3TmVlZGxlUGF0aHMsIHN0YWNrTmVlZGxlKTsKICAgIGNvbnN0IHN0YWNrTmVlZGxlRGV0YWlscyA9IHNhZmUuaW5pdFBhdHRlcm4oc3RhY2tOZWVkbGUsIHsgY2FuTmVnYXRlOiB0cnVlIH0pOwogICAgY29uc3QgZXh0cmFBcmdzID0gc2FmZS5nZXRFeHRyYUFyZ3MoQXJyYXkuZnJvbShhcmd1bWVudHMpLCAzKTsKICAgIEpTT04ucGFyc2UgPSBuZXcgUHJveHkoSlNPTi5wYXJzZSwgewogICAgICAgIGFwcGx5OiBmdW5jdGlvbih0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpIHsKICAgICAgICAgICAgY29uc3Qgb2JqQmVmb3JlID0gUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpOwogICAgICAgICAgICBpZiAoIHJhd1BydW5lUGF0aHMgPT09ICcnICkgewogICAgICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCBzYWZlLkpTT05fc3RyaW5naWZ5KG9iakJlZm9yZSwgbnVsbCwgMikpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IG9iakFmdGVyID0gb2JqZWN0UHJ1bmVGbigKICAgICAgICAgICAgICAgIG9iakJlZm9yZSwKICAgICAgICAgICAgICAgIHJhd1BydW5lUGF0aHMsCiAgICAgICAgICAgICAgICByYXdOZWVkbGVQYXRocywKICAgICAgICAgICAgICAgIHN0YWNrTmVlZGxlRGV0YWlscywKICAgICAgICAgICAgICAgIGV4dHJhQXJncwogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoIG9iakFmdGVyID09PSB1bmRlZmluZWQgKSB7IHJldHVybiBvYmpCZWZvcmU7IH0KICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCAnUHJ1bmVkJyk7CiAgICAgICAgICAgIGlmICggc2FmZS5sb2dMZXZlbCA+IDEgKSB7CiAgICAgICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBBZnRlciBwcnVuaW5nOlxuJHtzYWZlLkpTT05fc3RyaW5naWZ5KG9iakFmdGVyLCBudWxsLCAyKX1gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gb2JqQWZ0ZXI7CiAgICAgICAgfSwKICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"json-prune-fetch-response.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0UmFuZG9tVG9rZW4oKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIHJldHVybiBzYWZlLlN0cmluZ19mcm9tQ2hhckNvZGUoRGF0ZS5ub3coKSAlIDI2ICsgOTcpICsKICAgICAgICBzYWZlLk1hdGhfZmxvb3Ioc2FmZS5NYXRoX3JhbmRvbSgpICogOTgyNDUxNjUzICsgOTgyNDUxNjUzKS50b1N0cmluZygzNik7Cn0KZnVuY3Rpb24gZ2V0RXhjZXB0aW9uVG9rZW4oKSB7CiAgICBjb25zdCB0b2tlbiA9IGdldFJhbmRvbVRva2VuKCk7CiAgICBjb25zdCBvZSA9IHNlbGYub25lcnJvcjsKICAgIHNlbGYub25lcnJvciA9IGZ1bmN0aW9uKG1zZywgLi4uYXJncykgewogICAgICAgIGlmICggdHlwZW9mIG1zZyA9PT0gJ3N0cmluZycgJiYgbXNnLmluY2x1ZGVzKHRva2VuKSApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICBpZiAoIG9lIGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgIHJldHVybiBvZS5jYWxsKHRoaXMsIG1zZywgLi4uYXJncyk7CiAgICAgICAgfQogICAgfS5iaW5kKCk7CiAgICByZXR1cm4gdG9rZW47Cn0KZnVuY3Rpb24gb2JqZWN0RmluZE93bmVyRm4oCiAgICByb290LAogICAgcGF0aCwKICAgIHBydW5lID0gZmFsc2UKKSB7CiAgICBsZXQgb3duZXIgPSByb290OwogICAgbGV0IGNoYWluID0gcGF0aDsKICAgIGZvciAoOzspIHsKICAgICAgICBpZiAoIHR5cGVvZiBvd25lciAhPT0gJ29iamVjdCcgfHwgb3duZXIgPT09IG51bGwgICkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICBjb25zdCBwb3MgPSBjaGFpbi5pbmRleE9mKCcuJyk7CiAgICAgICAgaWYgKCBwb3MgPT09IC0xICkgewogICAgICAgICAgICBpZiAoIHBydW5lID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiBvd25lci5oYXNPd25Qcm9wZXJ0eShjaGFpbik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IG1vZGlmaWVkID0gZmFsc2U7CiAgICAgICAgICAgIGlmICggY2hhaW4gPT09ICcqJyApIHsKICAgICAgICAgICAgICAgIGZvciAoIGNvbnN0IGtleSBpbiBvd25lciApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIG93bmVyLmhhc093blByb3BlcnR5KGtleSkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvd25lcltrZXldOwogICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmICggb3duZXIuaGFzT3duUHJvcGVydHkoY2hhaW4pICkgewogICAgICAgICAgICAgICAgZGVsZXRlIG93bmVyW2NoYWluXTsKICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbW9kaWZpZWQ7CiAgICAgICAgfQogICAgICAgIGNvbnN0IHByb3AgPSBjaGFpbi5zbGljZSgwLCBwb3MpOwogICAgICAgIGNvbnN0IG5leHQgPSBjaGFpbi5zbGljZShwb3MgKyAxKTsKICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTsKICAgICAgICBpZiAoIHByb3AgPT09ICdbLV0nICYmIEFycmF5LmlzQXJyYXkob3duZXIpICkgewogICAgICAgICAgICBsZXQgaSA9IG93bmVyLmxlbmd0aDsKICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CiAgICAgICAgICAgICAgICBpZiAoIG9iamVjdEZpbmRPd25lckZuKG93bmVyW2ldLCBuZXh0KSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBvd25lci5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgICAgIH0KICAgICAgICBpZiAoIHByb3AgPT09ICd7LX0nICYmIG93bmVyIGluc3RhbmNlb2YgT2JqZWN0ICkgewogICAgICAgICAgICBmb3IgKCBjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3duZXIpICkgewogICAgICAgICAgICAgICAgaWYgKCBvYmplY3RGaW5kT3duZXJGbihvd25lcltrZXldLCBuZXh0KSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBkZWxldGUgb3duZXJba2V5XTsKICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZm91bmQ7CiAgICAgICAgfQogICAgICAgIGlmICgKICAgICAgICAgICAgcHJvcCA9PT0gJ1tdJyAmJiBBcnJheS5pc0FycmF5KG93bmVyKSB8fAogICAgICAgICAgICBwcm9wID09PSAne30nICYmIG93bmVyIGluc3RhbmNlb2YgT2JqZWN0IHx8CiAgICAgICAgICAgIHByb3AgPT09ICcqJyAmJiBvd25lciBpbnN0YW5jZW9mIE9iamVjdAogICAgICAgICkgewogICAgICAgICAgICBmb3IgKCBjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3duZXIpICkgewogICAgICAgICAgICAgICAgaWYgKG9iamVjdEZpbmRPd25lckZuKG93bmVyW2tleV0sIG5leHQsIHBydW5lKSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgICAgIH0KICAgICAgICBpZiAoIG93bmVyLmhhc093blByb3BlcnR5KHByb3ApID09PSBmYWxzZSApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgb3duZXIgPSBvd25lcltwcm9wXTsKICAgICAgICBjaGFpbiA9IGNoYWluLnNsaWNlKHBvcyArIDEpOwogICAgfQp9CmZ1bmN0aW9uIG1hdGNoZXNTdGFja1RyYWNlKAogICAgbmVlZGxlRGV0YWlscywKICAgIGxvZ0xldmVsID0gJycKKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGV4Y2VwdGlvblRva2VuID0gZ2V0RXhjZXB0aW9uVG9rZW4oKTsKICAgIGNvbnN0IGVycm9yID0gbmV3IHNhZmUuRXJyb3IoZXhjZXB0aW9uVG9rZW4pOwogICAgY29uc3QgZG9jVVJMID0gbmV3IFVSTChzZWxmLmxvY2F0aW9uLmhyZWYpOwogICAgZG9jVVJMLmhhc2ggPSAnJzsKICAgIC8vIE5vcm1hbGl6ZSBzdGFjayB0cmFjZQogICAgY29uc3QgcmVMaW5lID0gLyguKj9AKT8oXFMrKSg6XGQrKTpcZCtcKT8kLzsKICAgIGNvbnN0IGxpbmVzID0gW107CiAgICBmb3IgKCBsZXQgbGluZSBvZiBlcnJvci5zdGFjay5zcGxpdCgvW1xuXHJdKy8pICkgewogICAgICAgIGlmICggbGluZS5pbmNsdWRlcyhleGNlcHRpb25Ub2tlbikgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpOwogICAgICAgIGNvbnN0IG1hdGNoID0gc2FmZS5SZWdFeHBfZXhlYy5jYWxsKHJlTGluZSwgbGluZSk7CiAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsgY29udGludWU7IH0KICAgICAgICBsZXQgdXJsID0gbWF0Y2hbMl07CiAgICAgICAgaWYgKCB1cmwuc3RhcnRzV2l0aCgnKCcpICkgeyB1cmwgPSB1cmwuc2xpY2UoMSk7IH0KICAgICAgICBpZiAoIHVybCA9PT0gZG9jVVJMLmhyZWYgKSB7CiAgICAgICAgICAgIHVybCA9ICdpbmxpbmVTY3JpcHQnOwogICAgICAgIH0gZWxzZSBpZiAoIHVybC5zdGFydHNXaXRoKCc8YW5vbnltb3VzPicpICkgewogICAgICAgICAgICB1cmwgPSAnaW5qZWN0ZWRTY3JpcHQnOwogICAgICAgIH0KICAgICAgICBsZXQgZm4gPSBtYXRjaFsxXSAhPT0gdW5kZWZpbmVkCiAgICAgICAgICAgID8gbWF0Y2hbMV0uc2xpY2UoMCwgLTEpCiAgICAgICAgICAgIDogbGluZS5zbGljZSgwLCBtYXRjaC5pbmRleCkudHJpbSgpOwogICAgICAgIGlmICggZm4uc3RhcnRzV2l0aCgnYXQnKSApIHsgZm4gPSBmbi5zbGljZSgyKS50cmltKCk7IH0KICAgICAgICBsZXQgcm93Y29sID0gbWF0Y2hbM107CiAgICAgICAgbGluZXMucHVzaCgnICcgKyBgJHtmbn0gJHt1cmx9JHtyb3djb2x9OjFgLnRyaW0oKSk7CiAgICB9CiAgICBsaW5lc1swXSA9IGBzdGFja0RlcHRoOiR7bGluZXMubGVuZ3RoLTF9YDsKICAgIGNvbnN0IHN0YWNrID0gbGluZXMuam9pbignXHQnKTsKICAgIGNvbnN0IHIgPSBuZWVkbGVEZXRhaWxzLm1hdGNoQWxsICE9PSB0cnVlICYmCiAgICAgICAgc2FmZS50ZXN0UGF0dGVybihuZWVkbGVEZXRhaWxzLCBzdGFjayk7CiAgICBpZiAoCiAgICAgICAgbG9nTGV2ZWwgPT09ICdhbGwnIHx8CiAgICAgICAgbG9nTGV2ZWwgPT09ICdtYXRjaCcgJiYgciB8fAogICAgICAgIGxvZ0xldmVsID09PSAnbm9tYXRjaCcgJiYgIXIKICAgICkgewogICAgICAgIHNhZmUudWJvTG9nKHN0YWNrLnJlcGxhY2UoL1x0L2csICdcbicpKTsKICAgIH0KICAgIHJldHVybiByOwp9CmZ1bmN0aW9uIHNhZmVTZWxmKCkgewogICAgaWYgKCBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmOwogICAgfQogICAgY29uc3Qgc2VsZiA9IGdsb2JhbFRoaXM7CiAgICBjb25zdCBzYWZlID0gewogICAgICAgICdBcnJheV9mcm9tJzogQXJyYXkuZnJvbSwKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdGdW5jdGlvbl90b1N0cmluZ0ZuJzogc2VsZi5GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nJzogdGhpc0FyZyA9PiBzYWZlLkZ1bmN0aW9uX3RvU3RyaW5nRm4uY2FsbCh0aGlzQXJnKSwKICAgICAgICAnTWF0aF9mbG9vcic6IE1hdGguZmxvb3IsCiAgICAgICAgJ01hdGhfbWF4JzogTWF0aC5tYXgsCiAgICAgICAgJ01hdGhfbWluJzogTWF0aC5taW4sCiAgICAgICAgJ01hdGhfcmFuZG9tJzogTWF0aC5yYW5kb20sCiAgICAgICAgJ09iamVjdCc6IE9iamVjdCwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnR5JzogT2JqZWN0LmRlZmluZVByb3BlcnR5LmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnRpZXMnOiBPYmplY3QuZGVmaW5lUHJvcGVydGllcy5iaW5kKE9iamVjdCksCiAgICAgICAgJ09iamVjdF9mcm9tRW50cmllcyc6IE9iamVjdC5mcm9tRW50cmllcy5iaW5kKE9iamVjdCksCiAgICAgICAgJ09iamVjdF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLmJpbmQoT2JqZWN0KSwKICAgICAgICAnUmVnRXhwJzogc2VsZi5SZWdFeHAsCiAgICAgICAgJ1JlZ0V4cF90ZXN0Jzogc2VsZi5SZWdFeHAucHJvdG90eXBlLnRlc3QsCiAgICAgICAgJ1JlZ0V4cF9leGVjJzogc2VsZi5SZWdFeHAucHJvdG90eXBlLmV4ZWMsCiAgICAgICAgJ1JlcXVlc3RfY2xvbmUnOiBzZWxmLlJlcXVlc3QucHJvdG90eXBlLmNsb25lLAogICAgICAgICdTdHJpbmdfZnJvbUNoYXJDb2RlJzogU3RyaW5nLmZyb21DaGFyQ29kZSwKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnSlNPTic6IHNlbGYuSlNPTiwKICAgICAgICAnSlNPTl9wYXJzZUZuJzogc2VsZi5KU09OLnBhcnNlLAogICAgICAgICdKU09OX3N0cmluZ2lmeUZuJzogc2VsZi5KU09OLnN0cmluZ2lmeSwKICAgICAgICAnSlNPTl9wYXJzZSc6ICguLi5hcmdzKSA9PiBzYWZlLkpTT05fcGFyc2VGbi5jYWxsKHNhZmUuSlNPTiwgLi4uYXJncyksCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5JzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9zdHJpbmdpZnlGbi5jYWxsKHNhZmUuSlNPTiwgLi4uYXJncyksCiAgICAgICAgJ2xvZyc6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCiAgICAgICAgLy8gUHJvcGVydGllcwogICAgICAgIGxvZ0xldmVsOiAwLAogICAgICAgIC8vIE1ldGhvZHMKICAgICAgICBtYWtlTG9nUHJlZml4KC4uLmFyZ3MpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyICYmIGBbJHthcmdzLmpvaW4oJyBcdTIwNUQgJyl9XWAgfHwgJyc7CiAgICAgICAgfSwKICAgICAgICB1Ym9Mb2coLi4uYXJncykgewogICAgICAgICAgICBpZiAoIHRoaXMuc2VuZFRvTG9nZ2VyID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGFyZ3MgPT09IHVuZGVmaW5lZCB8fCBhcmdzWzBdID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbmRUb0xvZ2dlcignaW5mbycsIC4uLmFyZ3MpOwogICAgICAgICAgICAKICAgICAgICB9LAogICAgICAgIHVib0VyciguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdlcnJvcicsIC4uLmFyZ3MpOwogICAgICAgIH0sCiAgICAgICAgZXNjYXBlUmVnZXhDaGFycyhzKSB7CiAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpOwogICAgICAgIH0sCiAgICAgICAgaW5pdFBhdHRlcm4ocGF0dGVybiwgb3B0aW9ucyA9IHt9KSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geyBtYXRjaEFsbDogdHJ1ZSwgZXhwZWN0OiB0cnVlIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZXhwZWN0ID0gKG9wdGlvbnMuY2FuTmVnYXRlICE9PSB0cnVlIHx8IHBhdHRlcm4uc3RhcnRzV2l0aCgnIScpID09PSBmYWxzZSk7CiAgICAgICAgICAgIGlmICggZXhwZWN0ID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnNsaWNlKDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoICE9PSBudWxsICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMl0gfHwgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIG9wdGlvbnMuZmxhZ3MgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCh0aGlzLmVzY2FwZVJlZ2V4Q2hhcnMocGF0dGVybiksCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgcGF0dGVybiwgZXhwZWN0IH07CiAgICAgICAgfSwKICAgICAgICB0ZXN0UGF0dGVybihkZXRhaWxzLCBoYXlzdGFjaykgewogICAgICAgICAgICBpZiAoIGRldGFpbHMubWF0Y2hBbGwgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgICAgIGlmICggZGV0YWlscy5yZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLlJlZ0V4cF90ZXN0LmNhbGwoZGV0YWlscy5yZSwgaGF5c3RhY2spID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gaGF5c3RhY2suaW5jbHVkZXMoZGV0YWlscy5wYXR0ZXJuKSA9PT0gZGV0YWlscy5leHBlY3Q7CiAgICAgICAgfSwKICAgICAgICBwYXR0ZXJuVG9SZWdleChwYXR0ZXJuLCBmbGFncyA9IHVuZGVmaW5lZCwgdmVyYmF0aW0gPSBmYWxzZSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgeyByZXR1cm4gL14vOyB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoID09PSBudWxsICkgewogICAgICAgICAgICAgICAgY29uc3QgcmVTdHIgPSB0aGlzLmVzY2FwZVJlZ2V4Q2hhcnMocGF0dGVybik7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cCh2ZXJiYXRpbSA/IGBeJHtyZVN0cn0kYCA6IHJlU3RyLCBmbGFncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKG1hdGNoWzFdLCBtYXRjaFsyXSB8fCB1bmRlZmluZWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKGV4KSB7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIC9eLzsKICAgICAgICB9LAogICAgICAgIGdldEV4dHJhQXJncyhhcmdzLCBvZmZzZXQgPSAwKSB7CiAgICAgICAgICAgIGNvbnN0IGVudHJpZXMgPSBhcmdzLnNsaWNlKG9mZnNldCkucmVkdWNlKChvdXQsIHYsIGksIGEpID0+IHsKICAgICAgICAgICAgICAgIGlmICggKGkgJiAxKSA9PT0gMCApIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByYXdWYWx1ZSA9IGFbaSsxXTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IC9eXGQrJC8udGVzdChyYXdWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgPyBwYXJzZUludChyYXdWYWx1ZSwgMTApCiAgICAgICAgICAgICAgICAgICAgICAgIDogcmF3VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgb3V0LnB1c2goWyBhW2ldLCB2YWx1ZSBdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgICAgICAgIH0sIFtdKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuT2JqZWN0X2Zyb21FbnRyaWVzKGVudHJpZXMpOwogICAgICAgIH0sCiAgICAgICAgb25JZGxlKGZuLCBvcHRpb25zKSB7CiAgICAgICAgICAgIGlmICggc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayhmbiwgb3B0aW9ucyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZuKTsKICAgICAgICB9LAogICAgICAgIG9mZklkbGUoaWQpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jYW5jZWxJZGxlQ2FsbGJhY2soaWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkKTsKICAgICAgICB9CiAgICB9OwogICAgc2NyaXB0bGV0R2xvYmFscy5zYWZlU2VsZiA9IHNhZmU7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuIHNhZmU7IH0KICAgIC8vIFRoaXMgaXMgZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBsb2dnZXIgaXMgb3BlbmVkCiAgICBzYWZlLmxvZ0xldmVsID0gc2NyaXB0bGV0R2xvYmFscy5sb2dMZXZlbCB8fCAxOwogICAgbGV0IGxhc3RMb2dUeXBlID0gJyc7CiAgICBsZXQgbGFzdExvZ1RleHQgPSAnJzsKICAgIGxldCBsYXN0TG9nVGltZSA9IDA7CiAgICBzYWZlLnRvTG9nVGV4dCA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgaWYgKCBhcmdzLmxlbmd0aCA9PT0gMCApIHsgcmV0dXJuOyB9CiAgICAgICAgY29uc3QgdGV4dCA9IGBbJHtkb2N1bWVudC5sb2NhdGlvbi5ob3N0bmFtZSB8fCBkb2N1bWVudC5sb2NhdGlvbi5ocmVmfV0ke2FyZ3Muam9pbignICcpfWA7CiAgICAgICAgaWYgKCB0ZXh0ID09PSBsYXN0TG9nVGV4dCAmJiB0eXBlID09PSBsYXN0TG9nVHlwZSApIHsKICAgICAgICAgICAgaWYgKCAoRGF0ZS5ub3coKSAtIGxhc3RMb2dUaW1lKSA8IDUwMDAgKSB7IHJldHVybjsgfQogICAgICAgIH0KICAgICAgICBsYXN0TG9nVHlwZSA9IHR5cGU7CiAgICAgICAgbGFzdExvZ1RleHQgPSB0ZXh0OwogICAgICAgIGxhc3RMb2dUaW1lID0gRGF0ZS5ub3coKTsKICAgICAgICByZXR1cm4gdGV4dDsKICAgIH07CiAgICB0cnkgewogICAgICAgIGNvbnN0IGJjID0gbmV3IHNlbGYuQnJvYWRjYXN0Q2hhbm5lbChzY3JpcHRsZXRHbG9iYWxzLmJjU2VjcmV0KTsKICAgICAgICBsZXQgYmNCdWZmZXIgPSBbXTsKICAgICAgICBzYWZlLnNlbmRUb0xvZ2dlciA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzYWZlLnRvTG9nVGV4dCh0eXBlLCAuLi5hcmdzKTsKICAgICAgICAgICAgaWYgKCB0ZXh0ID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYmMucG9zdE1lc3NhZ2UoeyB3aGF0OiAnbWVzc2FnZVRvTG9nZ2VyJywgdHlwZSwgdGV4dCB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBiY0J1ZmZlci5wdXNoKHsgdHlwZSwgdGV4dCB9KTsKICAgICAgICB9OwogICAgICAgIGJjLm9ubWVzc2FnZSA9IGV2ID0+IHsKICAgICAgICAgICAgY29uc3QgbXNnID0gZXYuZGF0YTsKICAgICAgICAgICAgc3dpdGNoICggbXNnICkgewogICAgICAgICAgICBjYXNlICdpYW1yZWFkeSEnOgogICAgICAgICAgICAgICAgaWYgKCBiY0J1ZmZlciA9PT0gdW5kZWZpbmVkICkgeyBicmVhazsgfQogICAgICAgICAgICAgICAgYmNCdWZmZXIuZm9yRWFjaCgoeyB0eXBlLCB0ZXh0IH0pID0+CiAgICAgICAgICAgICAgICAgICAgYmMucG9zdE1lc3NhZ2UoeyB3aGF0OiAnbWVzc2FnZVRvTG9nZ2VyJywgdHlwZSwgdGV4dCB9KQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGJjQnVmZmVyID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3NldFNjcmlwdGxldExvZ0xldmVsVG9PbmUnOgogICAgICAgICAgICAgICAgc2FmZS5sb2dMZXZlbCA9IDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb1R3byc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBiYy5wb3N0TWVzc2FnZSgnYXJleW91cmVhZHk/Jyk7CiAgICB9IGNhdGNoKF8pIHsKICAgICAgICBzYWZlLnNlbmRUb0xvZ2dlciA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzYWZlLnRvTG9nVGV4dCh0eXBlLCAuLi5hcmdzKTsKICAgICAgICAgICAgaWYgKCB0ZXh0ID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBzYWZlLmxvZyhgdUJPICR7dGV4dH1gKTsKICAgICAgICB9OwogICAgfQogICAgcmV0dXJuIHNhZmU7Cn0KZnVuY3Rpb24gcGFyc2VQcm9wZXJ0aWVzVG9NYXRjaChwcm9wc1RvTWF0Y2gsIGltcGxpY2l0ID0gJycpIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbmVlZGxlcyA9IG5ldyBNYXAoKTsKICAgIGlmICggcHJvcHNUb01hdGNoID09PSB1bmRlZmluZWQgfHwgcHJvcHNUb01hdGNoID09PSAnJyApIHsgcmV0dXJuIG5lZWRsZXM7IH0KICAgIGNvbnN0IG9wdGlvbnMgPSB7IGNhbk5lZ2F0ZTogdHJ1ZSB9OwogICAgZm9yICggY29uc3QgbmVlZGxlIG9mIHByb3BzVG9NYXRjaC5zcGxpdCgvXHMrLykgKSB7CiAgICAgICAgY29uc3QgWyBwcm9wLCBwYXR0ZXJuIF0gPSBuZWVkbGUuc3BsaXQoJzonKTsKICAgICAgICBpZiAoIHByb3AgPT09ICcnICkgeyBjb250aW51ZTsgfQogICAgICAgIGlmICggcGF0dGVybiAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICBuZWVkbGVzLnNldChwcm9wLCBzYWZlLmluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMpKTsKICAgICAgICB9IGVsc2UgaWYgKCBpbXBsaWNpdCAhPT0gJycgKSB7CiAgICAgICAgICAgIG5lZWRsZXMuc2V0KGltcGxpY2l0LCBzYWZlLmluaXRQYXR0ZXJuKHByb3AsIG9wdGlvbnMpKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gbmVlZGxlczsKfQpmdW5jdGlvbiBvYmplY3RQcnVuZUZuKAogICAgb2JqLAogICAgcmF3UHJ1bmVQYXRocywKICAgIHJhd05lZWRsZVBhdGhzLAogICAgc3RhY2tOZWVkbGVEZXRhaWxzID0geyBtYXRjaEFsbDogdHJ1ZSB9LAogICAgZXh0cmFBcmdzID0ge30KKSB7CiAgICBpZiAoIHR5cGVvZiByYXdQcnVuZVBhdGhzICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBwcnVuZVBhdGhzID0gcmF3UHJ1bmVQYXRocyAhPT0gJycKICAgICAgICA/IHJhd1BydW5lUGF0aHMuc3BsaXQoLyArLykKICAgICAgICA6IFtdOwogICAgY29uc3QgbmVlZGxlUGF0aHMgPSBwcnVuZVBhdGhzLmxlbmd0aCAhPT0gMCAmJiByYXdOZWVkbGVQYXRocyAhPT0gJycKICAgICAgICA/IHJhd05lZWRsZVBhdGhzLnNwbGl0KC8gKy8pCiAgICAgICAgOiBbXTsKICAgIGlmICggc3RhY2tOZWVkbGVEZXRhaWxzLm1hdGNoQWxsICE9PSB0cnVlICkgewogICAgICAgIGlmICggbWF0Y2hlc1N0YWNrVHJhY2Uoc3RhY2tOZWVkbGVEZXRhaWxzLCBleHRyYUFyZ3MubG9nc3RhY2spID09PSBmYWxzZSApIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGlmICggb2JqZWN0UHJ1bmVGbi5tdXN0UHJvY2VzcyA9PT0gdW5kZWZpbmVkICkgewogICAgICAgIG9iamVjdFBydW5lRm4ubXVzdFByb2Nlc3MgPSAocm9vdCwgbmVlZGxlUGF0aHMpID0+IHsKICAgICAgICAgICAgZm9yICggY29uc3QgbmVlZGxlUGF0aCBvZiBuZWVkbGVQYXRocyApIHsKICAgICAgICAgICAgICAgIGlmICggb2JqZWN0RmluZE93bmVyRm4ocm9vdCwgbmVlZGxlUGF0aCkgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9OwogICAgfQogICAgaWYgKCBwcnVuZVBhdGhzLmxlbmd0aCA9PT0gMCApIHsgcmV0dXJuOyB9CiAgICBsZXQgb3V0Y29tZSA9ICdub21hdGNoJzsKICAgIGlmICggb2JqZWN0UHJ1bmVGbi5tdXN0UHJvY2VzcyhvYmosIG5lZWRsZVBhdGhzKSApIHsKICAgICAgICBmb3IgKCBjb25zdCBwYXRoIG9mIHBydW5lUGF0aHMgKSB7CiAgICAgICAgICAgIGlmICggb2JqZWN0RmluZE93bmVyRm4ob2JqLCBwYXRoLCB0cnVlKSApIHsKICAgICAgICAgICAgICAgIG91dGNvbWUgPSAnbWF0Y2gnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYgKCBvdXRjb21lID09PSAnbWF0Y2gnICkgeyByZXR1cm4gb2JqOyB9Cn0KZnVuY3Rpb24gbWF0Y2hPYmplY3RQcm9wZXJ0aWVzKHByb3BOZWVkbGVzLCAuLi5vYmpzKSB7CiAgICBpZiAoIG1hdGNoT2JqZWN0UHJvcGVydGllcy5leHRyYWN0UHJvcGVydGllcyA9PT0gdW5kZWZpbmVkICkgewogICAgICAgIG1hdGNoT2JqZWN0UHJvcGVydGllcy5leHRyYWN0UHJvcGVydGllcyA9IChzcmMsIGRlcywgcHJvcHMpID0+IHsKICAgICAgICAgICAgZm9yICggY29uc3QgcCBvZiBwcm9wcyApIHsKICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBzcmNbcF07CiAgICAgICAgICAgICAgICBpZiAoIHYgPT09IHVuZGVmaW5lZCApIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIGRlc1twXSA9IHNyY1twXTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGhheXN0YWNrID0ge307CiAgICBjb25zdCBwcm9wcyA9IHNhZmUuQXJyYXlfZnJvbShwcm9wTmVlZGxlcy5rZXlzKCkpOwogICAgZm9yICggY29uc3Qgb2JqIG9mIG9ianMgKSB7CiAgICAgICAgaWYgKCBvYmogaW5zdGFuY2VvZiBPYmplY3QgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgIG1hdGNoT2JqZWN0UHJvcGVydGllcy5leHRyYWN0UHJvcGVydGllcyhvYmosIGhheXN0YWNrLCBwcm9wcyk7CiAgICB9CiAgICBmb3IgKCBjb25zdCBbIHByb3AsIGRldGFpbHMgXSBvZiBwcm9wTmVlZGxlcyApIHsKICAgICAgICBsZXQgdmFsdWUgPSBoYXlzdGFja1twcm9wXTsKICAgICAgICBpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnICkgewogICAgICAgICAgICB0cnkgeyB2YWx1ZSA9IHNhZmUuSlNPTl9zdHJpbmdpZnkodmFsdWUpOyB9CiAgICAgICAgICAgIGNhdGNoKGV4KSB7IH0KICAgICAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnICkgeyBjb250aW51ZTsgfQogICAgICAgIH0KICAgICAgICBpZiAoIHNhZmUudGVzdFBhdHRlcm4oZGV0YWlscywgdmFsdWUpICkgeyBjb250aW51ZTsgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHJldHVybiB0cnVlOwp9CmZ1bmN0aW9uIGpzb25QcnVuZUZldGNoUmVzcG9uc2VGbigKICAgIHJhd1BydW5lUGF0aHMgPSAnJywKICAgIHJhd05lZWRsZVBhdGhzID0gJycKKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGxvZ1ByZWZpeCA9IHNhZmUubWFrZUxvZ1ByZWZpeCgnanNvbi1wcnVuZS1mZXRjaC1yZXNwb25zZScsIHJhd1BydW5lUGF0aHMsIHJhd05lZWRsZVBhdGhzKTsKICAgIGNvbnN0IGV4dHJhQXJncyA9IHNhZmUuZ2V0RXh0cmFBcmdzKEFycmF5LmZyb20oYXJndW1lbnRzKSwgMik7CiAgICBjb25zdCBwcm9wTmVlZGxlcyA9IHBhcnNlUHJvcGVydGllc1RvTWF0Y2goZXh0cmFBcmdzLnByb3BzVG9NYXRjaCwgJ3VybCcpOwogICAgY29uc3Qgc3RhY2tOZWVkbGUgPSBzYWZlLmluaXRQYXR0ZXJuKGV4dHJhQXJncy5zdGFja1RvTWF0Y2ggfHwgJycsIHsgY2FuTmVnYXRlOiB0cnVlIH0pOwogICAgY29uc3QgbG9nYWxsID0gcmF3UHJ1bmVQYXRocyA9PT0gJyc7CiAgICBjb25zdCBhcHBseUhhbmRsZXIgPSBmdW5jdGlvbih0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpIHsKICAgICAgICBjb25zdCBmZXRjaFByb21pc2UgPSBSZWZsZWN0LmFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncyk7CiAgICAgICAgbGV0IG91dGNvbWUgPSBsb2dhbGwgPyAnbm9tYXRjaCcgOiAnbWF0Y2gnOwogICAgICAgIGlmICggcHJvcE5lZWRsZXMuc2l6ZSAhPT0gMCApIHsKICAgICAgICAgICAgY29uc3Qgb2JqcyA9IFsgYXJnc1swXSBpbnN0YW5jZW9mIE9iamVjdCA/IGFyZ3NbMF0gOiB7IHVybDogYXJnc1swXSB9IF07CiAgICAgICAgICAgIGlmICggb2Jqc1swXSBpbnN0YW5jZW9mIFJlcXVlc3QgKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIG9ianNbMF0gPSBzYWZlLlJlcXVlc3RfY2xvbmUuY2FsbChvYmpzWzBdKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2goZXgpIHsKICAgICAgICAgICAgICAgICAgICBzYWZlLnVib0Vycihsb2dQcmVmaXgsICdFcnJvcjonLCBleCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBhcmdzWzFdIGluc3RhbmNlb2YgT2JqZWN0ICkgewogICAgICAgICAgICAgICAgb2Jqcy5wdXNoKGFyZ3NbMV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggbWF0Y2hPYmplY3RQcm9wZXJ0aWVzKHByb3BOZWVkbGVzLCAuLi5vYmpzKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgICAgICBvdXRjb21lID0gJ25vbWF0Y2gnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICggbG9nYWxsID09PSBmYWxzZSAmJiBvdXRjb21lID09PSAnbm9tYXRjaCcgKSB7IHJldHVybiBmZXRjaFByb21pc2U7IH0KICAgICAgICBpZiAoIHNhZmUubG9nTGV2ZWwgPiAxICYmIG91dGNvbWUgIT09ICdub21hdGNoJyAmJiBwcm9wTmVlZGxlcy5zaXplICE9PSAwICkgewogICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBNYXRjaGVkIG9wdGlvbmFsICJwcm9wc1RvTWF0Y2giXG4ke2V4dHJhQXJncy5wcm9wc1RvTWF0Y2h9YCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmZXRjaFByb21pc2UudGhlbihyZXNwb25zZUJlZm9yZSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzcG9uc2VCZWZvcmUuY2xvbmUoKTsKICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKS50aGVuKG9iakJlZm9yZSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiBvYmpCZWZvcmUgIT09ICdvYmplY3QnICkgeyByZXR1cm4gcmVzcG9uc2VCZWZvcmU7IH0KICAgICAgICAgICAgICAgIGlmICggbG9nYWxsICkgewogICAgICAgICAgICAgICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgc2FmZS5KU09OX3N0cmluZ2lmeShvYmpCZWZvcmUsIG51bGwsIDIpKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2VCZWZvcmU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb25zdCBvYmpBZnRlciA9IG9iamVjdFBydW5lRm4oCiAgICAgICAgICAgICAgICAgICAgb2JqQmVmb3JlLAogICAgICAgICAgICAgICAgICAgIHJhd1BydW5lUGF0aHMsCiAgICAgICAgICAgICAgICAgICAgcmF3TmVlZGxlUGF0aHMsCiAgICAgICAgICAgICAgICAgICAgc3RhY2tOZWVkbGUsCiAgICAgICAgICAgICAgICAgICAgZXh0cmFBcmdzCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCB0eXBlb2Ygb2JqQWZ0ZXIgIT09ICdvYmplY3QnICkgeyByZXR1cm4gcmVzcG9uc2VCZWZvcmU7IH0KICAgICAgICAgICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgJ1BydW5lZCcpOwogICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VBZnRlciA9IFJlc3BvbnNlLmpzb24ob2JqQWZ0ZXIsIHsKICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlQmVmb3JlLnN0YXR1cywKICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiByZXNwb25zZUJlZm9yZS5zdGF0dXNUZXh0LAogICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlQmVmb3JlLmhlYWRlcnMsCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHJlc3BvbnNlQWZ0ZXIsIHsKICAgICAgICAgICAgICAgICAgICBvazogeyB2YWx1ZTogcmVzcG9uc2VCZWZvcmUub2sgfSwKICAgICAgICAgICAgICAgICAgICByZWRpcmVjdGVkOiB7IHZhbHVlOiByZXNwb25zZUJlZm9yZS5yZWRpcmVjdGVkIH0sCiAgICAgICAgICAgICAgICAgICAgdHlwZTogeyB2YWx1ZTogcmVzcG9uc2VCZWZvcmUudHlwZSB9LAogICAgICAgICAgICAgICAgICAgIHVybDogeyB2YWx1ZTogcmVzcG9uc2VCZWZvcmUudXJsIH0sCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZUFmdGVyOwogICAgICAgICAgICB9KS5jYXRjaChyZWFzb24gPT4gewogICAgICAgICAgICAgICAgc2FmZS51Ym9FcnIobG9nUHJlZml4LCAnRXJyb3I6JywgcmVhc29uKTsKICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZUJlZm9yZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSkuY2F0Y2gocmVhc29uID0+IHsKICAgICAgICAgICAgc2FmZS51Ym9FcnIobG9nUHJlZml4LCAnRXJyb3I6JywgcmVhc29uKTsKICAgICAgICAgICAgcmV0dXJuIGZldGNoUHJvbWlzZTsKICAgICAgICB9KTsKICAgIH07CiAgICBzZWxmLmZldGNoID0gbmV3IFByb3h5KHNlbGYuZmV0Y2gsIHsKICAgICAgICBhcHBseTogYXBwbHlIYW5kbGVyCiAgICB9KTsKfQoKICAoZnVuY3Rpb24ganNvblBydW5lRmV0Y2hSZXNwb25zZSguLi5hcmdzKSB7CiAgICBqc29uUHJ1bmVGZXRjaFJlc3BvbnNlRm4oLi4uYXJncyk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"json-prune-xhr-response.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0UmFuZG9tVG9rZW4oKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIHJldHVybiBzYWZlLlN0cmluZ19mcm9tQ2hhckNvZGUoRGF0ZS5ub3coKSAlIDI2ICsgOTcpICsKICAgICAgICBzYWZlLk1hdGhfZmxvb3Ioc2FmZS5NYXRoX3JhbmRvbSgpICogOTgyNDUxNjUzICsgOTgyNDUxNjUzKS50b1N0cmluZygzNik7Cn0KZnVuY3Rpb24gZ2V0RXhjZXB0aW9uVG9rZW4oKSB7CiAgICBjb25zdCB0b2tlbiA9IGdldFJhbmRvbVRva2VuKCk7CiAgICBjb25zdCBvZSA9IHNlbGYub25lcnJvcjsKICAgIHNlbGYub25lcnJvciA9IGZ1bmN0aW9uKG1zZywgLi4uYXJncykgewogICAgICAgIGlmICggdHlwZW9mIG1zZyA9PT0gJ3N0cmluZycgJiYgbXNnLmluY2x1ZGVzKHRva2VuKSApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICBpZiAoIG9lIGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgIHJldHVybiBvZS5jYWxsKHRoaXMsIG1zZywgLi4uYXJncyk7CiAgICAgICAgfQogICAgfS5iaW5kKCk7CiAgICByZXR1cm4gdG9rZW47Cn0KZnVuY3Rpb24gb2JqZWN0RmluZE93bmVyRm4oCiAgICByb290LAogICAgcGF0aCwKICAgIHBydW5lID0gZmFsc2UKKSB7CiAgICBsZXQgb3duZXIgPSByb290OwogICAgbGV0IGNoYWluID0gcGF0aDsKICAgIGZvciAoOzspIHsKICAgICAgICBpZiAoIHR5cGVvZiBvd25lciAhPT0gJ29iamVjdCcgfHwgb3duZXIgPT09IG51bGwgICkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICBjb25zdCBwb3MgPSBjaGFpbi5pbmRleE9mKCcuJyk7CiAgICAgICAgaWYgKCBwb3MgPT09IC0xICkgewogICAgICAgICAgICBpZiAoIHBydW5lID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiBvd25lci5oYXNPd25Qcm9wZXJ0eShjaGFpbik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IG1vZGlmaWVkID0gZmFsc2U7CiAgICAgICAgICAgIGlmICggY2hhaW4gPT09ICcqJyApIHsKICAgICAgICAgICAgICAgIGZvciAoIGNvbnN0IGtleSBpbiBvd25lciApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIG93bmVyLmhhc093blByb3BlcnR5KGtleSkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvd25lcltrZXldOwogICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmICggb3duZXIuaGFzT3duUHJvcGVydHkoY2hhaW4pICkgewogICAgICAgICAgICAgICAgZGVsZXRlIG93bmVyW2NoYWluXTsKICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbW9kaWZpZWQ7CiAgICAgICAgfQogICAgICAgIGNvbnN0IHByb3AgPSBjaGFpbi5zbGljZSgwLCBwb3MpOwogICAgICAgIGNvbnN0IG5leHQgPSBjaGFpbi5zbGljZShwb3MgKyAxKTsKICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTsKICAgICAgICBpZiAoIHByb3AgPT09ICdbLV0nICYmIEFycmF5LmlzQXJyYXkob3duZXIpICkgewogICAgICAgICAgICBsZXQgaSA9IG93bmVyLmxlbmd0aDsKICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CiAgICAgICAgICAgICAgICBpZiAoIG9iamVjdEZpbmRPd25lckZuKG93bmVyW2ldLCBuZXh0KSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBvd25lci5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgICAgIH0KICAgICAgICBpZiAoIHByb3AgPT09ICd7LX0nICYmIG93bmVyIGluc3RhbmNlb2YgT2JqZWN0ICkgewogICAgICAgICAgICBmb3IgKCBjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3duZXIpICkgewogICAgICAgICAgICAgICAgaWYgKCBvYmplY3RGaW5kT3duZXJGbihvd25lcltrZXldLCBuZXh0KSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBkZWxldGUgb3duZXJba2V5XTsKICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZm91bmQ7CiAgICAgICAgfQogICAgICAgIGlmICgKICAgICAgICAgICAgcHJvcCA9PT0gJ1tdJyAmJiBBcnJheS5pc0FycmF5KG93bmVyKSB8fAogICAgICAgICAgICBwcm9wID09PSAne30nICYmIG93bmVyIGluc3RhbmNlb2YgT2JqZWN0IHx8CiAgICAgICAgICAgIHByb3AgPT09ICcqJyAmJiBvd25lciBpbnN0YW5jZW9mIE9iamVjdAogICAgICAgICkgewogICAgICAgICAgICBmb3IgKCBjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3duZXIpICkgewogICAgICAgICAgICAgICAgaWYgKG9iamVjdEZpbmRPd25lckZuKG93bmVyW2tleV0sIG5leHQsIHBydW5lKSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgICAgIH0KICAgICAgICBpZiAoIG93bmVyLmhhc093blByb3BlcnR5KHByb3ApID09PSBmYWxzZSApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgb3duZXIgPSBvd25lcltwcm9wXTsKICAgICAgICBjaGFpbiA9IGNoYWluLnNsaWNlKHBvcyArIDEpOwogICAgfQp9CmZ1bmN0aW9uIG1hdGNoZXNTdGFja1RyYWNlKAogICAgbmVlZGxlRGV0YWlscywKICAgIGxvZ0xldmVsID0gJycKKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGV4Y2VwdGlvblRva2VuID0gZ2V0RXhjZXB0aW9uVG9rZW4oKTsKICAgIGNvbnN0IGVycm9yID0gbmV3IHNhZmUuRXJyb3IoZXhjZXB0aW9uVG9rZW4pOwogICAgY29uc3QgZG9jVVJMID0gbmV3IFVSTChzZWxmLmxvY2F0aW9uLmhyZWYpOwogICAgZG9jVVJMLmhhc2ggPSAnJzsKICAgIC8vIE5vcm1hbGl6ZSBzdGFjayB0cmFjZQogICAgY29uc3QgcmVMaW5lID0gLyguKj9AKT8oXFMrKSg6XGQrKTpcZCtcKT8kLzsKICAgIGNvbnN0IGxpbmVzID0gW107CiAgICBmb3IgKCBsZXQgbGluZSBvZiBlcnJvci5zdGFjay5zcGxpdCgvW1xuXHJdKy8pICkgewogICAgICAgIGlmICggbGluZS5pbmNsdWRlcyhleGNlcHRpb25Ub2tlbikgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpOwogICAgICAgIGNvbnN0IG1hdGNoID0gc2FmZS5SZWdFeHBfZXhlYy5jYWxsKHJlTGluZSwgbGluZSk7CiAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsgY29udGludWU7IH0KICAgICAgICBsZXQgdXJsID0gbWF0Y2hbMl07CiAgICAgICAgaWYgKCB1cmwuc3RhcnRzV2l0aCgnKCcpICkgeyB1cmwgPSB1cmwuc2xpY2UoMSk7IH0KICAgICAgICBpZiAoIHVybCA9PT0gZG9jVVJMLmhyZWYgKSB7CiAgICAgICAgICAgIHVybCA9ICdpbmxpbmVTY3JpcHQnOwogICAgICAgIH0gZWxzZSBpZiAoIHVybC5zdGFydHNXaXRoKCc8YW5vbnltb3VzPicpICkgewogICAgICAgICAgICB1cmwgPSAnaW5qZWN0ZWRTY3JpcHQnOwogICAgICAgIH0KICAgICAgICBsZXQgZm4gPSBtYXRjaFsxXSAhPT0gdW5kZWZpbmVkCiAgICAgICAgICAgID8gbWF0Y2hbMV0uc2xpY2UoMCwgLTEpCiAgICAgICAgICAgIDogbGluZS5zbGljZSgwLCBtYXRjaC5pbmRleCkudHJpbSgpOwogICAgICAgIGlmICggZm4uc3RhcnRzV2l0aCgnYXQnKSApIHsgZm4gPSBmbi5zbGljZSgyKS50cmltKCk7IH0KICAgICAgICBsZXQgcm93Y29sID0gbWF0Y2hbM107CiAgICAgICAgbGluZXMucHVzaCgnICcgKyBgJHtmbn0gJHt1cmx9JHtyb3djb2x9OjFgLnRyaW0oKSk7CiAgICB9CiAgICBsaW5lc1swXSA9IGBzdGFja0RlcHRoOiR7bGluZXMubGVuZ3RoLTF9YDsKICAgIGNvbnN0IHN0YWNrID0gbGluZXMuam9pbignXHQnKTsKICAgIGNvbnN0IHIgPSBuZWVkbGVEZXRhaWxzLm1hdGNoQWxsICE9PSB0cnVlICYmCiAgICAgICAgc2FmZS50ZXN0UGF0dGVybihuZWVkbGVEZXRhaWxzLCBzdGFjayk7CiAgICBpZiAoCiAgICAgICAgbG9nTGV2ZWwgPT09ICdhbGwnIHx8CiAgICAgICAgbG9nTGV2ZWwgPT09ICdtYXRjaCcgJiYgciB8fAogICAgICAgIGxvZ0xldmVsID09PSAnbm9tYXRjaCcgJiYgIXIKICAgICkgewogICAgICAgIHNhZmUudWJvTG9nKHN0YWNrLnJlcGxhY2UoL1x0L2csICdcbicpKTsKICAgIH0KICAgIHJldHVybiByOwp9CmZ1bmN0aW9uIHNhZmVTZWxmKCkgewogICAgaWYgKCBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmOwogICAgfQogICAgY29uc3Qgc2VsZiA9IGdsb2JhbFRoaXM7CiAgICBjb25zdCBzYWZlID0gewogICAgICAgICdBcnJheV9mcm9tJzogQXJyYXkuZnJvbSwKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdGdW5jdGlvbl90b1N0cmluZ0ZuJzogc2VsZi5GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nJzogdGhpc0FyZyA9PiBzYWZlLkZ1bmN0aW9uX3RvU3RyaW5nRm4uY2FsbCh0aGlzQXJnKSwKICAgICAgICAnTWF0aF9mbG9vcic6IE1hdGguZmxvb3IsCiAgICAgICAgJ01hdGhfbWF4JzogTWF0aC5tYXgsCiAgICAgICAgJ01hdGhfbWluJzogTWF0aC5taW4sCiAgICAgICAgJ01hdGhfcmFuZG9tJzogTWF0aC5yYW5kb20sCiAgICAgICAgJ09iamVjdCc6IE9iamVjdCwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnR5JzogT2JqZWN0LmRlZmluZVByb3BlcnR5LmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnRpZXMnOiBPYmplY3QuZGVmaW5lUHJvcGVydGllcy5iaW5kKE9iamVjdCksCiAgICAgICAgJ09iamVjdF9mcm9tRW50cmllcyc6IE9iamVjdC5mcm9tRW50cmllcy5iaW5kKE9iamVjdCksCiAgICAgICAgJ09iamVjdF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLmJpbmQoT2JqZWN0KSwKICAgICAgICAnUmVnRXhwJzogc2VsZi5SZWdFeHAsCiAgICAgICAgJ1JlZ0V4cF90ZXN0Jzogc2VsZi5SZWdFeHAucHJvdG90eXBlLnRlc3QsCiAgICAgICAgJ1JlZ0V4cF9leGVjJzogc2VsZi5SZWdFeHAucHJvdG90eXBlLmV4ZWMsCiAgICAgICAgJ1JlcXVlc3RfY2xvbmUnOiBzZWxmLlJlcXVlc3QucHJvdG90eXBlLmNsb25lLAogICAgICAgICdTdHJpbmdfZnJvbUNoYXJDb2RlJzogU3RyaW5nLmZyb21DaGFyQ29kZSwKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnSlNPTic6IHNlbGYuSlNPTiwKICAgICAgICAnSlNPTl9wYXJzZUZuJzogc2VsZi5KU09OLnBhcnNlLAogICAgICAgICdKU09OX3N0cmluZ2lmeUZuJzogc2VsZi5KU09OLnN0cmluZ2lmeSwKICAgICAgICAnSlNPTl9wYXJzZSc6ICguLi5hcmdzKSA9PiBzYWZlLkpTT05fcGFyc2VGbi5jYWxsKHNhZmUuSlNPTiwgLi4uYXJncyksCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5JzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9zdHJpbmdpZnlGbi5jYWxsKHNhZmUuSlNPTiwgLi4uYXJncyksCiAgICAgICAgJ2xvZyc6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCiAgICAgICAgLy8gUHJvcGVydGllcwogICAgICAgIGxvZ0xldmVsOiAwLAogICAgICAgIC8vIE1ldGhvZHMKICAgICAgICBtYWtlTG9nUHJlZml4KC4uLmFyZ3MpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyICYmIGBbJHthcmdzLmpvaW4oJyBcdTIwNUQgJyl9XWAgfHwgJyc7CiAgICAgICAgfSwKICAgICAgICB1Ym9Mb2coLi4uYXJncykgewogICAgICAgICAgICBpZiAoIHRoaXMuc2VuZFRvTG9nZ2VyID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGFyZ3MgPT09IHVuZGVmaW5lZCB8fCBhcmdzWzBdID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbmRUb0xvZ2dlcignaW5mbycsIC4uLmFyZ3MpOwogICAgICAgICAgICAKICAgICAgICB9LAogICAgICAgIHVib0VyciguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdlcnJvcicsIC4uLmFyZ3MpOwogICAgICAgIH0sCiAgICAgICAgZXNjYXBlUmVnZXhDaGFycyhzKSB7CiAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpOwogICAgICAgIH0sCiAgICAgICAgaW5pdFBhdHRlcm4ocGF0dGVybiwgb3B0aW9ucyA9IHt9KSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geyBtYXRjaEFsbDogdHJ1ZSwgZXhwZWN0OiB0cnVlIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZXhwZWN0ID0gKG9wdGlvbnMuY2FuTmVnYXRlICE9PSB0cnVlIHx8IHBhdHRlcm4uc3RhcnRzV2l0aCgnIScpID09PSBmYWxzZSk7CiAgICAgICAgICAgIGlmICggZXhwZWN0ID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnNsaWNlKDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoICE9PSBudWxsICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMl0gfHwgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIG9wdGlvbnMuZmxhZ3MgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCh0aGlzLmVzY2FwZVJlZ2V4Q2hhcnMocGF0dGVybiksCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgcGF0dGVybiwgZXhwZWN0IH07CiAgICAgICAgfSwKICAgICAgICB0ZXN0UGF0dGVybihkZXRhaWxzLCBoYXlzdGFjaykgewogICAgICAgICAgICBpZiAoIGRldGFpbHMubWF0Y2hBbGwgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgICAgIGlmICggZGV0YWlscy5yZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLlJlZ0V4cF90ZXN0LmNhbGwoZGV0YWlscy5yZSwgaGF5c3RhY2spID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gaGF5c3RhY2suaW5jbHVkZXMoZGV0YWlscy5wYXR0ZXJuKSA9PT0gZGV0YWlscy5leHBlY3Q7CiAgICAgICAgfSwKICAgICAgICBwYXR0ZXJuVG9SZWdleChwYXR0ZXJuLCBmbGFncyA9IHVuZGVmaW5lZCwgdmVyYmF0aW0gPSBmYWxzZSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgeyByZXR1cm4gL14vOyB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoID09PSBudWxsICkgewogICAgICAgICAgICAgICAgY29uc3QgcmVTdHIgPSB0aGlzLmVzY2FwZVJlZ2V4Q2hhcnMocGF0dGVybik7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cCh2ZXJiYXRpbSA/IGBeJHtyZVN0cn0kYCA6IHJlU3RyLCBmbGFncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKG1hdGNoWzFdLCBtYXRjaFsyXSB8fCB1bmRlZmluZWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKGV4KSB7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIC9eLzsKICAgICAgICB9LAogICAgICAgIGdldEV4dHJhQXJncyhhcmdzLCBvZmZzZXQgPSAwKSB7CiAgICAgICAgICAgIGNvbnN0IGVudHJpZXMgPSBhcmdzLnNsaWNlKG9mZnNldCkucmVkdWNlKChvdXQsIHYsIGksIGEpID0+IHsKICAgICAgICAgICAgICAgIGlmICggKGkgJiAxKSA9PT0gMCApIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByYXdWYWx1ZSA9IGFbaSsxXTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IC9eXGQrJC8udGVzdChyYXdWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgPyBwYXJzZUludChyYXdWYWx1ZSwgMTApCiAgICAgICAgICAgICAgICAgICAgICAgIDogcmF3VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgb3V0LnB1c2goWyBhW2ldLCB2YWx1ZSBdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgICAgICAgIH0sIFtdKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuT2JqZWN0X2Zyb21FbnRyaWVzKGVudHJpZXMpOwogICAgICAgIH0sCiAgICAgICAgb25JZGxlKGZuLCBvcHRpb25zKSB7CiAgICAgICAgICAgIGlmICggc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayhmbiwgb3B0aW9ucyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZuKTsKICAgICAgICB9LAogICAgICAgIG9mZklkbGUoaWQpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jYW5jZWxJZGxlQ2FsbGJhY2soaWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkKTsKICAgICAgICB9CiAgICB9OwogICAgc2NyaXB0bGV0R2xvYmFscy5zYWZlU2VsZiA9IHNhZmU7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuIHNhZmU7IH0KICAgIC8vIFRoaXMgaXMgZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBsb2dnZXIgaXMgb3BlbmVkCiAgICBzYWZlLmxvZ0xldmVsID0gc2NyaXB0bGV0R2xvYmFscy5sb2dMZXZlbCB8fCAxOwogICAgbGV0IGxhc3RMb2dUeXBlID0gJyc7CiAgICBsZXQgbGFzdExvZ1RleHQgPSAnJzsKICAgIGxldCBsYXN0TG9nVGltZSA9IDA7CiAgICBzYWZlLnRvTG9nVGV4dCA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgaWYgKCBhcmdzLmxlbmd0aCA9PT0gMCApIHsgcmV0dXJuOyB9CiAgICAgICAgY29uc3QgdGV4dCA9IGBbJHtkb2N1bWVudC5sb2NhdGlvbi5ob3N0bmFtZSB8fCBkb2N1bWVudC5sb2NhdGlvbi5ocmVmfV0ke2FyZ3Muam9pbignICcpfWA7CiAgICAgICAgaWYgKCB0ZXh0ID09PSBsYXN0TG9nVGV4dCAmJiB0eXBlID09PSBsYXN0TG9nVHlwZSApIHsKICAgICAgICAgICAgaWYgKCAoRGF0ZS5ub3coKSAtIGxhc3RMb2dUaW1lKSA8IDUwMDAgKSB7IHJldHVybjsgfQogICAgICAgIH0KICAgICAgICBsYXN0TG9nVHlwZSA9IHR5cGU7CiAgICAgICAgbGFzdExvZ1RleHQgPSB0ZXh0OwogICAgICAgIGxhc3RMb2dUaW1lID0gRGF0ZS5ub3coKTsKICAgICAgICByZXR1cm4gdGV4dDsKICAgIH07CiAgICB0cnkgewogICAgICAgIGNvbnN0IGJjID0gbmV3IHNlbGYuQnJvYWRjYXN0Q2hhbm5lbChzY3JpcHRsZXRHbG9iYWxzLmJjU2VjcmV0KTsKICAgICAgICBsZXQgYmNCdWZmZXIgPSBbXTsKICAgICAgICBzYWZlLnNlbmRUb0xvZ2dlciA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzYWZlLnRvTG9nVGV4dCh0eXBlLCAuLi5hcmdzKTsKICAgICAgICAgICAgaWYgKCB0ZXh0ID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYmMucG9zdE1lc3NhZ2UoeyB3aGF0OiAnbWVzc2FnZVRvTG9nZ2VyJywgdHlwZSwgdGV4dCB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBiY0J1ZmZlci5wdXNoKHsgdHlwZSwgdGV4dCB9KTsKICAgICAgICB9OwogICAgICAgIGJjLm9ubWVzc2FnZSA9IGV2ID0+IHsKICAgICAgICAgICAgY29uc3QgbXNnID0gZXYuZGF0YTsKICAgICAgICAgICAgc3dpdGNoICggbXNnICkgewogICAgICAgICAgICBjYXNlICdpYW1yZWFkeSEnOgogICAgICAgICAgICAgICAgaWYgKCBiY0J1ZmZlciA9PT0gdW5kZWZpbmVkICkgeyBicmVhazsgfQogICAgICAgICAgICAgICAgYmNCdWZmZXIuZm9yRWFjaCgoeyB0eXBlLCB0ZXh0IH0pID0+CiAgICAgICAgICAgICAgICAgICAgYmMucG9zdE1lc3NhZ2UoeyB3aGF0OiAnbWVzc2FnZVRvTG9nZ2VyJywgdHlwZSwgdGV4dCB9KQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGJjQnVmZmVyID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3NldFNjcmlwdGxldExvZ0xldmVsVG9PbmUnOgogICAgICAgICAgICAgICAgc2FmZS5sb2dMZXZlbCA9IDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb1R3byc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBiYy5wb3N0TWVzc2FnZSgnYXJleW91cmVhZHk/Jyk7CiAgICB9IGNhdGNoKF8pIHsKICAgICAgICBzYWZlLnNlbmRUb0xvZ2dlciA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzYWZlLnRvTG9nVGV4dCh0eXBlLCAuLi5hcmdzKTsKICAgICAgICAgICAgaWYgKCB0ZXh0ID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBzYWZlLmxvZyhgdUJPICR7dGV4dH1gKTsKICAgICAgICB9OwogICAgfQogICAgcmV0dXJuIHNhZmU7Cn0KZnVuY3Rpb24gcGFyc2VQcm9wZXJ0aWVzVG9NYXRjaChwcm9wc1RvTWF0Y2gsIGltcGxpY2l0ID0gJycpIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbmVlZGxlcyA9IG5ldyBNYXAoKTsKICAgIGlmICggcHJvcHNUb01hdGNoID09PSB1bmRlZmluZWQgfHwgcHJvcHNUb01hdGNoID09PSAnJyApIHsgcmV0dXJuIG5lZWRsZXM7IH0KICAgIGNvbnN0IG9wdGlvbnMgPSB7IGNhbk5lZ2F0ZTogdHJ1ZSB9OwogICAgZm9yICggY29uc3QgbmVlZGxlIG9mIHByb3BzVG9NYXRjaC5zcGxpdCgvXHMrLykgKSB7CiAgICAgICAgY29uc3QgWyBwcm9wLCBwYXR0ZXJuIF0gPSBuZWVkbGUuc3BsaXQoJzonKTsKICAgICAgICBpZiAoIHByb3AgPT09ICcnICkgeyBjb250aW51ZTsgfQogICAgICAgIGlmICggcGF0dGVybiAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICBuZWVkbGVzLnNldChwcm9wLCBzYWZlLmluaXRQYXR0ZXJuKHBhdHRlcm4sIG9wdGlvbnMpKTsKICAgICAgICB9IGVsc2UgaWYgKCBpbXBsaWNpdCAhPT0gJycgKSB7CiAgICAgICAgICAgIG5lZWRsZXMuc2V0KGltcGxpY2l0LCBzYWZlLmluaXRQYXR0ZXJuKHByb3AsIG9wdGlvbnMpKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gbmVlZGxlczsKfQpmdW5jdGlvbiBvYmplY3RQcnVuZUZuKAogICAgb2JqLAogICAgcmF3UHJ1bmVQYXRocywKICAgIHJhd05lZWRsZVBhdGhzLAogICAgc3RhY2tOZWVkbGVEZXRhaWxzID0geyBtYXRjaEFsbDogdHJ1ZSB9LAogICAgZXh0cmFBcmdzID0ge30KKSB7CiAgICBpZiAoIHR5cGVvZiByYXdQcnVuZVBhdGhzICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBwcnVuZVBhdGhzID0gcmF3UHJ1bmVQYXRocyAhPT0gJycKICAgICAgICA/IHJhd1BydW5lUGF0aHMuc3BsaXQoLyArLykKICAgICAgICA6IFtdOwogICAgY29uc3QgbmVlZGxlUGF0aHMgPSBwcnVuZVBhdGhzLmxlbmd0aCAhPT0gMCAmJiByYXdOZWVkbGVQYXRocyAhPT0gJycKICAgICAgICA/IHJhd05lZWRsZVBhdGhzLnNwbGl0KC8gKy8pCiAgICAgICAgOiBbXTsKICAgIGlmICggc3RhY2tOZWVkbGVEZXRhaWxzLm1hdGNoQWxsICE9PSB0cnVlICkgewogICAgICAgIGlmICggbWF0Y2hlc1N0YWNrVHJhY2Uoc3RhY2tOZWVkbGVEZXRhaWxzLCBleHRyYUFyZ3MubG9nc3RhY2spID09PSBmYWxzZSApIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGlmICggb2JqZWN0UHJ1bmVGbi5tdXN0UHJvY2VzcyA9PT0gdW5kZWZpbmVkICkgewogICAgICAgIG9iamVjdFBydW5lRm4ubXVzdFByb2Nlc3MgPSAocm9vdCwgbmVlZGxlUGF0aHMpID0+IHsKICAgICAgICAgICAgZm9yICggY29uc3QgbmVlZGxlUGF0aCBvZiBuZWVkbGVQYXRocyApIHsKICAgICAgICAgICAgICAgIGlmICggb2JqZWN0RmluZE93bmVyRm4ocm9vdCwgbmVlZGxlUGF0aCkgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9OwogICAgfQogICAgaWYgKCBwcnVuZVBhdGhzLmxlbmd0aCA9PT0gMCApIHsgcmV0dXJuOyB9CiAgICBsZXQgb3V0Y29tZSA9ICdub21hdGNoJzsKICAgIGlmICggb2JqZWN0UHJ1bmVGbi5tdXN0UHJvY2VzcyhvYmosIG5lZWRsZVBhdGhzKSApIHsKICAgICAgICBmb3IgKCBjb25zdCBwYXRoIG9mIHBydW5lUGF0aHMgKSB7CiAgICAgICAgICAgIGlmICggb2JqZWN0RmluZE93bmVyRm4ob2JqLCBwYXRoLCB0cnVlKSApIHsKICAgICAgICAgICAgICAgIG91dGNvbWUgPSAnbWF0Y2gnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYgKCBvdXRjb21lID09PSAnbWF0Y2gnICkgeyByZXR1cm4gb2JqOyB9Cn0KZnVuY3Rpb24gbWF0Y2hPYmplY3RQcm9wZXJ0aWVzKHByb3BOZWVkbGVzLCAuLi5vYmpzKSB7CiAgICBpZiAoIG1hdGNoT2JqZWN0UHJvcGVydGllcy5leHRyYWN0UHJvcGVydGllcyA9PT0gdW5kZWZpbmVkICkgewogICAgICAgIG1hdGNoT2JqZWN0UHJvcGVydGllcy5leHRyYWN0UHJvcGVydGllcyA9IChzcmMsIGRlcywgcHJvcHMpID0+IHsKICAgICAgICAgICAgZm9yICggY29uc3QgcCBvZiBwcm9wcyApIHsKICAgICAgICAgICAgICAgIGNvbnN0IHYgPSBzcmNbcF07CiAgICAgICAgICAgICAgICBpZiAoIHYgPT09IHVuZGVmaW5lZCApIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIGRlc1twXSA9IHNyY1twXTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGhheXN0YWNrID0ge307CiAgICBjb25zdCBwcm9wcyA9IHNhZmUuQXJyYXlfZnJvbShwcm9wTmVlZGxlcy5rZXlzKCkpOwogICAgZm9yICggY29uc3Qgb2JqIG9mIG9ianMgKSB7CiAgICAgICAgaWYgKCBvYmogaW5zdGFuY2VvZiBPYmplY3QgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgIG1hdGNoT2JqZWN0UHJvcGVydGllcy5leHRyYWN0UHJvcGVydGllcyhvYmosIGhheXN0YWNrLCBwcm9wcyk7CiAgICB9CiAgICBmb3IgKCBjb25zdCBbIHByb3AsIGRldGFpbHMgXSBvZiBwcm9wTmVlZGxlcyApIHsKICAgICAgICBsZXQgdmFsdWUgPSBoYXlzdGFja1twcm9wXTsKICAgICAgICBpZiAoIHZhbHVlID09PSB1bmRlZmluZWQgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnICkgewogICAgICAgICAgICB0cnkgeyB2YWx1ZSA9IHNhZmUuSlNPTl9zdHJpbmdpZnkodmFsdWUpOyB9CiAgICAgICAgICAgIGNhdGNoKGV4KSB7IH0KICAgICAgICAgICAgaWYgKCB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnICkgeyBjb250aW51ZTsgfQogICAgICAgIH0KICAgICAgICBpZiAoIHNhZmUudGVzdFBhdHRlcm4oZGV0YWlscywgdmFsdWUpICkgeyBjb250aW51ZTsgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHJldHVybiB0cnVlOwp9CgogIChmdW5jdGlvbiBqc29uUHJ1bmVYaHJSZXNwb25zZSgKICAgIHJhd1BydW5lUGF0aHMgPSAnJywKICAgIHJhd05lZWRsZVBhdGhzID0gJycKKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGxvZ1ByZWZpeCA9IHNhZmUubWFrZUxvZ1ByZWZpeCgnanNvbi1wcnVuZS14aHItcmVzcG9uc2UnLCByYXdQcnVuZVBhdGhzLCByYXdOZWVkbGVQYXRocyk7CiAgICBjb25zdCB4aHJJbnN0YW5jZXMgPSBuZXcgV2Vha01hcCgpOwogICAgY29uc3QgZXh0cmFBcmdzID0gc2FmZS5nZXRFeHRyYUFyZ3MoQXJyYXkuZnJvbShhcmd1bWVudHMpLCAyKTsKICAgIGNvbnN0IHByb3BOZWVkbGVzID0gcGFyc2VQcm9wZXJ0aWVzVG9NYXRjaChleHRyYUFyZ3MucHJvcHNUb01hdGNoLCAndXJsJyk7CiAgICBjb25zdCBzdGFja05lZWRsZSA9IHNhZmUuaW5pdFBhdHRlcm4oZXh0cmFBcmdzLnN0YWNrVG9NYXRjaCB8fCAnJywgeyBjYW5OZWdhdGU6IHRydWUgfSk7CiAgICBzZWxmLlhNTEh0dHBSZXF1ZXN0ID0gY2xhc3MgZXh0ZW5kcyBzZWxmLlhNTEh0dHBSZXF1ZXN0IHsKICAgICAgICBvcGVuKG1ldGhvZCwgdXJsLCAuLi5hcmdzKSB7CiAgICAgICAgICAgIGNvbnN0IHhockRldGFpbHMgPSB7IG1ldGhvZCwgdXJsIH07CiAgICAgICAgICAgIGxldCBvdXRjb21lID0gJ21hdGNoJzsKICAgICAgICAgICAgaWYgKCBwcm9wTmVlZGxlcy5zaXplICE9PSAwICkgewogICAgICAgICAgICAgICAgaWYgKCBtYXRjaE9iamVjdFByb3BlcnRpZXMocHJvcE5lZWRsZXMsIHhockRldGFpbHMpID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgICAgICBvdXRjb21lID0gJ25vbWF0Y2gnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3V0Y29tZSA9PT0gJ21hdGNoJyApIHsKICAgICAgICAgICAgICAgIGlmICggc2FmZS5sb2dMZXZlbCA+IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCBgTWF0Y2hlZCBvcHRpb25hbCAicHJvcHNUb01hdGNoIiwgIiR7ZXh0cmFBcmdzLnByb3BzVG9NYXRjaH0iYCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB4aHJJbnN0YW5jZXMuc2V0KHRoaXMsIHhockRldGFpbHMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzdXBlci5vcGVuKG1ldGhvZCwgdXJsLCAuLi5hcmdzKTsKICAgICAgICB9CiAgICAgICAgZ2V0IHJlc3BvbnNlKCkgewogICAgICAgICAgICBjb25zdCBpbm5lclJlc3BvbnNlID0gc3VwZXIucmVzcG9uc2U7CiAgICAgICAgICAgIGNvbnN0IHhockRldGFpbHMgPSB4aHJJbnN0YW5jZXMuZ2V0KHRoaXMpOwogICAgICAgICAgICBpZiAoIHhockRldGFpbHMgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBpbm5lclJlc3BvbnNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlTGVuZ3RoID0gdHlwZW9mIGlubmVyUmVzcG9uc2UgPT09ICdzdHJpbmcnCiAgICAgICAgICAgICAgICA/IGlubmVyUmVzcG9uc2UubGVuZ3RoCiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDsKICAgICAgICAgICAgaWYgKCB4aHJEZXRhaWxzLmxhc3RSZXNwb25zZUxlbmd0aCAhPT0gcmVzcG9uc2VMZW5ndGggKSB7CiAgICAgICAgICAgICAgICB4aHJEZXRhaWxzLnJlc3BvbnNlID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgeGhyRGV0YWlscy5sYXN0UmVzcG9uc2VMZW5ndGggPSByZXNwb25zZUxlbmd0aDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIHhockRldGFpbHMucmVzcG9uc2UgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiB4aHJEZXRhaWxzLnJlc3BvbnNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxldCBvYmpCZWZvcmU7CiAgICAgICAgICAgIGlmICggdHlwZW9mIGlubmVyUmVzcG9uc2UgPT09ICdvYmplY3QnICkgewogICAgICAgICAgICAgICAgb2JqQmVmb3JlID0gaW5uZXJSZXNwb25zZTsKICAgICAgICAgICAgfSBlbHNlIGlmICggdHlwZW9mIGlubmVyUmVzcG9uc2UgPT09ICdzdHJpbmcnICkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBvYmpCZWZvcmUgPSBzYWZlLkpTT05fcGFyc2UoaW5uZXJSZXNwb25zZSk7CiAgICAgICAgICAgICAgICB9IGNhdGNoKGV4KSB7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCB0eXBlb2Ygb2JqQmVmb3JlICE9PSAnb2JqZWN0JyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAoeGhyRGV0YWlscy5yZXNwb25zZSA9IGlubmVyUmVzcG9uc2UpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IG9iakFmdGVyID0gb2JqZWN0UHJ1bmVGbigKICAgICAgICAgICAgICAgIG9iakJlZm9yZSwKICAgICAgICAgICAgICAgIHJhd1BydW5lUGF0aHMsCiAgICAgICAgICAgICAgICByYXdOZWVkbGVQYXRocywKICAgICAgICAgICAgICAgIHN0YWNrTmVlZGxlLAogICAgICAgICAgICAgICAgZXh0cmFBcmdzCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGxldCBvdXRlclJlc3BvbnNlOwogICAgICAgICAgICBpZiAoIHR5cGVvZiBvYmpBZnRlciA9PT0gJ29iamVjdCcgKSB7CiAgICAgICAgICAgICAgICBvdXRlclJlc3BvbnNlID0gdHlwZW9mIGlubmVyUmVzcG9uc2UgPT09ICdzdHJpbmcnCiAgICAgICAgICAgICAgICAgICAgPyBzYWZlLkpTT05fc3RyaW5naWZ5KG9iakFmdGVyKQogICAgICAgICAgICAgICAgICAgIDogb2JqQWZ0ZXI7CiAgICAgICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsICdQcnVuZWQnKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG91dGVyUmVzcG9uc2UgPSBpbm5lclJlc3BvbnNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAoeGhyRGV0YWlscy5yZXNwb25zZSA9IG91dGVyUmVzcG9uc2UpOwogICAgICAgIH0KICAgICAgICBnZXQgcmVzcG9uc2VUZXh0KCkgewogICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHRoaXMucmVzcG9uc2U7CiAgICAgICAgICAgIHJldHVybiB0eXBlb2YgcmVzcG9uc2UgIT09ICdzdHJpbmcnCiAgICAgICAgICAgICAgICA/IHN1cGVyLnJlc3BvbnNlVGV4dAogICAgICAgICAgICAgICAgOiByZXNwb25zZTsKICAgICAgICB9CiAgICB9Owp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"evaldata-prune.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0UmFuZG9tVG9rZW4oKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIHJldHVybiBzYWZlLlN0cmluZ19mcm9tQ2hhckNvZGUoRGF0ZS5ub3coKSAlIDI2ICsgOTcpICsKICAgICAgICBzYWZlLk1hdGhfZmxvb3Ioc2FmZS5NYXRoX3JhbmRvbSgpICogOTgyNDUxNjUzICsgOTgyNDUxNjUzKS50b1N0cmluZygzNik7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBnZXRFeGNlcHRpb25Ub2tlbigpIHsKICAgIGNvbnN0IHRva2VuID0gZ2V0UmFuZG9tVG9rZW4oKTsKICAgIGNvbnN0IG9lID0gc2VsZi5vbmVycm9yOwogICAgc2VsZi5vbmVycm9yID0gZnVuY3Rpb24obXNnLCAuLi5hcmdzKSB7CiAgICAgICAgaWYgKCB0eXBlb2YgbXNnID09PSAnc3RyaW5nJyAmJiBtc2cuaW5jbHVkZXModG9rZW4pICkgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgIGlmICggb2UgaW5zdGFuY2VvZiBGdW5jdGlvbiApIHsKICAgICAgICAgICAgcmV0dXJuIG9lLmNhbGwodGhpcywgbXNnLCAuLi5hcmdzKTsKICAgICAgICB9CiAgICB9LmJpbmQoKTsKICAgIHJldHVybiB0b2tlbjsKfQpmdW5jdGlvbiBvYmplY3RGaW5kT3duZXJGbigKICAgIHJvb3QsCiAgICBwYXRoLAogICAgcHJ1bmUgPSBmYWxzZQopIHsKICAgIGxldCBvd25lciA9IHJvb3Q7CiAgICBsZXQgY2hhaW4gPSBwYXRoOwogICAgZm9yICg7OykgewogICAgICAgIGlmICggdHlwZW9mIG93bmVyICE9PSAnb2JqZWN0JyB8fCBvd25lciA9PT0gbnVsbCAgKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgIGNvbnN0IHBvcyA9IGNoYWluLmluZGV4T2YoJy4nKTsKICAgICAgICBpZiAoIHBvcyA9PT0gLTEgKSB7CiAgICAgICAgICAgIGlmICggcHJ1bmUgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIG93bmVyLmhhc093blByb3BlcnR5KGNoYWluKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgbW9kaWZpZWQgPSBmYWxzZTsKICAgICAgICAgICAgaWYgKCBjaGFpbiA9PT0gJyonICkgewogICAgICAgICAgICAgICAgZm9yICggY29uc3Qga2V5IGluIG93bmVyICkgewogICAgICAgICAgICAgICAgICAgIGlmICggb3duZXIuaGFzT3duUHJvcGVydHkoa2V5KSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG93bmVyW2tleV07CiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgaWYgKCBvd25lci5oYXNPd25Qcm9wZXJ0eShjaGFpbikgKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgb3duZXJbY2hhaW5dOwogICAgICAgICAgICAgICAgbW9kaWZpZWQgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBtb2RpZmllZDsKICAgICAgICB9CiAgICAgICAgY29uc3QgcHJvcCA9IGNoYWluLnNsaWNlKDAsIHBvcyk7CiAgICAgICAgY29uc3QgbmV4dCA9IGNoYWluLnNsaWNlKHBvcyArIDEpOwogICAgICAgIGxldCBmb3VuZCA9IGZhbHNlOwogICAgICAgIGlmICggcHJvcCA9PT0gJ1stXScgJiYgQXJyYXkuaXNBcnJheShvd25lcikgKSB7CiAgICAgICAgICAgIGxldCBpID0gb3duZXIubGVuZ3RoOwogICAgICAgICAgICB3aGlsZSAoIGktLSApIHsKICAgICAgICAgICAgICAgIGlmICggb2JqZWN0RmluZE93bmVyRm4ob3duZXJbaV0sIG5leHQpID09PSBmYWxzZSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIG93bmVyLnNwbGljZShpLCAxKTsKICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZm91bmQ7CiAgICAgICAgfQogICAgICAgIGlmICggcHJvcCA9PT0gJ3stfScgJiYgb3duZXIgaW5zdGFuY2VvZiBPYmplY3QgKSB7CiAgICAgICAgICAgIGZvciAoIGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvd25lcikgKSB7CiAgICAgICAgICAgICAgICBpZiAoIG9iamVjdEZpbmRPd25lckZuKG93bmVyW2tleV0sIG5leHQpID09PSBmYWxzZSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIGRlbGV0ZSBvd25lcltrZXldOwogICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmb3VuZDsKICAgICAgICB9CiAgICAgICAgaWYgKAogICAgICAgICAgICBwcm9wID09PSAnW10nICYmIEFycmF5LmlzQXJyYXkob3duZXIpIHx8CiAgICAgICAgICAgIHByb3AgPT09ICd7fScgJiYgb3duZXIgaW5zdGFuY2VvZiBPYmplY3QgfHwKICAgICAgICAgICAgcHJvcCA9PT0gJyonICYmIG93bmVyIGluc3RhbmNlb2YgT2JqZWN0CiAgICAgICAgKSB7CiAgICAgICAgICAgIGZvciAoIGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvd25lcikgKSB7CiAgICAgICAgICAgICAgICBpZiAob2JqZWN0RmluZE93bmVyRm4ob3duZXJba2V5XSwgbmV4dCwgcHJ1bmUpID09PSBmYWxzZSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZm91bmQ7CiAgICAgICAgfQogICAgICAgIGlmICggb3duZXIuaGFzT3duUHJvcGVydHkocHJvcCkgPT09IGZhbHNlICkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICBvd25lciA9IG93bmVyW3Byb3BdOwogICAgICAgIGNoYWluID0gY2hhaW4uc2xpY2UocG9zICsgMSk7CiAgICB9Cn0KZnVuY3Rpb24gbWF0Y2hlc1N0YWNrVHJhY2UoCiAgICBuZWVkbGVEZXRhaWxzLAogICAgbG9nTGV2ZWwgPSAnJwopIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgZXhjZXB0aW9uVG9rZW4gPSBnZXRFeGNlcHRpb25Ub2tlbigpOwogICAgY29uc3QgZXJyb3IgPSBuZXcgc2FmZS5FcnJvcihleGNlcHRpb25Ub2tlbik7CiAgICBjb25zdCBkb2NVUkwgPSBuZXcgVVJMKHNlbGYubG9jYXRpb24uaHJlZik7CiAgICBkb2NVUkwuaGFzaCA9ICcnOwogICAgLy8gTm9ybWFsaXplIHN0YWNrIHRyYWNlCiAgICBjb25zdCByZUxpbmUgPSAvKC4qP0ApPyhcUyspKDpcZCspOlxkK1wpPyQvOwogICAgY29uc3QgbGluZXMgPSBbXTsKICAgIGZvciAoIGxldCBsaW5lIG9mIGVycm9yLnN0YWNrLnNwbGl0KC9bXG5ccl0rLykgKSB7CiAgICAgICAgaWYgKCBsaW5lLmluY2x1ZGVzKGV4Y2VwdGlvblRva2VuKSApIHsgY29udGludWU7IH0KICAgICAgICBsaW5lID0gbGluZS50cmltKCk7CiAgICAgICAgY29uc3QgbWF0Y2ggPSBzYWZlLlJlZ0V4cF9leGVjLmNhbGwocmVMaW5lLCBsaW5lKTsKICAgICAgICBpZiAoIG1hdGNoID09PSBudWxsICkgeyBjb250aW51ZTsgfQogICAgICAgIGxldCB1cmwgPSBtYXRjaFsyXTsKICAgICAgICBpZiAoIHVybC5zdGFydHNXaXRoKCcoJykgKSB7IHVybCA9IHVybC5zbGljZSgxKTsgfQogICAgICAgIGlmICggdXJsID09PSBkb2NVUkwuaHJlZiApIHsKICAgICAgICAgICAgdXJsID0gJ2lubGluZVNjcmlwdCc7CiAgICAgICAgfSBlbHNlIGlmICggdXJsLnN0YXJ0c1dpdGgoJzxhbm9ueW1vdXM+JykgKSB7CiAgICAgICAgICAgIHVybCA9ICdpbmplY3RlZFNjcmlwdCc7CiAgICAgICAgfQogICAgICAgIGxldCBmbiA9IG1hdGNoWzFdICE9PSB1bmRlZmluZWQKICAgICAgICAgICAgPyBtYXRjaFsxXS5zbGljZSgwLCAtMSkKICAgICAgICAgICAgOiBsaW5lLnNsaWNlKDAsIG1hdGNoLmluZGV4KS50cmltKCk7CiAgICAgICAgaWYgKCBmbi5zdGFydHNXaXRoKCdhdCcpICkgeyBmbiA9IGZuLnNsaWNlKDIpLnRyaW0oKTsgfQogICAgICAgIGxldCByb3djb2wgPSBtYXRjaFszXTsKICAgICAgICBsaW5lcy5wdXNoKCcgJyArIGAke2ZufSAke3VybH0ke3Jvd2NvbH06MWAudHJpbSgpKTsKICAgIH0KICAgIGxpbmVzWzBdID0gYHN0YWNrRGVwdGg6JHtsaW5lcy5sZW5ndGgtMX1gOwogICAgY29uc3Qgc3RhY2sgPSBsaW5lcy5qb2luKCdcdCcpOwogICAgY29uc3QgciA9IG5lZWRsZURldGFpbHMubWF0Y2hBbGwgIT09IHRydWUgJiYKICAgICAgICBzYWZlLnRlc3RQYXR0ZXJuKG5lZWRsZURldGFpbHMsIHN0YWNrKTsKICAgIGlmICgKICAgICAgICBsb2dMZXZlbCA9PT0gJ2FsbCcgfHwKICAgICAgICBsb2dMZXZlbCA9PT0gJ21hdGNoJyAmJiByIHx8CiAgICAgICAgbG9nTGV2ZWwgPT09ICdub21hdGNoJyAmJiAhcgogICAgKSB7CiAgICAgICAgc2FmZS51Ym9Mb2coc3RhY2sucmVwbGFjZSgvXHQvZywgJ1xuJykpOwogICAgfQogICAgcmV0dXJuIHI7Cn0KZnVuY3Rpb24gb2JqZWN0UHJ1bmVGbigKICAgIG9iaiwKICAgIHJhd1BydW5lUGF0aHMsCiAgICByYXdOZWVkbGVQYXRocywKICAgIHN0YWNrTmVlZGxlRGV0YWlscyA9IHsgbWF0Y2hBbGw6IHRydWUgfSwKICAgIGV4dHJhQXJncyA9IHt9CikgewogICAgaWYgKCB0eXBlb2YgcmF3UHJ1bmVQYXRocyAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgY29uc3QgcHJ1bmVQYXRocyA9IHJhd1BydW5lUGF0aHMgIT09ICcnCiAgICAgICAgPyByYXdQcnVuZVBhdGhzLnNwbGl0KC8gKy8pCiAgICAgICAgOiBbXTsKICAgIGNvbnN0IG5lZWRsZVBhdGhzID0gcHJ1bmVQYXRocy5sZW5ndGggIT09IDAgJiYgcmF3TmVlZGxlUGF0aHMgIT09ICcnCiAgICAgICAgPyByYXdOZWVkbGVQYXRocy5zcGxpdCgvICsvKQogICAgICAgIDogW107CiAgICBpZiAoIHN0YWNrTmVlZGxlRGV0YWlscy5tYXRjaEFsbCAhPT0gdHJ1ZSApIHsKICAgICAgICBpZiAoIG1hdGNoZXNTdGFja1RyYWNlKHN0YWNrTmVlZGxlRGV0YWlscywgZXh0cmFBcmdzLmxvZ3N0YWNrKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBpZiAoIG9iamVjdFBydW5lRm4ubXVzdFByb2Nlc3MgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICBvYmplY3RQcnVuZUZuLm11c3RQcm9jZXNzID0gKHJvb3QsIG5lZWRsZVBhdGhzKSA9PiB7CiAgICAgICAgICAgIGZvciAoIGNvbnN0IG5lZWRsZVBhdGggb2YgbmVlZGxlUGF0aHMgKSB7CiAgICAgICAgICAgICAgICBpZiAoIG9iamVjdEZpbmRPd25lckZuKHJvb3QsIG5lZWRsZVBhdGgpID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfTsKICAgIH0KICAgIGlmICggcHJ1bmVQYXRocy5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQogICAgbGV0IG91dGNvbWUgPSAnbm9tYXRjaCc7CiAgICBpZiAoIG9iamVjdFBydW5lRm4ubXVzdFByb2Nlc3Mob2JqLCBuZWVkbGVQYXRocykgKSB7CiAgICAgICAgZm9yICggY29uc3QgcGF0aCBvZiBwcnVuZVBhdGhzICkgewogICAgICAgICAgICBpZiAoIG9iamVjdEZpbmRPd25lckZuKG9iaiwgcGF0aCwgdHJ1ZSkgKSB7CiAgICAgICAgICAgICAgICBvdXRjb21lID0gJ21hdGNoJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmICggb3V0Y29tZSA9PT0gJ21hdGNoJyApIHsgcmV0dXJuIG9iajsgfQp9CgogIChmdW5jdGlvbiBldmFsZGF0YVBydW5lKAogICAgcmF3UHJ1bmVQYXRocyA9ICcnLAogICAgcmF3TmVlZGxlUGF0aHMgPSAnJwopIHsKICAgIHNlbGYuZXZhbCA9IG5ldyBQcm94eShzZWxmLmV2YWwsIHsKICAgICAgICBhcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpIHsKICAgICAgICAgICAgY29uc3QgYmVmb3JlID0gUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpOwogICAgICAgICAgICBpZiAoIHR5cGVvZiBiZWZvcmUgPT09ICdvYmplY3QnICkgewogICAgICAgICAgICAgICAgY29uc3QgYWZ0ZXIgPSBvYmplY3RQcnVuZUZuKGJlZm9yZSwgcmF3UHJ1bmVQYXRocywgcmF3TmVlZGxlUGF0aHMpOwogICAgICAgICAgICAgICAgcmV0dXJuIGFmdGVyIHx8IGJlZm9yZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gYmVmb3JlOwogICAgICAgIH0KICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"adjust-setInterval.js","aliases":["nano-setInterval-booster.js","nano-sib.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24gYWRqdXN0U2V0SW50ZXJ2YWwoCiAgICBuZWVkbGVBcmcgPSAnJywKICAgIGRlbGF5QXJnID0gJycsCiAgICBib29zdEFyZyA9ICcnCikgewogICAgaWYgKCB0eXBlb2YgbmVlZGxlQXJnICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IHJlTmVlZGxlID0gc2FmZS5wYXR0ZXJuVG9SZWdleChuZWVkbGVBcmcpOwogICAgbGV0IGRlbGF5ID0gZGVsYXlBcmcgIT09ICcqJyA/IHBhcnNlSW50KGRlbGF5QXJnLCAxMCkgOiAtMTsKICAgIGlmICggaXNOYU4oZGVsYXkpIHx8IGlzRmluaXRlKGRlbGF5KSA9PT0gZmFsc2UgKSB7IGRlbGF5ID0gMTAwMDsgfQogICAgbGV0IGJvb3N0ID0gcGFyc2VGbG9hdChib29zdEFyZyk7CiAgICBib29zdCA9IGlzTmFOKGJvb3N0KSA9PT0gZmFsc2UgJiYgaXNGaW5pdGUoYm9vc3QpCiAgICAgICAgPyBNYXRoLm1pbihNYXRoLm1heChib29zdCwgMC4wMDEpLCA1MCkKICAgICAgICA6IDAuMDU7CiAgICBzZWxmLnNldEludGVydmFsID0gbmV3IFByb3h5KHNlbGYuc2V0SW50ZXJ2YWwsIHsKICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgIGNvbnN0IFsgYSwgYiBdID0gYXJnczsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgKGRlbGF5ID09PSAtMSB8fCBiID09PSBkZWxheSkgJiYKICAgICAgICAgICAgICAgIHJlTmVlZGxlLnRlc3QoYS50b1N0cmluZygpKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIGFyZ3NbMV0gPSBiICogYm9vc3Q7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5hcHBseSh0aGlzQXJnLCBhcmdzKTsKICAgICAgICB9CiAgICB9KTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"adjust-setTimeout.js","aliases":["nano-setTimeout-booster.js","nano-stb.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24gYWRqdXN0U2V0VGltZW91dCgKICAgIG5lZWRsZUFyZyA9ICcnLAogICAgZGVsYXlBcmcgPSAnJywKICAgIGJvb3N0QXJnID0gJycKKSB7CiAgICBpZiAoIHR5cGVvZiBuZWVkbGVBcmcgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgcmVOZWVkbGUgPSBzYWZlLnBhdHRlcm5Ub1JlZ2V4KG5lZWRsZUFyZyk7CiAgICBsZXQgZGVsYXkgPSBkZWxheUFyZyAhPT0gJyonID8gcGFyc2VJbnQoZGVsYXlBcmcsIDEwKSA6IC0xOwogICAgaWYgKCBpc05hTihkZWxheSkgfHwgaXNGaW5pdGUoZGVsYXkpID09PSBmYWxzZSApIHsgZGVsYXkgPSAxMDAwOyB9CiAgICBsZXQgYm9vc3QgPSBwYXJzZUZsb2F0KGJvb3N0QXJnKTsKICAgIGJvb3N0ID0gaXNOYU4oYm9vc3QpID09PSBmYWxzZSAmJiBpc0Zpbml0ZShib29zdCkKICAgICAgICA/IE1hdGgubWluKE1hdGgubWF4KGJvb3N0LCAwLjAwMSksIDUwKQogICAgICAgIDogMC4wNTsKICAgIHNlbGYuc2V0VGltZW91dCA9IG5ldyBQcm94eShzZWxmLnNldFRpbWVvdXQsIHsKICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgIGNvbnN0IFsgYSwgYiBdID0gYXJnczsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgKGRlbGF5ID09PSAtMSB8fCBiID09PSBkZWxheSkgJiYKICAgICAgICAgICAgICAgIHJlTmVlZGxlLnRlc3QoYS50b1N0cmluZygpKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIGFyZ3NbMV0gPSBiICogYm9vc3Q7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRhcmdldC5hcHBseSh0aGlzQXJnLCBhcmdzKTsKICAgICAgICB9CiAgICB9KTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"noeval-if.js","aliases":["prevent-eval-if.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24gbm9FdmFsSWYoCiAgICBuZWVkbGUgPSAnJwopIHsKICAgIGlmICggdHlwZW9mIG5lZWRsZSAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBsb2dQcmVmaXggPSBzYWZlLm1ha2VMb2dQcmVmaXgoJ25vZXZhbC1pZicsIG5lZWRsZSk7CiAgICBjb25zdCByZU5lZWRsZSA9IHNhZmUucGF0dGVyblRvUmVnZXgobmVlZGxlKTsKICAgIHdpbmRvdy5ldmFsID0gbmV3IFByb3h5KHdpbmRvdy5ldmFsLCB7ICAvLyBqc2hpbnQgaWdub3JlOiBsaW5lCiAgICAgICAgYXBwbHk6IGZ1bmN0aW9uKHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICBjb25zdCBhID0gU3RyaW5nKGFyZ3NbMF0pOwogICAgICAgICAgICBpZiAoIG5lZWRsZSAhPT0gJycgJiYgcmVOZWVkbGUudGVzdChhKSApIHsKICAgICAgICAgICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgJ1ByZXZlbnRlZDpcbicsIGEpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggbmVlZGxlID09PSAnJyB8fCBzYWZlLmxvZ0xldmVsID4gMSApIHsKICAgICAgICAgICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgJ05vdCBwcmV2ZW50ZWQ6XG4nLCBhKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpOwogICAgICAgIH0KICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"prevent-fetch.js","aliases":["no-fetch-if.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBwcm94eUFwcGx5Rm4oCiAgICB0YXJnZXQgPSAnJywKICAgIGhhbmRsZXIgPSAnJwopIHsKICAgIGxldCBjb250ZXh0ID0gZ2xvYmFsVGhpczsKICAgIGxldCBwcm9wID0gdGFyZ2V0OwogICAgZm9yICg7OykgewogICAgICAgIGNvbnN0IHBvcyA9IHByb3AuaW5kZXhPZignLicpOwogICAgICAgIGlmICggcG9zID09PSAtMSApIHsgYnJlYWs7IH0KICAgICAgICBjb250ZXh0ID0gY29udGV4dFtwcm9wLnNsaWNlKDAsIHBvcyldOwogICAgICAgIGlmICggY29udGV4dCBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIHByb3AgPSBwcm9wLnNsaWNlKHBvcysxKTsKICAgIH0KICAgIGNvbnN0IGZuID0gY29udGV4dFtwcm9wXTsKICAgIGlmICggdHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nICkgeyByZXR1cm47IH0KICAgIGlmICggcHJveHlBcHBseUZuLkN0b3JDb250ZXh0ID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dCA9IGNsYXNzIHsKICAgICAgICAgICAgY29uc3RydWN0b3IoLi4uYXJncykgewogICAgICAgICAgICAgICAgdGhpcy5pbml0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGluaXQoY2FsbEZuLCBjYWxsQXJncykgewogICAgICAgICAgICAgICAgdGhpcy5jYWxsRm4gPSBjYWxsRm47CiAgICAgICAgICAgICAgICB0aGlzLmNhbGxBcmdzID0gY2FsbEFyZ3M7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgICAgfQogICAgICAgICAgICByZWZsZWN0KCkgewogICAgICAgICAgICAgICAgY29uc3QgciA9IFJlZmxlY3QuY29uc3RydWN0KHRoaXMuY2FsbEZuLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5jdG9yQ29udGV4dHMucHVzaCh0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN0YXRpYyBmYWN0b3J5KC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwcm94eUFwcGx5Rm4uY3RvckNvbnRleHRzLmxlbmd0aCAhPT0gMAogICAgICAgICAgICAgICAgICAgID8gcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkN0b3JDb250ZXh0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5BcHBseUNvbnRleHQgPSBjbGFzcyB7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuaW5pdCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbml0KGNhbGxGbiwgdGhpc0FyZywgY2FsbEFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gY2FsbEZuOwogICAgICAgICAgICAgICAgdGhpcy50aGlzQXJnID0gdGhpc0FyZzsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEFyZ3MgPSBjYWxsQXJnczsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlZmxlY3QoKSB7CiAgICAgICAgICAgICAgICBjb25zdCByID0gUmVmbGVjdC5hcHBseSh0aGlzLmNhbGxGbiwgdGhpcy50aGlzQXJnLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy50aGlzQXJnID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5hcHBseUNvbnRleHRzLnB1c2godGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGF0aWMgZmFjdG9yeSguLi5hcmdzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcHJveHlBcHBseUZuLmFwcGx5Q29udGV4dHMubGVuZ3RoICE9PSAwCiAgICAgICAgICAgICAgICAgICAgPyBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkFwcGx5Q29udGV4dCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBmblN0ciA9IGZuLnRvU3RyaW5nKCk7CiAgICBjb25zdCB0b1N0cmluZyA9IChmdW5jdGlvbiB0b1N0cmluZygpIHsgcmV0dXJuIGZuU3RyOyB9KS5iaW5kKG51bGwpOwogICAgY29uc3QgcHJveHlEZXRhaWxzID0gewogICAgICAgIGFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICByZXR1cm4gaGFuZGxlcihwcm94eUFwcGx5Rm4uQXBwbHlDb250ZXh0LmZhY3RvcnkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSk7CiAgICAgICAgfSwKICAgICAgICBnZXQodGFyZ2V0LCBwcm9wKSB7CiAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ3RvU3RyaW5nJyApIHsgcmV0dXJuIHRvU3RyaW5nOyB9CiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3ApOwogICAgICAgIH0sCiAgICB9OwogICAgaWYgKCBmbi5wcm90b3R5cGU/LmNvbnN0cnVjdG9yID09PSBmbiApIHsKICAgICAgICBwcm94eURldGFpbHMuY29uc3RydWN0ID0gZnVuY3Rpb24odGFyZ2V0LCBhcmdzKSB7CiAgICAgICAgICAgIHJldHVybiBoYW5kbGVyKHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dC5mYWN0b3J5KHRhcmdldCwgYXJncykpOwogICAgICAgIH07CiAgICB9CiAgICBjb250ZXh0W3Byb3BdID0gbmV3IFByb3h5KGZuLCBwcm94eURldGFpbHMpOwp9CmZ1bmN0aW9uIGdlbmVyYXRlQ29udGVudEZuKHRydXN0ZWQsIGRpcmVjdGl2ZSkgewogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCByYW5kb21pemUgPSBsZW4gPT4gewogICAgICAgIGNvbnN0IGNodW5rcyA9IFtdOwogICAgICAgIGxldCB0ZXh0U2l6ZSA9IDA7CiAgICAgICAgZG8gewogICAgICAgICAgICBjb25zdCBzID0gc2FmZS5NYXRoX3JhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTsKICAgICAgICAgICAgY2h1bmtzLnB1c2gocyk7CiAgICAgICAgICAgIHRleHRTaXplICs9IHMubGVuZ3RoOwogICAgICAgIH0KICAgICAgICB3aGlsZSAoIHRleHRTaXplIDwgbGVuICk7CiAgICAgICAgcmV0dXJuIGNodW5rcy5qb2luKCcgJykuc2xpY2UoMCwgbGVuKTsKICAgIH07CiAgICBpZiAoIGRpcmVjdGl2ZSA9PT0gJ3RydWUnICkgewogICAgICAgIHJldHVybiByYW5kb21pemUoMTApOwogICAgfQogICAgaWYgKCBkaXJlY3RpdmUgPT09ICdlbXB0eU9iaicgKSB7CiAgICAgICAgcmV0dXJuICd7fSc7CiAgICB9CiAgICBpZiAoIGRpcmVjdGl2ZSA9PT0gJ2VtcHR5QXJyJyApIHsKICAgICAgICByZXR1cm4gJ1tdJzsKICAgIH0KICAgIGlmICggZGlyZWN0aXZlID09PSAnZW1wdHlTdHInICkgewogICAgICAgIHJldHVybiAnJzsKICAgIH0KICAgIGlmICggZGlyZWN0aXZlLnN0YXJ0c1dpdGgoJ2xlbmd0aDonKSApIHsKICAgICAgICBjb25zdCBtYXRjaCA9IC9ebGVuZ3RoOihcZCspKD86LShcZCspKT8kLy5leGVjKGRpcmVjdGl2ZSk7CiAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsgcmV0dXJuICcnOyB9CiAgICAgICAgY29uc3QgbWluID0gcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTsKICAgICAgICBjb25zdCBleHRlbnQgPSBzYWZlLk1hdGhfbWF4KHBhcnNlSW50KG1hdGNoWzJdLCAxMCkgfHwgMCwgbWluKSAtIG1pbjsKICAgICAgICBjb25zdCBsZW4gPSBzYWZlLk1hdGhfbWluKG1pbiArIGV4dGVudCAqIHNhZmUuTWF0aF9yYW5kb20oKSwgNTAwMDAwKTsKICAgICAgICByZXR1cm4gcmFuZG9taXplKGxlbiB8IDApOwogICAgfQogICAgaWYgKCBkaXJlY3RpdmUuc3RhcnRzV2l0aCgnd2FyOicpICkgewogICAgICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy53YXJPcmlnaW4gPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuICcnOyB9CiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewogICAgICAgICAgICBjb25zdCB3YXJPcmlnaW4gPSBzY3JpcHRsZXRHbG9iYWxzLndhck9yaWdpbjsKICAgICAgICAgICAgY29uc3Qgd2FyTmFtZSA9IGRpcmVjdGl2ZS5zbGljZSg0KTsKICAgICAgICAgICAgY29uc3QgZnVsbHBhdGggPSBbIHdhck9yaWdpbiwgJy8nLCB3YXJOYW1lIF07CiAgICAgICAgICAgIGNvbnN0IHdhclNlY3JldCA9IHNjcmlwdGxldEdsb2JhbHMud2FyU2VjcmV0OwogICAgICAgICAgICBpZiAoIHdhclNlY3JldCAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgZnVsbHBhdGgucHVzaCgnP3NlY3JldD0nLCB3YXJTZWNyZXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IHdhclhIUiA9IG5ldyBzYWZlLlhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgICAgIHdhclhIUi5yZXNwb25zZVR5cGUgPSAndGV4dCc7CiAgICAgICAgICAgIHdhclhIUi5vbmxvYWRlbmQgPSBldiA9PiB7CiAgICAgICAgICAgICAgICByZXNvbHZlKGV2LnRhcmdldC5yZXNwb25zZVRleHQgfHwgJycpOwogICAgICAgICAgICB9OwogICAgICAgICAgICB3YXJYSFIub3BlbignR0VUJywgZnVsbHBhdGguam9pbignJykpOwogICAgICAgICAgICB3YXJYSFIuc2VuZCgpOwogICAgICAgIH0pLmNhdGNoKCggKSA9PiAnJyk7CiAgICB9CiAgICBpZiAoIHRydXN0ZWQgKSB7CiAgICAgICAgcmV0dXJuIGRpcmVjdGl2ZTsKICAgIH0KICAgIHJldHVybiAnJzsKfQoKICAoZnVuY3Rpb24gbm9GZXRjaElmKAogICAgcHJvcHNUb01hdGNoID0gJycsCiAgICByZXNwb25zZUJvZHkgPSAnJywKICAgIHJlc3BvbnNlVHlwZSA9ICcnCikgewogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBsb2dQcmVmaXggPSBzYWZlLm1ha2VMb2dQcmVmaXgoJ3ByZXZlbnQtZmV0Y2gnLCBwcm9wc1RvTWF0Y2gsIHJlc3BvbnNlQm9keSwgcmVzcG9uc2VUeXBlKTsKICAgIGNvbnN0IG5lZWRsZXMgPSBbXTsKICAgIGZvciAoIGNvbnN0IGNvbmRpdGlvbiBvZiBwcm9wc1RvTWF0Y2guc3BsaXQoL1xzKy8pICkgewogICAgICAgIGlmICggY29uZGl0aW9uID09PSAnJyApIHsgY29udGludWU7IH0KICAgICAgICBjb25zdCBwb3MgPSBjb25kaXRpb24uaW5kZXhPZignOicpOwogICAgICAgIGxldCBrZXksIHZhbHVlOwogICAgICAgIGlmICggcG9zICE9PSAtMSApIHsKICAgICAgICAgICAga2V5ID0gY29uZGl0aW9uLnNsaWNlKDAsIHBvcyk7CiAgICAgICAgICAgIHZhbHVlID0gY29uZGl0aW9uLnNsaWNlKHBvcyArIDEpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGtleSA9ICd1cmwnOwogICAgICAgICAgICB2YWx1ZSA9IGNvbmRpdGlvbjsKICAgICAgICB9CiAgICAgICAgbmVlZGxlcy5wdXNoKHsga2V5LCBwYXR0ZXJuOiBzYWZlLmluaXRQYXR0ZXJuKHZhbHVlLCB7IGNhbk5lZ2F0ZTogdHJ1ZSB9KSB9KTsKICAgIH0KICAgIGNvbnN0IHZhbGlkUmVzcG9uc2VQcm9wcyA9IHsKICAgICAgICBvazogWyBmYWxzZSwgdHJ1ZSBdLAogICAgICAgIHN0YXR1c1RleHQ6IFsgJycsICdOb3QgRm91bmQnIF0sCiAgICAgICAgdHlwZTogWyAnYmFzaWMnLCAnY29ycycsICdkZWZhdWx0JywgJ2Vycm9yJywgJ29wYXF1ZScgXSwKICAgIH07CiAgICBjb25zdCByZXNwb25zZVByb3BzID0gewogICAgICAgIHN0YXR1c1RleHQ6IHsgdmFsdWU6ICdPSycgfSwKICAgIH07CiAgICBpZiAoIC9eXHsuKlx9JC8udGVzdChyZXNwb25zZVR5cGUpICkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKEpTT04ucGFyc2UocmVzcG9uc2VUeXBlKSkuZm9yRWFjaCgoWyBwLCB2IF0pID0+IHsKICAgICAgICAgICAgICAgIGlmICggdmFsaWRSZXNwb25zZVByb3BzW3BdID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICAgICAgaWYgKCB2YWxpZFJlc3BvbnNlUHJvcHNbcF0uaW5jbHVkZXModikgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICAgICAgICAgIHJlc3BvbnNlUHJvcHNbcF0gPSB7IHZhbHVlOiB2IH07CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBjYXRjaChleCkge30KICAgIH0gZWxzZSBpZiAoIHJlc3BvbnNlVHlwZSAhPT0gJycgKSB7CiAgICAgICAgaWYgKCB2YWxpZFJlc3BvbnNlUHJvcHMudHlwZS5pbmNsdWRlcyhyZXNwb25zZVR5cGUpICkgewogICAgICAgICAgICByZXNwb25zZVByb3BzLnR5cGUgPSB7IHZhbHVlOiByZXNwb25zZVR5cGUgfTsKICAgICAgICB9CiAgICB9CiAgICBwcm94eUFwcGx5Rm4oJ2ZldGNoJywgZnVuY3Rpb24gZmV0Y2goY29udGV4dCkgewogICAgICAgIGNvbnN0IHsgY2FsbEFyZ3MgfSA9IGNvbnRleHQ7CiAgICAgICAgY29uc3QgZGV0YWlscyA9IGNhbGxBcmdzWzBdIGluc3RhbmNlb2Ygc2VsZi5SZXF1ZXN0CiAgICAgICAgICAgID8gY2FsbEFyZ3NbMF0KICAgICAgICAgICAgOiBPYmplY3QuYXNzaWduKHsgdXJsOiBjYWxsQXJnc1swXSB9LCBjYWxsQXJnc1sxXSk7CiAgICAgICAgbGV0IHByb2NlZWQgPSB0cnVlOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGNvbnN0IHByb3BzID0gbmV3IE1hcCgpOwogICAgICAgICAgICBmb3IgKCBjb25zdCBwcm9wIGluIGRldGFpbHMgKSB7CiAgICAgICAgICAgICAgICBsZXQgdiA9IGRldGFpbHNbcHJvcF07CiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiB2ICE9PSAnc3RyaW5nJyApIHsKICAgICAgICAgICAgICAgICAgICB0cnkgeyB2ID0gc2FmZS5KU09OX3N0cmluZ2lmeSh2KTsgfQogICAgICAgICAgICAgICAgICAgIGNhdGNoKGV4KSB7IH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHYgIT09ICdzdHJpbmcnICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgcHJvcHMuc2V0KHByb3AsIHYpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggc2FmZS5sb2dMZXZlbCA+IDEgfHwgcHJvcHNUb01hdGNoID09PSAnJyAmJiByZXNwb25zZUJvZHkgPT09ICcnICkgewogICAgICAgICAgICAgICAgY29uc3Qgb3V0ID0gQXJyYXkuZnJvbShwcm9wcykubWFwKGEgPT4gYCR7YVswXX06JHthWzFdfWApOwogICAgICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCBgQ2FsbGVkOiAke291dC5qb2luKCdcbicpfWApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggcHJvcHNUb01hdGNoID09PSAnJyAmJiByZXNwb25zZUJvZHkgPT09ICcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQucmVmbGVjdCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHByb2NlZWQgPSBuZWVkbGVzLmxlbmd0aCA9PT0gMDsKICAgICAgICAgICAgZm9yICggY29uc3QgeyBrZXksIHBhdHRlcm4gfSBvZiBuZWVkbGVzICkgewogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIHBhdHRlcm4uZXhwZWN0ICYmIHByb3BzLmhhcyhrZXkpID09PSBmYWxzZSB8fAogICAgICAgICAgICAgICAgICAgIHNhZmUudGVzdFBhdHRlcm4ocGF0dGVybiwgcHJvcHMuZ2V0KGtleSkpID09PSBmYWxzZQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgcHJvY2VlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoKGV4KSB7CiAgICAgICAgfQogICAgICAgIGlmICggcHJvY2VlZCApIHsKICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQucmVmbGVjdCgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGdlbmVyYXRlQ29udGVudEZuKGZhbHNlLCByZXNwb25zZUJvZHkpKS50aGVuKHRleHQgPT4gewogICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBQcmV2ZW50ZWQgd2l0aCByZXNwb25zZSAiJHt0ZXh0fSJgKTsKICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UodGV4dCwgewogICAgICAgICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAgICAgICAgICdDb250ZW50LUxlbmd0aCc6IHRleHQubGVuZ3RoLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgY29uc3QgcHJvcHMgPSBPYmplY3QuYXNzaWduKAogICAgICAgICAgICAgICAgeyB1cmw6IHsgdmFsdWU6IGRldGFpbHMudXJsIH0gfSwKICAgICAgICAgICAgICAgIHJlc3BvbnNlUHJvcHMKICAgICAgICAgICAgKTsKICAgICAgICAgICAgc2FmZS5PYmplY3RfZGVmaW5lUHJvcGVydGllcyhyZXNwb25zZSwgcHJvcHMpOwogICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7CiAgICAgICAgfSk7CiAgICB9KTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"prevent-refresh.js","aliases":["refresh-defuser.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24gcHJldmVudFJlZnJlc2goCiAgICBkZWxheSA9ICcnCikgewogICAgaWYgKCB0eXBlb2YgZGVsYXkgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbG9nUHJlZml4ID0gc2FmZS5tYWtlTG9nUHJlZml4KCdwcmV2ZW50LXJlZnJlc2gnLCBkZWxheSk7CiAgICBjb25zdCBzdG9wID0gY29udGVudCA9PiB7CiAgICAgICAgd2luZG93LnN0b3AoKTsKICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBQcmV2ZW50ZWQgIiR7Y29udGVudH0iYCk7CiAgICB9OwogICAgY29uc3QgZGVmdXNlID0gKCApID0+IHsKICAgICAgICBjb25zdCBtZXRhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbWV0YVtodHRwLWVxdWl2PSJyZWZyZXNoIiBpXVtjb250ZW50XScpOwogICAgICAgIGlmICggbWV0YSA9PT0gbnVsbCApIHsgcmV0dXJuOyB9CiAgICAgICAgY29uc3QgY29udGVudCA9IG1ldGEuZ2V0QXR0cmlidXRlKCdjb250ZW50JykgfHwgJyc7CiAgICAgICAgY29uc3QgbXMgPSBkZWxheSA9PT0gJycKICAgICAgICAgICAgPyBNYXRoLm1heChwYXJzZUZsb2F0KGNvbnRlbnQpIHx8IDAsIDApICogNTAwCiAgICAgICAgICAgIDogMDsKICAgICAgICBpZiAoIG1zID09PSAwICkgewogICAgICAgICAgICBzdG9wKGNvbnRlbnQpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNldFRpbWVvdXQoKCApID0+IHsgc3RvcChjb250ZW50KTsgfSwgbXMpOwogICAgICAgIH0KICAgIH07CiAgICBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBkZWZ1c2UsIHsgY2FwdHVyZTogdHJ1ZSwgb25jZTogdHJ1ZSB9KTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"remove-class.js","aliases":["rc.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBydW5BdChmbiwgd2hlbikgewogICAgY29uc3QgaW50RnJvbVJlYWR5U3RhdGUgPSBzdGF0ZSA9PiB7CiAgICAgICAgY29uc3QgdGFyZ2V0cyA9IHsKICAgICAgICAgICAgJ2xvYWRpbmcnOiAxLCAnYXNhcCc6IDEsCiAgICAgICAgICAgICdpbnRlcmFjdGl2ZSc6IDIsICdlbmQnOiAyLCAnMic6IDIsCiAgICAgICAgICAgICdjb21wbGV0ZSc6IDMsICdpZGxlJzogMywgJzMnOiAzLAogICAgICAgIH07CiAgICAgICAgY29uc3QgdG9rZW5zID0gQXJyYXkuaXNBcnJheShzdGF0ZSkgPyBzdGF0ZSA6IFsgc3RhdGUgXTsKICAgICAgICBmb3IgKCBjb25zdCB0b2tlbiBvZiB0b2tlbnMgKSB7CiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBgJHt0b2tlbn1gOwogICAgICAgICAgICBpZiAoIHRhcmdldHMuaGFzT3duUHJvcGVydHkocHJvcCkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICByZXR1cm4gdGFyZ2V0c1twcm9wXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwogICAgY29uc3QgcnVuQXQgPSBpbnRGcm9tUmVhZHlTdGF0ZSh3aGVuKTsKICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPj0gcnVuQXQgKSB7CiAgICAgICAgZm4oKTsgcmV0dXJuOwogICAgfQogICAgY29uc3Qgb25TdGF0ZUNoYW5nZSA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBpbnRGcm9tUmVhZHlTdGF0ZShkb2N1bWVudC5yZWFkeVN0YXRlKSA8IHJ1bkF0ICkgeyByZXR1cm47IH0KICAgICAgICBmbigpOwogICAgICAgIHNhZmUucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseShkb2N1bWVudCwgYXJncyk7CiAgICB9OwogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBhcmdzID0gWyAncmVhZHlzdGF0ZWNoYW5nZScsIG9uU3RhdGVDaGFuZ2UsIHsgY2FwdHVyZTogdHJ1ZSB9IF07CiAgICBzYWZlLmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwp9CgogIChmdW5jdGlvbiByZW1vdmVDbGFzcygKICAgIHJhd1Rva2VuID0gJycsCiAgICByYXdTZWxlY3RvciA9ICcnLAogICAgYmVoYXZpb3IgPSAnJwopIHsKICAgIGlmICggdHlwZW9mIHJhd1Rva2VuICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBpZiAoIHJhd1Rva2VuID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGxvZ1ByZWZpeCA9IHNhZmUubWFrZUxvZ1ByZWZpeCgncmVtb3ZlLWNsYXNzJywgcmF3VG9rZW4sIHJhd1NlbGVjdG9yLCBiZWhhdmlvcik7CiAgICBjb25zdCB0b2tlbnMgPSByYXdUb2tlbi5zcGxpdCgvXHMqXHxccyovKTsKICAgIGNvbnN0IHNlbGVjdG9yID0gdG9rZW5zCiAgICAgICAgLm1hcChhID0+IGAke3Jhd1NlbGVjdG9yfS4ke0NTUy5lc2NhcGUoYSl9YCkKICAgICAgICAuam9pbignLCcpOwogICAgaWYgKCBzYWZlLmxvZ0xldmVsID4gMSApIHsKICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBUYXJnZXQgc2VsZWN0b3I6XG5cdCR7c2VsZWN0b3J9YCk7CiAgICB9CiAgICBjb25zdCBtdXN0U3RheSA9IC9cYnN0YXlcYi8udGVzdChiZWhhdmlvcik7CiAgICBsZXQgdGltZXI7CiAgICBjb25zdCBybWNsYXNzID0gKCApID0+IHsKICAgICAgICB0aW1lciA9IHVuZGVmaW5lZDsKICAgICAgICB0cnkgewogICAgICAgICAgICBjb25zdCBub2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOwogICAgICAgICAgICBmb3IgKCBjb25zdCBub2RlIG9mIG5vZGVzICkgewogICAgICAgICAgICAgICAgbm9kZS5jbGFzc0xpc3QucmVtb3ZlKC4uLnRva2Vucyk7CiAgICAgICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsICdSZW1vdmVkIGNsYXNzKGVzKScpOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaChleCkgewogICAgICAgIH0KICAgICAgICBpZiAoIG11c3RTdGF5ICkgeyByZXR1cm47IH0KICAgICAgICBpZiAoIGRvY3VtZW50LnJlYWR5U3RhdGUgIT09ICdjb21wbGV0ZScgKSB7IHJldHVybjsgfQogICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKICAgIH07CiAgICBjb25zdCBtdXRhdGlvbkhhbmRsZXIgPSBtdXRhdGlvbnMgPT4gewogICAgICAgIGlmICggdGltZXIgIT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgbGV0IHNraXAgPSB0cnVlOwogICAgICAgIGZvciAoIGxldCBpID0gMDsgaSA8IG11dGF0aW9ucy5sZW5ndGggJiYgc2tpcDsgaSsrICkgewogICAgICAgICAgICBjb25zdCB7IHR5cGUsIGFkZGVkTm9kZXMsIHJlbW92ZWROb2RlcyB9ID0gbXV0YXRpb25zW2ldOwogICAgICAgICAgICBpZiAoIHR5cGUgPT09ICdhdHRyaWJ1dGVzJyApIHsgc2tpcCA9IGZhbHNlOyB9CiAgICAgICAgICAgIGZvciAoIGxldCBqID0gMDsgaiA8IGFkZGVkTm9kZXMubGVuZ3RoICYmIHNraXA7IGorKyApIHsKICAgICAgICAgICAgICAgIGlmICggYWRkZWROb2Rlc1tqXS5ub2RlVHlwZSA9PT0gMSApIHsgc2tpcCA9IGZhbHNlOyBicmVhazsgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciAoIGxldCBqID0gMDsgaiA8IHJlbW92ZWROb2Rlcy5sZW5ndGggJiYgc2tpcDsgaisrICkgewogICAgICAgICAgICAgICAgaWYgKCByZW1vdmVkTm9kZXNbal0ubm9kZVR5cGUgPT09IDEgKSB7IHNraXAgPSBmYWxzZTsgYnJlYWs7IH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIHNraXAgKSB7IHJldHVybjsgfQogICAgICAgIHRpbWVyID0gc2FmZS5vbklkbGUocm1jbGFzcywgeyB0aW1lb3V0OiA2NyB9KTsKICAgIH07CiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG11dGF0aW9uSGFuZGxlcik7CiAgICBjb25zdCBzdGFydCA9ICggKSA9PiB7CiAgICAgICAgcm1jbGFzcygpOwogICAgICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQsIHsKICAgICAgICAgICAgYXR0cmlidXRlczogdHJ1ZSwKICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVyOiBbICdjbGFzcycgXSwKICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLAogICAgICAgICAgICBzdWJ0cmVlOiB0cnVlLAogICAgICAgIH0pOwogICAgfTsKICAgIHJ1bkF0KCggKSA9PiB7CiAgICAgICAgc3RhcnQoKTsKICAgIH0sIC9cYmNvbXBsZXRlXGIvLnRlc3QoYmVoYXZpb3IpID8gJ2lkbGUnIDogJ2xvYWRpbmcnKTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"no-requestAnimationFrame-if.js","aliases":["norafif.js","prevent-requestAnimationFrame.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24gbm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWVJZigKICAgIG5lZWRsZSA9ICcnCikgewogICAgaWYgKCB0eXBlb2YgbmVlZGxlICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IG5lZWRsZU5vdCA9IG5lZWRsZS5jaGFyQXQoMCkgPT09ICchJzsKICAgIGlmICggbmVlZGxlTm90ICkgeyBuZWVkbGUgPSBuZWVkbGUuc2xpY2UoMSk7IH0KICAgIGNvbnN0IGxvZyA9IG5lZWRsZU5vdCA9PT0gZmFsc2UgJiYgbmVlZGxlID09PSAnJyA/IGNvbnNvbGUubG9nIDogdW5kZWZpbmVkOwogICAgY29uc3QgcmVOZWVkbGUgPSBzYWZlLnBhdHRlcm5Ub1JlZ2V4KG5lZWRsZSk7CiAgICB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lID0gbmV3IFByb3h5KHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIHsKICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgIGNvbnN0IGEgPSBhcmdzWzBdIGluc3RhbmNlb2YgRnVuY3Rpb24KICAgICAgICAgICAgICAgID8gU3RyaW5nKHNhZmUuRnVuY3Rpb25fdG9TdHJpbmcoYXJnc1swXSkpCiAgICAgICAgICAgICAgICA6IFN0cmluZyhhcmdzWzBdKTsKICAgICAgICAgICAgbGV0IGRlZnVzZSA9IGZhbHNlOwogICAgICAgICAgICBpZiAoIGxvZyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgbG9nKCd1Qk86IHJlcXVlc3RBbmltYXRpb25GcmFtZSgiJXMiKScsIGEpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZGVmdXNlID0gcmVOZWVkbGUudGVzdChhKSAhPT0gbmVlZGxlTm90OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggZGVmdXNlICkgewogICAgICAgICAgICAgICAgYXJnc1swXSA9IGZ1bmN0aW9uKCl7fTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdGFyZ2V0LmFwcGx5KHRoaXNBcmcsIGFyZ3MpOwogICAgICAgIH0KICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"set-constant.js","aliases":["set.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gdmFsaWRhdGVDb25zdGFudEZuKHRydXN0ZWQsIHJhdywgZXh0cmFBcmdzID0ge30pIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgbGV0IHZhbHVlOwogICAgaWYgKCByYXcgPT09ICd1bmRlZmluZWQnICkgewogICAgICAgIHZhbHVlID0gdW5kZWZpbmVkOwogICAgfSBlbHNlIGlmICggcmF3ID09PSAnZmFsc2UnICkgewogICAgICAgIHZhbHVlID0gZmFsc2U7CiAgICB9IGVsc2UgaWYgKCByYXcgPT09ICd0cnVlJyApIHsKICAgICAgICB2YWx1ZSA9IHRydWU7CiAgICB9IGVsc2UgaWYgKCByYXcgPT09ICdudWxsJyApIHsKICAgICAgICB2YWx1ZSA9IG51bGw7CiAgICB9IGVsc2UgaWYgKCByYXcgPT09ICInJyIgfHwgcmF3ID09PSAnJyApIHsKICAgICAgICB2YWx1ZSA9ICcnOwogICAgfSBlbHNlIGlmICggcmF3ID09PSAnW10nIHx8IHJhdyA9PT0gJ2VtcHR5QXJyJyApIHsKICAgICAgICB2YWx1ZSA9IFtdOwogICAgfSBlbHNlIGlmICggcmF3ID09PSAne30nIHx8IHJhdyA9PT0gJ2VtcHR5T2JqJyApIHsKICAgICAgICB2YWx1ZSA9IHt9OwogICAgfSBlbHNlIGlmICggcmF3ID09PSAnbm9vcEZ1bmMnICkgewogICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKXt9OwogICAgfSBlbHNlIGlmICggcmF3ID09PSAndHJ1ZUZ1bmMnICkgewogICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKXsgcmV0dXJuIHRydWU7IH07CiAgICB9IGVsc2UgaWYgKCByYXcgPT09ICdmYWxzZUZ1bmMnICkgewogICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKXsgcmV0dXJuIGZhbHNlOyB9OwogICAgfSBlbHNlIGlmICggcmF3ID09PSAndGhyb3dGdW5jJyApIHsKICAgICAgICB2YWx1ZSA9IGZ1bmN0aW9uKCl7IHRocm93ICcnOyB9OwogICAgfSBlbHNlIGlmICggL14tP1xkKyQvLnRlc3QocmF3KSApIHsKICAgICAgICB2YWx1ZSA9IHBhcnNlSW50KHJhdyk7CiAgICAgICAgaWYgKCBpc05hTihyYXcpICkgeyByZXR1cm47IH0KICAgICAgICBpZiAoIE1hdGguYWJzKHJhdykgPiAweDdGRkYgKSB7IHJldHVybjsgfQogICAgfSBlbHNlIGlmICggdHJ1c3RlZCApIHsKICAgICAgICBpZiAoIHJhdy5zdGFydHNXaXRoKCdqc29uOicpICkgewogICAgICAgICAgICB0cnkgeyB2YWx1ZSA9IHNhZmUuSlNPTl9wYXJzZShyYXcuc2xpY2UoNSkpOyB9IGNhdGNoKGV4KSB7IHJldHVybjsgfQogICAgICAgIH0gZWxzZSBpZiAoIHJhdy5zdGFydHNXaXRoKCd7JykgJiYgcmF3LmVuZHNXaXRoKCd9JykgKSB7CiAgICAgICAgICAgIHRyeSB7IHZhbHVlID0gc2FmZS5KU09OX3BhcnNlKHJhdykudmFsdWU7IH0gY2F0Y2goZXgpIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoIGV4dHJhQXJncy5hcyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgIGlmICggZXh0cmFBcmdzLmFzID09PSAnZnVuY3Rpb24nICkgewogICAgICAgICAgICByZXR1cm4gKCApID0+IHZhbHVlOwogICAgICAgIH0gZWxzZSBpZiAoIGV4dHJhQXJncy5hcyA9PT0gJ2NhbGxiYWNrJyApIHsKICAgICAgICAgICAgcmV0dXJuICggKSA9PiAoKCApID0+IHZhbHVlKTsKICAgICAgICB9IGVsc2UgaWYgKCBleHRyYUFyZ3MuYXMgPT09ICdyZXNvbHZlZCcgKSB7CiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpOwogICAgICAgIH0gZWxzZSBpZiAoIGV4dHJhQXJncy5hcyA9PT0gJ3JlamVjdGVkJyApIHsKICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHZhbHVlKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdmFsdWU7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBydW5BdChmbiwgd2hlbikgewogICAgY29uc3QgaW50RnJvbVJlYWR5U3RhdGUgPSBzdGF0ZSA9PiB7CiAgICAgICAgY29uc3QgdGFyZ2V0cyA9IHsKICAgICAgICAgICAgJ2xvYWRpbmcnOiAxLCAnYXNhcCc6IDEsCiAgICAgICAgICAgICdpbnRlcmFjdGl2ZSc6IDIsICdlbmQnOiAyLCAnMic6IDIsCiAgICAgICAgICAgICdjb21wbGV0ZSc6IDMsICdpZGxlJzogMywgJzMnOiAzLAogICAgICAgIH07CiAgICAgICAgY29uc3QgdG9rZW5zID0gQXJyYXkuaXNBcnJheShzdGF0ZSkgPyBzdGF0ZSA6IFsgc3RhdGUgXTsKICAgICAgICBmb3IgKCBjb25zdCB0b2tlbiBvZiB0b2tlbnMgKSB7CiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBgJHt0b2tlbn1gOwogICAgICAgICAgICBpZiAoIHRhcmdldHMuaGFzT3duUHJvcGVydHkocHJvcCkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICByZXR1cm4gdGFyZ2V0c1twcm9wXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwogICAgY29uc3QgcnVuQXQgPSBpbnRGcm9tUmVhZHlTdGF0ZSh3aGVuKTsKICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPj0gcnVuQXQgKSB7CiAgICAgICAgZm4oKTsgcmV0dXJuOwogICAgfQogICAgY29uc3Qgb25TdGF0ZUNoYW5nZSA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBpbnRGcm9tUmVhZHlTdGF0ZShkb2N1bWVudC5yZWFkeVN0YXRlKSA8IHJ1bkF0ICkgeyByZXR1cm47IH0KICAgICAgICBmbigpOwogICAgICAgIHNhZmUucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseShkb2N1bWVudCwgYXJncyk7CiAgICB9OwogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBhcmdzID0gWyAncmVhZHlzdGF0ZWNoYW5nZScsIG9uU3RhdGVDaGFuZ2UsIHsgY2FwdHVyZTogdHJ1ZSB9IF07CiAgICBzYWZlLmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwp9CmZ1bmN0aW9uIHNldENvbnN0YW50Rm4oCiAgICB0cnVzdGVkID0gZmFsc2UsCiAgICBjaGFpbiA9ICcnLAogICAgcmF3VmFsdWUgPSAnJwopIHsKICAgIGlmICggY2hhaW4gPT09ICcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbG9nUHJlZml4ID0gc2FmZS5tYWtlTG9nUHJlZml4KCdzZXQtY29uc3RhbnQnLCBjaGFpbiwgcmF3VmFsdWUpOwogICAgY29uc3QgZXh0cmFBcmdzID0gc2FmZS5nZXRFeHRyYUFyZ3MoQXJyYXkuZnJvbShhcmd1bWVudHMpLCAzKTsKICAgIGZ1bmN0aW9uIHNldENvbnN0YW50KGNoYWluLCByYXdWYWx1ZSkgewogICAgICAgIGNvbnN0IHRyYXBwZWRQcm9wID0gKCggKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHBvcyA9IGNoYWluLmxhc3RJbmRleE9mKCcuJyk7CiAgICAgICAgICAgIGlmICggcG9zID09PSAtMSApIHsgcmV0dXJuIGNoYWluOyB9CiAgICAgICAgICAgIHJldHVybiBjaGFpbi5zbGljZShwb3MrMSk7CiAgICAgICAgfSkoKTsKICAgICAgICBjb25zdCBjbG9ha0Z1bmMgPSBmbiA9PiB7CiAgICAgICAgICAgIHNhZmUuT2JqZWN0X2RlZmluZVByb3BlcnR5KGZuLCAnbmFtZScsIHsgdmFsdWU6IHRyYXBwZWRQcm9wIH0pOwogICAgICAgICAgICByZXR1cm4gbmV3IFByb3h5KGZuLCB7CiAgICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3ApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIHByb3AgIT09ICd0b1N0cmluZycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmRlZmluZVByb3BlcnR5KC4uLmFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcHJvcCkgewogICAgICAgICAgICAgICAgICAgIGlmICggcHJvcCAhPT0gJ3RvU3RyaW5nJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVsZXRlUHJvcGVydHkoLi4uYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0KHRhcmdldCwgcHJvcCkgewogICAgICAgICAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ3RvU3RyaW5nJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBmdW5jdGlvbiAke3RyYXBwZWRQcm9wfSgpIHsgW25hdGl2ZSBjb2RlXSB9YDsKICAgICAgICAgICAgICAgICAgICAgICAgfS5iaW5kKG51bGwpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQoLi4uYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0pOwogICAgICAgIH07CiAgICAgICAgaWYgKCB0cmFwcGVkUHJvcCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgIGNvbnN0IHRoaXNTY3JpcHQgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0OwogICAgICAgIGxldCBub3JtYWxWYWx1ZSA9IHZhbGlkYXRlQ29uc3RhbnRGbih0cnVzdGVkLCByYXdWYWx1ZSwgZXh0cmFBcmdzKTsKICAgICAgICBpZiAoIHJhd1ZhbHVlID09PSAnbm9vcEZ1bmMnIHx8IHJhd1ZhbHVlID09PSAndHJ1ZUZ1bmMnIHx8IHJhd1ZhbHVlID09PSAnZmFsc2VGdW5jJyApIHsKICAgICAgICAgICAgbm9ybWFsVmFsdWUgPSBjbG9ha0Z1bmMobm9ybWFsVmFsdWUpOwogICAgICAgIH0KICAgICAgICBsZXQgYWJvcnRlZCA9IGZhbHNlOwogICAgICAgIGNvbnN0IG11c3RBYm9ydCA9IGZ1bmN0aW9uKHYpIHsKICAgICAgICAgICAgaWYgKCB0cnVzdGVkICkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgICAgaWYgKCBhYm9ydGVkICkgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICAgICBhYm9ydGVkID0KICAgICAgICAgICAgICAgICh2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gbnVsbCkgJiYKICAgICAgICAgICAgICAgIChub3JtYWxWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIG5vcm1hbFZhbHVlICE9PSBudWxsKSAmJgogICAgICAgICAgICAgICAgKHR5cGVvZiB2ICE9PSB0eXBlb2Ygbm9ybWFsVmFsdWUpOwogICAgICAgICAgICBpZiAoIGFib3J0ZWQgKSB7CiAgICAgICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBBYm9ydGVkIGJlY2F1c2UgdmFsdWUgc2V0IHRvICR7dn1gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gYWJvcnRlZDsKICAgICAgICB9OwogICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91QmxvY2tPcmlnaW4vdUJsb2NrLWlzc3Vlcy9pc3N1ZXMvMTU2CiAgICAgICAgLy8gICBTdXBwb3J0IG11bHRpcGxlIHRyYXBwZXJzIGZvciB0aGUgc2FtZSBwcm9wZXJ0eS4KICAgICAgICBjb25zdCB0cmFwUHJvcCA9IGZ1bmN0aW9uKG93bmVyLCBwcm9wLCBjb25maWd1cmFibGUsIGhhbmRsZXIpIHsKICAgICAgICAgICAgaWYgKCBoYW5kbGVyLmluaXQoY29uZmlndXJhYmxlID8gb3duZXJbcHJvcF0gOiBub3JtYWxWYWx1ZSkgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICAgICAgY29uc3Qgb2Rlc2MgPSBzYWZlLk9iamVjdF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3duZXIsIHByb3ApOwogICAgICAgICAgICBsZXQgcHJldkdldHRlciwgcHJldlNldHRlcjsKICAgICAgICAgICAgaWYgKCBvZGVzYyBpbnN0YW5jZW9mIHNhZmUuT2JqZWN0ICkgewogICAgICAgICAgICAgICAgb3duZXJbcHJvcF0gPSBub3JtYWxWYWx1ZTsKICAgICAgICAgICAgICAgIGlmICggb2Rlc2MuZ2V0IGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgICAgICAgICAgcHJldkdldHRlciA9IG9kZXNjLmdldDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggb2Rlc2Muc2V0IGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgICAgICAgICAgcHJldlNldHRlciA9IG9kZXNjLnNldDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgc2FmZS5PYmplY3RfZGVmaW5lUHJvcGVydHkob3duZXIsIHByb3AsIHsKICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGUsCiAgICAgICAgICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHByZXZHZXR0ZXIgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZHZXR0ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlci5nZXR0ZXIoKTsKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNldChhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcHJldlNldHRlciAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldlNldHRlcihhKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLnNldHRlcihhKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgJ1RyYXAgaW5zdGFsbGVkJyk7CiAgICAgICAgICAgIH0gY2F0Y2goZXgpIHsKICAgICAgICAgICAgICAgIHNhZmUudWJvRXJyKGxvZ1ByZWZpeCwgZXgpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBjb25zdCB0cmFwQ2hhaW4gPSBmdW5jdGlvbihvd25lciwgY2hhaW4pIHsKICAgICAgICAgICAgY29uc3QgcG9zID0gY2hhaW4uaW5kZXhPZignLicpOwogICAgICAgICAgICBpZiAoIHBvcyA9PT0gLTEgKSB7CiAgICAgICAgICAgICAgICB0cmFwUHJvcChvd25lciwgY2hhaW4sIGZhbHNlLCB7CiAgICAgICAgICAgICAgICAgICAgdjogdW5kZWZpbmVkLAogICAgICAgICAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uKHYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBtdXN0QWJvcnQodikgKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnYgPSB2OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldHRlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZG9jdW1lbnQuY3VycmVudFNjcmlwdCA9PT0gdGhpc1NjcmlwdCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnY7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCAnUHJvcGVydHkgcmVhZCcpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9ybWFsVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzZXR0ZXI6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBtdXN0QWJvcnQoYSkgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsVmFsdWUgPSBhOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBjaGFpbi5zbGljZSgwLCBwb3MpOwogICAgICAgICAgICBjb25zdCB2ID0gb3duZXJbcHJvcF07CiAgICAgICAgICAgIGNoYWluID0gY2hhaW4uc2xpY2UocG9zICsgMSk7CiAgICAgICAgICAgIGlmICggdiBpbnN0YW5jZW9mIHNhZmUuT2JqZWN0IHx8IHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiB2ICE9PSBudWxsICkgewogICAgICAgICAgICAgICAgdHJhcENoYWluKHYsIGNoYWluKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cmFwUHJvcChvd25lciwgcHJvcCwgdHJ1ZSwgewogICAgICAgICAgICAgICAgdjogdW5kZWZpbmVkLAogICAgICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24odikgewogICAgICAgICAgICAgICAgICAgIHRoaXMudiA9IHY7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0dGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52OwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNldHRlcjogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudiA9IGE7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBhIGluc3RhbmNlb2Ygc2FmZS5PYmplY3QgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyYXBDaGFpbihhLCBjaGFpbik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9OwogICAgICAgIHRyYXBDaGFpbih3aW5kb3csIGNoYWluKTsKICAgIH0KICAgIHJ1bkF0KCggKSA9PiB7CiAgICAgICAgc2V0Q29uc3RhbnQoY2hhaW4sIHJhd1ZhbHVlKTsKICAgIH0sIGV4dHJhQXJncy5ydW5BdCk7Cn0KCiAgKGZ1bmN0aW9uIHNldENvbnN0YW50KAogICAgLi4uYXJncwopIHsKICAgIHNldENvbnN0YW50Rm4oZmFsc2UsIC4uLmFyZ3MpOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"no-setInterval-if.js","aliases":["nosiif.js","prevent-setInterval.js","setInterval-defuser.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBwcm94eUFwcGx5Rm4oCiAgICB0YXJnZXQgPSAnJywKICAgIGhhbmRsZXIgPSAnJwopIHsKICAgIGxldCBjb250ZXh0ID0gZ2xvYmFsVGhpczsKICAgIGxldCBwcm9wID0gdGFyZ2V0OwogICAgZm9yICg7OykgewogICAgICAgIGNvbnN0IHBvcyA9IHByb3AuaW5kZXhPZignLicpOwogICAgICAgIGlmICggcG9zID09PSAtMSApIHsgYnJlYWs7IH0KICAgICAgICBjb250ZXh0ID0gY29udGV4dFtwcm9wLnNsaWNlKDAsIHBvcyldOwogICAgICAgIGlmICggY29udGV4dCBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIHByb3AgPSBwcm9wLnNsaWNlKHBvcysxKTsKICAgIH0KICAgIGNvbnN0IGZuID0gY29udGV4dFtwcm9wXTsKICAgIGlmICggdHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nICkgeyByZXR1cm47IH0KICAgIGlmICggcHJveHlBcHBseUZuLkN0b3JDb250ZXh0ID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dCA9IGNsYXNzIHsKICAgICAgICAgICAgY29uc3RydWN0b3IoLi4uYXJncykgewogICAgICAgICAgICAgICAgdGhpcy5pbml0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGluaXQoY2FsbEZuLCBjYWxsQXJncykgewogICAgICAgICAgICAgICAgdGhpcy5jYWxsRm4gPSBjYWxsRm47CiAgICAgICAgICAgICAgICB0aGlzLmNhbGxBcmdzID0gY2FsbEFyZ3M7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgICAgfQogICAgICAgICAgICByZWZsZWN0KCkgewogICAgICAgICAgICAgICAgY29uc3QgciA9IFJlZmxlY3QuY29uc3RydWN0KHRoaXMuY2FsbEZuLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5jdG9yQ29udGV4dHMucHVzaCh0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN0YXRpYyBmYWN0b3J5KC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwcm94eUFwcGx5Rm4uY3RvckNvbnRleHRzLmxlbmd0aCAhPT0gMAogICAgICAgICAgICAgICAgICAgID8gcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkN0b3JDb250ZXh0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5BcHBseUNvbnRleHQgPSBjbGFzcyB7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuaW5pdCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbml0KGNhbGxGbiwgdGhpc0FyZywgY2FsbEFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gY2FsbEZuOwogICAgICAgICAgICAgICAgdGhpcy50aGlzQXJnID0gdGhpc0FyZzsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEFyZ3MgPSBjYWxsQXJnczsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlZmxlY3QoKSB7CiAgICAgICAgICAgICAgICBjb25zdCByID0gUmVmbGVjdC5hcHBseSh0aGlzLmNhbGxGbiwgdGhpcy50aGlzQXJnLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy50aGlzQXJnID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5hcHBseUNvbnRleHRzLnB1c2godGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGF0aWMgZmFjdG9yeSguLi5hcmdzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcHJveHlBcHBseUZuLmFwcGx5Q29udGV4dHMubGVuZ3RoICE9PSAwCiAgICAgICAgICAgICAgICAgICAgPyBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkFwcGx5Q29udGV4dCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBmblN0ciA9IGZuLnRvU3RyaW5nKCk7CiAgICBjb25zdCB0b1N0cmluZyA9IChmdW5jdGlvbiB0b1N0cmluZygpIHsgcmV0dXJuIGZuU3RyOyB9KS5iaW5kKG51bGwpOwogICAgY29uc3QgcHJveHlEZXRhaWxzID0gewogICAgICAgIGFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICByZXR1cm4gaGFuZGxlcihwcm94eUFwcGx5Rm4uQXBwbHlDb250ZXh0LmZhY3RvcnkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSk7CiAgICAgICAgfSwKICAgICAgICBnZXQodGFyZ2V0LCBwcm9wKSB7CiAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ3RvU3RyaW5nJyApIHsgcmV0dXJuIHRvU3RyaW5nOyB9CiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3ApOwogICAgICAgIH0sCiAgICB9OwogICAgaWYgKCBmbi5wcm90b3R5cGU/LmNvbnN0cnVjdG9yID09PSBmbiApIHsKICAgICAgICBwcm94eURldGFpbHMuY29uc3RydWN0ID0gZnVuY3Rpb24odGFyZ2V0LCBhcmdzKSB7CiAgICAgICAgICAgIHJldHVybiBoYW5kbGVyKHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dC5mYWN0b3J5KHRhcmdldCwgYXJncykpOwogICAgICAgIH07CiAgICB9CiAgICBjb250ZXh0W3Byb3BdID0gbmV3IFByb3h5KGZuLCBwcm94eURldGFpbHMpOwp9CgogIChmdW5jdGlvbiBub1NldEludGVydmFsSWYoCiAgICBuZWVkbGUgPSAnJywKICAgIGRlbGF5ID0gJycKKSB7CiAgICBpZiAoIHR5cGVvZiBuZWVkbGUgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbG9nUHJlZml4ID0gc2FmZS5tYWtlTG9nUHJlZml4KCdwcmV2ZW50LXNldEludGVydmFsJywgbmVlZGxlLCBkZWxheSk7CiAgICBjb25zdCBuZWVkbGVOb3QgPSBuZWVkbGUuY2hhckF0KDApID09PSAnISc7CiAgICBpZiAoIG5lZWRsZU5vdCApIHsgbmVlZGxlID0gbmVlZGxlLnNsaWNlKDEpOyB9CiAgICBpZiAoIGRlbGF5ID09PSAnJyApIHsgZGVsYXkgPSB1bmRlZmluZWQ7IH0KICAgIGxldCBkZWxheU5vdCA9IGZhbHNlOwogICAgaWYgKCBkZWxheSAhPT0gdW5kZWZpbmVkICkgewogICAgICAgIGRlbGF5Tm90ID0gZGVsYXkuY2hhckF0KDApID09PSAnISc7CiAgICAgICAgaWYgKCBkZWxheU5vdCApIHsgZGVsYXkgPSBkZWxheS5zbGljZSgxKTsgfQogICAgICAgIGRlbGF5ID0gcGFyc2VJbnQoZGVsYXksIDEwKTsKICAgIH0KICAgIGNvbnN0IHJlTmVlZGxlID0gc2FmZS5wYXR0ZXJuVG9SZWdleChuZWVkbGUpOwogICAgcHJveHlBcHBseUZuKCdzZXRJbnRlcnZhbCcsIGZ1bmN0aW9uIHNldEludGVydmFsKGNvbnRleHQpIHsKICAgICAgICBjb25zdCB7IGNhbGxBcmdzIH0gPSBjb250ZXh0OwogICAgICAgIGNvbnN0IGEgPSBjYWxsQXJnc1swXSBpbnN0YW5jZW9mIEZ1bmN0aW9uCiAgICAgICAgICAgID8gU3RyaW5nKHNhZmUuRnVuY3Rpb25fdG9TdHJpbmcoY2FsbEFyZ3NbMF0pKQogICAgICAgICAgICA6IFN0cmluZyhjYWxsQXJnc1swXSk7CiAgICAgICAgY29uc3QgYiA9IGNhbGxBcmdzWzFdOwogICAgICAgIGlmICggbmVlZGxlID09PSAnJyAmJiBkZWxheSA9PT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBDYWxsZWQ6XG4ke2F9XG4ke2J9YCk7CiAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnJlZmxlY3QoKTsKICAgICAgICB9CiAgICAgICAgbGV0IGRlZnVzZTsKICAgICAgICBpZiAoIG5lZWRsZSAhPT0gJycgKSB7CiAgICAgICAgICAgIGRlZnVzZSA9IHJlTmVlZGxlLnRlc3QoYSkgIT09IG5lZWRsZU5vdDsKICAgICAgICB9CiAgICAgICAgaWYgKCBkZWZ1c2UgIT09IGZhbHNlICYmIGRlbGF5ICE9PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgIGRlZnVzZSA9IChiID09PSBkZWxheSB8fCBpc05hTihiKSAmJiBpc05hTihkZWxheSkgKSAhPT0gZGVsYXlOb3Q7CiAgICAgICAgfQogICAgICAgIGlmICggZGVmdXNlICkgewogICAgICAgICAgICBjYWxsQXJnc1swXSA9IGZ1bmN0aW9uKCl7fTsKICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCBgUHJldmVudGVkOlxuJHthfVxuJHtifWApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gY29udGV4dC5yZWZsZWN0KCk7CiAgICB9KTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"no-setTimeout-if.js","aliases":["nostif.js","prevent-setTimeout.js","setTimeout-defuser.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBwcm94eUFwcGx5Rm4oCiAgICB0YXJnZXQgPSAnJywKICAgIGhhbmRsZXIgPSAnJwopIHsKICAgIGxldCBjb250ZXh0ID0gZ2xvYmFsVGhpczsKICAgIGxldCBwcm9wID0gdGFyZ2V0OwogICAgZm9yICg7OykgewogICAgICAgIGNvbnN0IHBvcyA9IHByb3AuaW5kZXhPZignLicpOwogICAgICAgIGlmICggcG9zID09PSAtMSApIHsgYnJlYWs7IH0KICAgICAgICBjb250ZXh0ID0gY29udGV4dFtwcm9wLnNsaWNlKDAsIHBvcyldOwogICAgICAgIGlmICggY29udGV4dCBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIHByb3AgPSBwcm9wLnNsaWNlKHBvcysxKTsKICAgIH0KICAgIGNvbnN0IGZuID0gY29udGV4dFtwcm9wXTsKICAgIGlmICggdHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nICkgeyByZXR1cm47IH0KICAgIGlmICggcHJveHlBcHBseUZuLkN0b3JDb250ZXh0ID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dCA9IGNsYXNzIHsKICAgICAgICAgICAgY29uc3RydWN0b3IoLi4uYXJncykgewogICAgICAgICAgICAgICAgdGhpcy5pbml0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGluaXQoY2FsbEZuLCBjYWxsQXJncykgewogICAgICAgICAgICAgICAgdGhpcy5jYWxsRm4gPSBjYWxsRm47CiAgICAgICAgICAgICAgICB0aGlzLmNhbGxBcmdzID0gY2FsbEFyZ3M7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgICAgfQogICAgICAgICAgICByZWZsZWN0KCkgewogICAgICAgICAgICAgICAgY29uc3QgciA9IFJlZmxlY3QuY29uc3RydWN0KHRoaXMuY2FsbEZuLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5jdG9yQ29udGV4dHMucHVzaCh0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN0YXRpYyBmYWN0b3J5KC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwcm94eUFwcGx5Rm4uY3RvckNvbnRleHRzLmxlbmd0aCAhPT0gMAogICAgICAgICAgICAgICAgICAgID8gcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkN0b3JDb250ZXh0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5BcHBseUNvbnRleHQgPSBjbGFzcyB7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuaW5pdCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbml0KGNhbGxGbiwgdGhpc0FyZywgY2FsbEFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gY2FsbEZuOwogICAgICAgICAgICAgICAgdGhpcy50aGlzQXJnID0gdGhpc0FyZzsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEFyZ3MgPSBjYWxsQXJnczsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlZmxlY3QoKSB7CiAgICAgICAgICAgICAgICBjb25zdCByID0gUmVmbGVjdC5hcHBseSh0aGlzLmNhbGxGbiwgdGhpcy50aGlzQXJnLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy50aGlzQXJnID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5hcHBseUNvbnRleHRzLnB1c2godGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGF0aWMgZmFjdG9yeSguLi5hcmdzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcHJveHlBcHBseUZuLmFwcGx5Q29udGV4dHMubGVuZ3RoICE9PSAwCiAgICAgICAgICAgICAgICAgICAgPyBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkFwcGx5Q29udGV4dCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBmblN0ciA9IGZuLnRvU3RyaW5nKCk7CiAgICBjb25zdCB0b1N0cmluZyA9IChmdW5jdGlvbiB0b1N0cmluZygpIHsgcmV0dXJuIGZuU3RyOyB9KS5iaW5kKG51bGwpOwogICAgY29uc3QgcHJveHlEZXRhaWxzID0gewogICAgICAgIGFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICByZXR1cm4gaGFuZGxlcihwcm94eUFwcGx5Rm4uQXBwbHlDb250ZXh0LmZhY3RvcnkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSk7CiAgICAgICAgfSwKICAgICAgICBnZXQodGFyZ2V0LCBwcm9wKSB7CiAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ3RvU3RyaW5nJyApIHsgcmV0dXJuIHRvU3RyaW5nOyB9CiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3ApOwogICAgICAgIH0sCiAgICB9OwogICAgaWYgKCBmbi5wcm90b3R5cGU/LmNvbnN0cnVjdG9yID09PSBmbiApIHsKICAgICAgICBwcm94eURldGFpbHMuY29uc3RydWN0ID0gZnVuY3Rpb24odGFyZ2V0LCBhcmdzKSB7CiAgICAgICAgICAgIHJldHVybiBoYW5kbGVyKHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dC5mYWN0b3J5KHRhcmdldCwgYXJncykpOwogICAgICAgIH07CiAgICB9CiAgICBjb250ZXh0W3Byb3BdID0gbmV3IFByb3h5KGZuLCBwcm94eURldGFpbHMpOwp9CgogIChmdW5jdGlvbiBub1NldFRpbWVvdXRJZigKICAgIG5lZWRsZSA9ICcnLAogICAgZGVsYXkgPSAnJwopIHsKICAgIGlmICggdHlwZW9mIG5lZWRsZSAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBsb2dQcmVmaXggPSBzYWZlLm1ha2VMb2dQcmVmaXgoJ3ByZXZlbnQtc2V0VGltZW91dCcsIG5lZWRsZSwgZGVsYXkpOwogICAgY29uc3QgbmVlZGxlTm90ID0gbmVlZGxlLmNoYXJBdCgwKSA9PT0gJyEnOwogICAgaWYgKCBuZWVkbGVOb3QgKSB7IG5lZWRsZSA9IG5lZWRsZS5zbGljZSgxKTsgfQogICAgaWYgKCBkZWxheSA9PT0gJycgKSB7IGRlbGF5ID0gdW5kZWZpbmVkOyB9CiAgICBsZXQgZGVsYXlOb3QgPSBmYWxzZTsKICAgIGlmICggZGVsYXkgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICBkZWxheU5vdCA9IGRlbGF5LmNoYXJBdCgwKSA9PT0gJyEnOwogICAgICAgIGlmICggZGVsYXlOb3QgKSB7IGRlbGF5ID0gZGVsYXkuc2xpY2UoMSk7IH0KICAgICAgICBkZWxheSA9IHBhcnNlSW50KGRlbGF5LCAxMCk7CiAgICB9CiAgICBjb25zdCByZU5lZWRsZSA9IHNhZmUucGF0dGVyblRvUmVnZXgobmVlZGxlKTsKICAgIHByb3h5QXBwbHlGbignc2V0VGltZW91dCcsIGZ1bmN0aW9uIHNldFRpbWVvdXQoY29udGV4dCkgewogICAgICAgIGNvbnN0IHsgY2FsbEFyZ3MgfSA9IGNvbnRleHQ7CiAgICAgICAgY29uc3QgYSA9IGNhbGxBcmdzWzBdIGluc3RhbmNlb2YgRnVuY3Rpb24KICAgICAgICAgICAgPyBTdHJpbmcoc2FmZS5GdW5jdGlvbl90b1N0cmluZyhjYWxsQXJnc1swXSkpCiAgICAgICAgICAgIDogU3RyaW5nKGNhbGxBcmdzWzBdKTsKICAgICAgICBjb25zdCBiID0gY2FsbEFyZ3NbMV07CiAgICAgICAgaWYgKCBuZWVkbGUgPT09ICcnICYmIGRlbGF5ID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgYENhbGxlZDpcbiR7YX1cbiR7Yn1gKTsKICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQucmVmbGVjdCgpOwogICAgICAgIH0KICAgICAgICBsZXQgZGVmdXNlOwogICAgICAgIGlmICggbmVlZGxlICE9PSAnJyApIHsKICAgICAgICAgICAgZGVmdXNlID0gcmVOZWVkbGUudGVzdChhKSAhPT0gbmVlZGxlTm90OwogICAgICAgIH0KICAgICAgICBpZiAoIGRlZnVzZSAhPT0gZmFsc2UgJiYgZGVsYXkgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgZGVmdXNlID0gKGIgPT09IGRlbGF5IHx8IGlzTmFOKGIpICYmIGlzTmFOKGRlbGF5KSApICE9PSBkZWxheU5vdDsKICAgICAgICB9CiAgICAgICAgaWYgKCBkZWZ1c2UgKSB7CiAgICAgICAgICAgIGNhbGxBcmdzWzBdID0gZnVuY3Rpb24oKXt9OwogICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBQcmV2ZW50ZWQ6XG4ke2F9XG4ke2J9YCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBjb250ZXh0LnJlZmxlY3QoKTsKICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"webrtc-if.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24gd2VicnRjSWYoCiAgICBnb29kID0gJycKKSB7CiAgICBpZiAoIHR5cGVvZiBnb29kICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IHJlR29vZCA9IHNhZmUucGF0dGVyblRvUmVnZXgoZ29vZCk7CiAgICBjb25zdCBydGNOYW1lID0gd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uCiAgICAgICAgPyAnUlRDUGVlckNvbm5lY3Rpb24nCiAgICAgICAgOiAod2luZG93LndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uID8gJ3dlYmtpdFJUQ1BlZXJDb25uZWN0aW9uJyA6ICcnKTsKICAgIGlmICggcnRjTmFtZSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgY29uc3QgbG9nID0gY29uc29sZS5sb2cuYmluZChjb25zb2xlKTsKICAgIGNvbnN0IG5ldXRlcmVkUGVlckNvbm5lY3Rpb25zID0gbmV3IFdlYWtTZXQoKTsKICAgIGNvbnN0IGlzR29vZENvbmZpZyA9IGZ1bmN0aW9uKGluc3RhbmNlLCBjb25maWcpIHsKICAgICAgICBpZiAoIG5ldXRlcmVkUGVlckNvbm5lY3Rpb25zLmhhcyhpbnN0YW5jZSkgKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgIGlmICggY29uZmlnIGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICBpZiAoIEFycmF5LmlzQXJyYXkoY29uZmlnLmljZVNlcnZlcnMpID09PSBmYWxzZSApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICBmb3IgKCBjb25zdCBzZXJ2ZXIgb2YgY29uZmlnLmljZVNlcnZlcnMgKSB7CiAgICAgICAgICAgIGNvbnN0IHVybHMgPSB0eXBlb2Ygc2VydmVyLnVybHMgPT09ICdzdHJpbmcnCiAgICAgICAgICAgICAgICA/IFsgc2VydmVyLnVybHMgXQogICAgICAgICAgICAgICAgOiBzZXJ2ZXIudXJsczsKICAgICAgICAgICAgaWYgKCBBcnJheS5pc0FycmF5KHVybHMpICkgewogICAgICAgICAgICAgICAgZm9yICggY29uc3QgdXJsIG9mIHVybHMgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCByZUdvb2QudGVzdCh1cmwpICkgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggdHlwZW9mIHNlcnZlci51c2VybmFtZSA9PT0gJ3N0cmluZycgKSB7CiAgICAgICAgICAgICAgICBpZiAoIHJlR29vZC50ZXN0KHNlcnZlci51c2VybmFtZSkgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCB0eXBlb2Ygc2VydmVyLmNyZWRlbnRpYWwgPT09ICdzdHJpbmcnICkgewogICAgICAgICAgICAgICAgaWYgKCByZUdvb2QudGVzdChzZXJ2ZXIuY3JlZGVudGlhbCkgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbmV1dGVyZWRQZWVyQ29ubmVjdGlvbnMuYWRkKGluc3RhbmNlKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9OwogICAgY29uc3QgcGVlckNvbm5lY3Rpb25DdG9yID0gd2luZG93W3J0Y05hbWVdOwogICAgY29uc3QgcGVlckNvbm5lY3Rpb25Qcm90byA9IHBlZXJDb25uZWN0aW9uQ3Rvci5wcm90b3R5cGU7CiAgICBwZWVyQ29ubmVjdGlvblByb3RvLmNyZWF0ZURhdGFDaGFubmVsID0KICAgICAgICBuZXcgUHJveHkocGVlckNvbm5lY3Rpb25Qcm90by5jcmVhdGVEYXRhQ2hhbm5lbCwgewogICAgICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgICAgICBpZiAoIGlzR29vZENvbmZpZyh0YXJnZXQsIGFyZ3NbMV0pID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgICAgICBsb2coJ3VCTzonLCBhcmdzWzFdKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3Muc2xpY2UoMCwgMSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKTsKICAgICAgICAgICAgfSwKICAgICAgICB9KTsKICAgIHdpbmRvd1tydGNOYW1lXSA9CiAgICAgICAgbmV3IFByb3h5KHBlZXJDb25uZWN0aW9uQ3RvciwgewogICAgICAgICAgICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uKHRhcmdldCwgYXJncykgewogICAgICAgICAgICAgICAgaWYgKCBpc0dvb2RDb25maWcodGFyZ2V0LCBhcmdzWzBdKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgICAgICAgICAgbG9nKCd1Qk86JywgYXJnc1swXSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuY29uc3RydWN0KHRhcmdldCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5jb25zdHJ1Y3QodGFyZ2V0LCBhcmdzKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"prevent-xhr.js","aliases":["no-xhr-if.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBwYXJzZVByb3BlcnRpZXNUb01hdGNoKHByb3BzVG9NYXRjaCwgaW1wbGljaXQgPSAnJykgewogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBuZWVkbGVzID0gbmV3IE1hcCgpOwogICAgaWYgKCBwcm9wc1RvTWF0Y2ggPT09IHVuZGVmaW5lZCB8fCBwcm9wc1RvTWF0Y2ggPT09ICcnICkgeyByZXR1cm4gbmVlZGxlczsgfQogICAgY29uc3Qgb3B0aW9ucyA9IHsgY2FuTmVnYXRlOiB0cnVlIH07CiAgICBmb3IgKCBjb25zdCBuZWVkbGUgb2YgcHJvcHNUb01hdGNoLnNwbGl0KC9ccysvKSApIHsKICAgICAgICBjb25zdCBbIHByb3AsIHBhdHRlcm4gXSA9IG5lZWRsZS5zcGxpdCgnOicpOwogICAgICAgIGlmICggcHJvcCA9PT0gJycgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgaWYgKCBwYXR0ZXJuICE9PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgIG5lZWRsZXMuc2V0KHByb3AsIHNhZmUuaW5pdFBhdHRlcm4ocGF0dGVybiwgb3B0aW9ucykpOwogICAgICAgIH0gZWxzZSBpZiAoIGltcGxpY2l0ICE9PSAnJyApIHsKICAgICAgICAgICAgbmVlZGxlcy5zZXQoaW1wbGljaXQsIHNhZmUuaW5pdFBhdHRlcm4ocHJvcCwgb3B0aW9ucykpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBuZWVkbGVzOwp9CmZ1bmN0aW9uIG1hdGNoT2JqZWN0UHJvcGVydGllcyhwcm9wTmVlZGxlcywgLi4ub2JqcykgewogICAgaWYgKCBtYXRjaE9iamVjdFByb3BlcnRpZXMuZXh0cmFjdFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICBtYXRjaE9iamVjdFByb3BlcnRpZXMuZXh0cmFjdFByb3BlcnRpZXMgPSAoc3JjLCBkZXMsIHByb3BzKSA9PiB7CiAgICAgICAgICAgIGZvciAoIGNvbnN0IHAgb2YgcHJvcHMgKSB7CiAgICAgICAgICAgICAgICBjb25zdCB2ID0gc3JjW3BdOwogICAgICAgICAgICAgICAgaWYgKCB2ID09PSB1bmRlZmluZWQgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBkZXNbcF0gPSBzcmNbcF07CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBoYXlzdGFjayA9IHt9OwogICAgY29uc3QgcHJvcHMgPSBzYWZlLkFycmF5X2Zyb20ocHJvcE5lZWRsZXMua2V5cygpKTsKICAgIGZvciAoIGNvbnN0IG9iaiBvZiBvYmpzICkgewogICAgICAgIGlmICggb2JqIGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSApIHsgY29udGludWU7IH0KICAgICAgICBtYXRjaE9iamVjdFByb3BlcnRpZXMuZXh0cmFjdFByb3BlcnRpZXMob2JqLCBoYXlzdGFjaywgcHJvcHMpOwogICAgfQogICAgZm9yICggY29uc3QgWyBwcm9wLCBkZXRhaWxzIF0gb2YgcHJvcE5lZWRsZXMgKSB7CiAgICAgICAgbGV0IHZhbHVlID0gaGF5c3RhY2tbcHJvcF07CiAgICAgICAgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgeyBjb250aW51ZTsgfQogICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyApIHsKICAgICAgICAgICAgdHJ5IHsgdmFsdWUgPSBzYWZlLkpTT05fc3RyaW5naWZ5KHZhbHVlKTsgfQogICAgICAgICAgICBjYXRjaChleCkgeyB9CiAgICAgICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyApIHsgY29udGludWU7IH0KICAgICAgICB9CiAgICAgICAgaWYgKCBzYWZlLnRlc3RQYXR0ZXJuKGRldGFpbHMsIHZhbHVlKSApIHsgY29udGludWU7IH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfQpmdW5jdGlvbiBnZW5lcmF0ZUNvbnRlbnRGbih0cnVzdGVkLCBkaXJlY3RpdmUpIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgcmFuZG9taXplID0gbGVuID0+IHsKICAgICAgICBjb25zdCBjaHVua3MgPSBbXTsKICAgICAgICBsZXQgdGV4dFNpemUgPSAwOwogICAgICAgIGRvIHsKICAgICAgICAgICAgY29uc3QgcyA9IHNhZmUuTWF0aF9yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMik7CiAgICAgICAgICAgIGNodW5rcy5wdXNoKHMpOwogICAgICAgICAgICB0ZXh0U2l6ZSArPSBzLmxlbmd0aDsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKCB0ZXh0U2l6ZSA8IGxlbiApOwogICAgICAgIHJldHVybiBjaHVua3Muam9pbignICcpLnNsaWNlKDAsIGxlbik7CiAgICB9OwogICAgaWYgKCBkaXJlY3RpdmUgPT09ICd0cnVlJyApIHsKICAgICAgICByZXR1cm4gcmFuZG9taXplKDEwKTsKICAgIH0KICAgIGlmICggZGlyZWN0aXZlID09PSAnZW1wdHlPYmonICkgewogICAgICAgIHJldHVybiAne30nOwogICAgfQogICAgaWYgKCBkaXJlY3RpdmUgPT09ICdlbXB0eUFycicgKSB7CiAgICAgICAgcmV0dXJuICdbXSc7CiAgICB9CiAgICBpZiAoIGRpcmVjdGl2ZSA9PT0gJ2VtcHR5U3RyJyApIHsKICAgICAgICByZXR1cm4gJyc7CiAgICB9CiAgICBpZiAoIGRpcmVjdGl2ZS5zdGFydHNXaXRoKCdsZW5ndGg6JykgKSB7CiAgICAgICAgY29uc3QgbWF0Y2ggPSAvXmxlbmd0aDooXGQrKSg/Oi0oXGQrKSk/JC8uZXhlYyhkaXJlY3RpdmUpOwogICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7IHJldHVybiAnJzsgfQogICAgICAgIGNvbnN0IG1pbiA9IHBhcnNlSW50KG1hdGNoWzFdLCAxMCk7CiAgICAgICAgY29uc3QgZXh0ZW50ID0gc2FmZS5NYXRoX21heChwYXJzZUludChtYXRjaFsyXSwgMTApIHx8IDAsIG1pbikgLSBtaW47CiAgICAgICAgY29uc3QgbGVuID0gc2FmZS5NYXRoX21pbihtaW4gKyBleHRlbnQgKiBzYWZlLk1hdGhfcmFuZG9tKCksIDUwMDAwMCk7CiAgICAgICAgcmV0dXJuIHJhbmRvbWl6ZShsZW4gfCAwKTsKICAgIH0KICAgIGlmICggZGlyZWN0aXZlLnN0YXJ0c1dpdGgoJ3dhcjonKSApIHsKICAgICAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMud2FyT3JpZ2luID09PSB1bmRlZmluZWQgKSB7IHJldHVybiAnJzsgfQogICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKICAgICAgICAgICAgY29uc3Qgd2FyT3JpZ2luID0gc2NyaXB0bGV0R2xvYmFscy53YXJPcmlnaW47CiAgICAgICAgICAgIGNvbnN0IHdhck5hbWUgPSBkaXJlY3RpdmUuc2xpY2UoNCk7CiAgICAgICAgICAgIGNvbnN0IGZ1bGxwYXRoID0gWyB3YXJPcmlnaW4sICcvJywgd2FyTmFtZSBdOwogICAgICAgICAgICBjb25zdCB3YXJTZWNyZXQgPSBzY3JpcHRsZXRHbG9iYWxzLndhclNlY3JldDsKICAgICAgICAgICAgaWYgKCB3YXJTZWNyZXQgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIGZ1bGxwYXRoLnB1c2goJz9zZWNyZXQ9Jywgd2FyU2VjcmV0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCB3YXJYSFIgPSBuZXcgc2FmZS5YTUxIdHRwUmVxdWVzdCgpOwogICAgICAgICAgICB3YXJYSFIucmVzcG9uc2VUeXBlID0gJ3RleHQnOwogICAgICAgICAgICB3YXJYSFIub25sb2FkZW5kID0gZXYgPT4gewogICAgICAgICAgICAgICAgcmVzb2x2ZShldi50YXJnZXQucmVzcG9uc2VUZXh0IHx8ICcnKTsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgd2FyWEhSLm9wZW4oJ0dFVCcsIGZ1bGxwYXRoLmpvaW4oJycpKTsKICAgICAgICAgICAgd2FyWEhSLnNlbmQoKTsKICAgICAgICB9KS5jYXRjaCgoICkgPT4gJycpOwogICAgfQogICAgaWYgKCB0cnVzdGVkICkgewogICAgICAgIHJldHVybiBkaXJlY3RpdmU7CiAgICB9CiAgICByZXR1cm4gJyc7Cn0KZnVuY3Rpb24gcHJldmVudFhockZuKAogICAgdHJ1c3RlZCA9IGZhbHNlLAogICAgcHJvcHNUb01hdGNoID0gJycsCiAgICBkaXJlY3RpdmUgPSAnJwopIHsKICAgIGlmICggdHlwZW9mIHByb3BzVG9NYXRjaCAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBzY3JpcHRsZXROYW1lID0gdHJ1c3RlZCA/ICd0cnVzdGVkLXByZXZlbnQteGhyJyA6ICdwcmV2ZW50LXhocic7CiAgICBjb25zdCBsb2dQcmVmaXggPSBzYWZlLm1ha2VMb2dQcmVmaXgoc2NyaXB0bGV0TmFtZSwgcHJvcHNUb01hdGNoLCBkaXJlY3RpdmUpOwogICAgY29uc3QgeGhySW5zdGFuY2VzID0gbmV3IFdlYWtNYXAoKTsKICAgIGNvbnN0IHByb3BOZWVkbGVzID0gcGFyc2VQcm9wZXJ0aWVzVG9NYXRjaChwcm9wc1RvTWF0Y2gsICd1cmwnKTsKICAgIGNvbnN0IHdhck9yaWdpbiA9IHNjcmlwdGxldEdsb2JhbHMud2FyT3JpZ2luOwogICAgY29uc3Qgc2FmZURpc3BhdGNoRXZlbnQgPSAoeGhyLCB0eXBlKSA9PiB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgeGhyLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KHR5cGUpKTsKICAgICAgICB9IGNhdGNoKF8pIHsKICAgICAgICB9CiAgICB9OwogICAgY29uc3QgWEhSQmVmb3JlID0gWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlOwogICAgc2VsZi5YTUxIdHRwUmVxdWVzdCA9IGNsYXNzIGV4dGVuZHMgc2VsZi5YTUxIdHRwUmVxdWVzdCB7CiAgICAgICAgb3BlbihtZXRob2QsIHVybCwgLi4uYXJncykgewogICAgICAgICAgICB4aHJJbnN0YW5jZXMuZGVsZXRlKHRoaXMpOwogICAgICAgICAgICBpZiAoIHdhck9yaWdpbiAhPT0gdW5kZWZpbmVkICYmIHVybC5zdGFydHNXaXRoKHdhck9yaWdpbikgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIub3BlbihtZXRob2QsIHVybCwgLi4uYXJncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgaGF5c3RhY2sgPSB7IG1ldGhvZCwgdXJsIH07CiAgICAgICAgICAgIGlmICggcHJvcHNUb01hdGNoID09PSAnJyAmJiBkaXJlY3RpdmUgPT09ICcnICkgewogICAgICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCBgQ2FsbGVkOiAke3NhZmUuSlNPTl9zdHJpbmdpZnkoaGF5c3RhY2ssIG51bGwsIDIpfWApOwogICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLm9wZW4obWV0aG9kLCB1cmwsIC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggbWF0Y2hPYmplY3RQcm9wZXJ0aWVzKHByb3BOZWVkbGVzLCBoYXlzdGFjaykgKSB7CiAgICAgICAgICAgICAgICBjb25zdCB4aHJEZXRhaWxzID0gT2JqZWN0LmFzc2lnbihoYXlzdGFjaywgewogICAgICAgICAgICAgICAgICAgIHhocjogdGhpcywKICAgICAgICAgICAgICAgICAgICBkZWZlcjogYXJncy5sZW5ndGggPT09IDAgfHwgISFhcmdzWzBdLAogICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZSwKICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICdkYXRlJzogJycsCiAgICAgICAgICAgICAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQtbGVuZ3RoJzogJycsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB1cmw6IGhheXN0YWNrLnVybCwKICAgICAgICAgICAgICAgICAgICBwcm9wczogewogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTogeyB2YWx1ZTogJycgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUZXh0OiB7IHZhbHVlOiAnJyB9LAogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVhNTDogeyB2YWx1ZTogbnVsbCB9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHhockluc3RhbmNlcy5zZXQodGhpcywgeGhyRGV0YWlscyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHN1cGVyLm9wZW4obWV0aG9kLCB1cmwsIC4uLmFyZ3MpOwogICAgICAgIH0KICAgICAgICBzZW5kKC4uLmFyZ3MpIHsKICAgICAgICAgICAgY29uc3QgeGhyRGV0YWlscyA9IHhockluc3RhbmNlcy5nZXQodGhpcyk7CiAgICAgICAgICAgIGlmICggeGhyRGV0YWlscyA9PT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLnNlbmQoLi4uYXJncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgeGhyRGV0YWlscy5oZWFkZXJzWydkYXRlJ10gPSAobmV3IERhdGUoKSkudG9VVENTdHJpbmcoKTsKICAgICAgICAgICAgbGV0IHhoclRleHQgPSAnJzsKICAgICAgICAgICAgc3dpdGNoICggdGhpcy5yZXNwb25zZVR5cGUgKSB7CiAgICAgICAgICAgIGNhc2UgJ2FycmF5YnVmZmVyJzoKICAgICAgICAgICAgICAgIHhockRldGFpbHMucHJvcHMucmVzcG9uc2UudmFsdWUgPSBuZXcgQXJyYXlCdWZmZXIoMCk7CiAgICAgICAgICAgICAgICB4aHJEZXRhaWxzLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnYmxvYic6CiAgICAgICAgICAgICAgICB4aHJEZXRhaWxzLnByb3BzLnJlc3BvbnNlLnZhbHVlID0gbmV3IEJsb2IoW10pOwogICAgICAgICAgICAgICAgeGhyRGV0YWlscy5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2RvY3VtZW50JzogewogICAgICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpOwogICAgICAgICAgICAgICAgY29uc3QgZG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZygnJywgJ3RleHQvaHRtbCcpOwogICAgICAgICAgICAgICAgeGhyRGV0YWlscy5wcm9wcy5yZXNwb25zZS52YWx1ZSA9IGRvYzsKICAgICAgICAgICAgICAgIHhockRldGFpbHMucHJvcHMucmVzcG9uc2VYTUwudmFsdWUgPSBkb2M7CiAgICAgICAgICAgICAgICB4aHJEZXRhaWxzLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID0gJ3RleHQvaHRtbCc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlICdqc29uJzoKICAgICAgICAgICAgICAgIHhockRldGFpbHMucHJvcHMucmVzcG9uc2UudmFsdWUgPSB7fTsKICAgICAgICAgICAgICAgIHhockRldGFpbHMucHJvcHMucmVzcG9uc2VUZXh0LnZhbHVlID0gJ3t9JzsKICAgICAgICAgICAgICAgIHhockRldGFpbHMuaGVhZGVyc1snY29udGVudC10eXBlJ10gPSAnYXBwbGljYXRpb24vanNvbic7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgICAgaWYgKCBkaXJlY3RpdmUgPT09ICcnICkgeyBicmVhazsgfQogICAgICAgICAgICAgICAgeGhyVGV4dCA9IGdlbmVyYXRlQ29udGVudEZuKHRydXN0ZWQsIHhockRldGFpbHMuZGlyZWN0aXZlKTsKICAgICAgICAgICAgICAgIGlmICggeGhyVGV4dCBpbnN0YW5jZW9mIFByb21pc2UgKSB7CiAgICAgICAgICAgICAgICAgICAgeGhyVGV4dCA9IHhoclRleHQudGhlbih0ZXh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgeGhyRGV0YWlscy5wcm9wcy5yZXNwb25zZS52YWx1ZSA9IHRleHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHhockRldGFpbHMucHJvcHMucmVzcG9uc2VUZXh0LnZhbHVlID0gdGV4dDsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgeGhyRGV0YWlscy5wcm9wcy5yZXNwb25zZS52YWx1ZSA9IHhoclRleHQ7CiAgICAgICAgICAgICAgICAgICAgeGhyRGV0YWlscy5wcm9wcy5yZXNwb25zZVRleHQudmFsdWUgPSB4aHJUZXh0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgeGhyRGV0YWlscy5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9ICd0ZXh0L3BsYWluJzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCB4aHJEZXRhaWxzLmRlZmVyID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHhockRldGFpbHMuaGVhZGVyc1snY29udGVudC1sZW5ndGgnXSA9IGAke3hockRldGFpbHMucHJvcHMucmVzcG9uc2UudmFsdWV9YC5sZW5ndGg7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh4aHJEZXRhaWxzLnhociwgewogICAgICAgICAgICAgICAgICAgIHJlYWR5U3RhdGU6IHsgdmFsdWU6IDQgfSwKICAgICAgICAgICAgICAgICAgICByZXNwb25zZVVSTDogeyB2YWx1ZTogeGhyRGV0YWlscy51cmwgfSwKICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHsgdmFsdWU6IDIwMCB9LAogICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6IHsgdmFsdWU6ICdPSycgfSwKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoeGhyRGV0YWlscy54aHIsIHhockRldGFpbHMucHJvcHMpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSh4aHJUZXh0KS50aGVuKCggKSA9PiB4aHJEZXRhaWxzKS50aGVuKGRldGFpbHMgPT4gewogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZGV0YWlscy54aHIsIHsKICAgICAgICAgICAgICAgICAgICByZWFkeVN0YXRlOiB7IHZhbHVlOiAxLCBjb25maWd1cmFibGU6IHRydWUgfSwKICAgICAgICAgICAgICAgICAgICByZXNwb25zZVVSTDogeyB2YWx1ZTogeGhyRGV0YWlscy51cmwgfSwKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgc2FmZURpc3BhdGNoRXZlbnQoZGV0YWlscy54aHIsICdyZWFkeXN0YXRlY2hhbmdlJyk7CiAgICAgICAgICAgICAgICByZXR1cm4gZGV0YWlsczsKICAgICAgICAgICAgfSkudGhlbihkZXRhaWxzID0+IHsKICAgICAgICAgICAgICAgIHhockRldGFpbHMuaGVhZGVyc1snY29udGVudC1sZW5ndGgnXSA9IGAke2RldGFpbHMucHJvcHMucmVzcG9uc2UudmFsdWV9YC5sZW5ndGg7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhkZXRhaWxzLnhociwgewogICAgICAgICAgICAgICAgICAgIHJlYWR5U3RhdGU6IHsgdmFsdWU6IDIsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LAogICAgICAgICAgICAgICAgICAgIHN0YXR1czogeyB2YWx1ZTogMjAwIH0sCiAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogeyB2YWx1ZTogJ09LJyB9LAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBzYWZlRGlzcGF0Y2hFdmVudChkZXRhaWxzLnhociwgJ3JlYWR5c3RhdGVjaGFuZ2UnKTsKICAgICAgICAgICAgICAgIHJldHVybiBkZXRhaWxzOwogICAgICAgICAgICB9KS50aGVuKGRldGFpbHMgPT4gewogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZGV0YWlscy54aHIsIHsKICAgICAgICAgICAgICAgICAgICByZWFkeVN0YXRlOiB7IHZhbHVlOiAzLCBjb25maWd1cmFibGU6IHRydWUgfSwKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZGV0YWlscy54aHIsIGRldGFpbHMucHJvcHMpOwogICAgICAgICAgICAgICAgc2FmZURpc3BhdGNoRXZlbnQoZGV0YWlscy54aHIsICdyZWFkeXN0YXRlY2hhbmdlJyk7CiAgICAgICAgICAgICAgICByZXR1cm4gZGV0YWlsczsKICAgICAgICAgICAgfSkudGhlbihkZXRhaWxzID0+IHsKICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGRldGFpbHMueGhyLCB7CiAgICAgICAgICAgICAgICAgICAgcmVhZHlTdGF0ZTogeyB2YWx1ZTogNCB9LAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBzYWZlRGlzcGF0Y2hFdmVudChkZXRhaWxzLnhociwgJ3JlYWR5c3RhdGVjaGFuZ2UnKTsKICAgICAgICAgICAgICAgIHNhZmVEaXNwYXRjaEV2ZW50KGRldGFpbHMueGhyLCAnbG9hZCcpOwogICAgICAgICAgICAgICAgc2FmZURpc3BhdGNoRXZlbnQoZGV0YWlscy54aHIsICdsb2FkZW5kJyk7CiAgICAgICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBQcmV2ZW50ZWQgd2l0aCByZXNwb25zZTpcbiR7ZGV0YWlscy54aHIucmVzcG9uc2V9YCk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBnZXRSZXNwb25zZUhlYWRlcihoZWFkZXJOYW1lKSB7CiAgICAgICAgICAgIGNvbnN0IHhockRldGFpbHMgPSB4aHJJbnN0YW5jZXMuZ2V0KHRoaXMpOwogICAgICAgICAgICBpZiAoIHhockRldGFpbHMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnJlYWR5U3RhdGUgPCB0aGlzLkhFQURFUlNfUkVDRUlWRUQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuZ2V0UmVzcG9uc2VIZWFkZXIoaGVhZGVyTmFtZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB4aHJEZXRhaWxzLmhlYWRlcnNbaGVhZGVyTmFtZS50b0xvd2VyQ2FzZSgpXTsKICAgICAgICAgICAgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSAnJyApIHsgcmV0dXJuIHZhbHVlOyB9CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgICAgICBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSB7CiAgICAgICAgICAgIGNvbnN0IHhockRldGFpbHMgPSB4aHJJbnN0YW5jZXMuZ2V0KHRoaXMpOwogICAgICAgICAgICBpZiAoIHhockRldGFpbHMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnJlYWR5U3RhdGUgPCB0aGlzLkhFQURFUlNfUkVDRUlWRUQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3Qgb3V0ID0gW107CiAgICAgICAgICAgIGZvciAoIGNvbnN0IFsgbmFtZSwgdmFsdWUgXSBvZiBPYmplY3QuZW50cmllcyh4aHJEZXRhaWxzLmhlYWRlcnMpICkgewogICAgICAgICAgICAgICAgaWYgKCAhdmFsdWUgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBvdXQucHVzaChgJHtuYW1lfTogJHt2YWx1ZX1gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIG91dC5sZW5ndGggIT09IDAgKSB7IG91dC5wdXNoKCcnKTsgfQogICAgICAgICAgICByZXR1cm4gb3V0LmpvaW4oJ1xyXG4nKTsKICAgICAgICB9CiAgICB9OwogICAgc2VsZi5YTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUub3Blbi50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBYSFJCZWZvcmUub3Blbi50b1N0cmluZygpOwogICAgfTsKICAgIHNlbGYuWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLnNlbmQudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gWEhSQmVmb3JlLnNlbmQudG9TdHJpbmcoKTsKICAgIH07CiAgICBzZWxmLlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5nZXRSZXNwb25zZUhlYWRlci50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBYSFJCZWZvcmUuZ2V0UmVzcG9uc2VIZWFkZXIudG9TdHJpbmcoKTsKICAgIH07CiAgICBzZWxmLlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5nZXRBbGxSZXNwb25zZUhlYWRlcnMudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gWEhSQmVmb3JlLmdldEFsbFJlc3BvbnNlSGVhZGVycy50b1N0cmluZygpOwogICAgfTsKfQoKICAoZnVuY3Rpb24gcHJldmVudFhociguLi5hcmdzKSB7CiAgICByZXR1cm4gcHJldmVudFhockZuKGZhbHNlLCAuLi5hcmdzKTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"prevent-window-open.js","aliases":["nowoif.js","no-window-open-if.js","window.open-defuser.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBwcm94eUFwcGx5Rm4oCiAgICB0YXJnZXQgPSAnJywKICAgIGhhbmRsZXIgPSAnJwopIHsKICAgIGxldCBjb250ZXh0ID0gZ2xvYmFsVGhpczsKICAgIGxldCBwcm9wID0gdGFyZ2V0OwogICAgZm9yICg7OykgewogICAgICAgIGNvbnN0IHBvcyA9IHByb3AuaW5kZXhPZignLicpOwogICAgICAgIGlmICggcG9zID09PSAtMSApIHsgYnJlYWs7IH0KICAgICAgICBjb250ZXh0ID0gY29udGV4dFtwcm9wLnNsaWNlKDAsIHBvcyldOwogICAgICAgIGlmICggY29udGV4dCBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIHByb3AgPSBwcm9wLnNsaWNlKHBvcysxKTsKICAgIH0KICAgIGNvbnN0IGZuID0gY29udGV4dFtwcm9wXTsKICAgIGlmICggdHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nICkgeyByZXR1cm47IH0KICAgIGlmICggcHJveHlBcHBseUZuLkN0b3JDb250ZXh0ID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dCA9IGNsYXNzIHsKICAgICAgICAgICAgY29uc3RydWN0b3IoLi4uYXJncykgewogICAgICAgICAgICAgICAgdGhpcy5pbml0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGluaXQoY2FsbEZuLCBjYWxsQXJncykgewogICAgICAgICAgICAgICAgdGhpcy5jYWxsRm4gPSBjYWxsRm47CiAgICAgICAgICAgICAgICB0aGlzLmNhbGxBcmdzID0gY2FsbEFyZ3M7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgICAgfQogICAgICAgICAgICByZWZsZWN0KCkgewogICAgICAgICAgICAgICAgY29uc3QgciA9IFJlZmxlY3QuY29uc3RydWN0KHRoaXMuY2FsbEZuLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5jdG9yQ29udGV4dHMucHVzaCh0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN0YXRpYyBmYWN0b3J5KC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwcm94eUFwcGx5Rm4uY3RvckNvbnRleHRzLmxlbmd0aCAhPT0gMAogICAgICAgICAgICAgICAgICAgID8gcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkN0b3JDb250ZXh0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5BcHBseUNvbnRleHQgPSBjbGFzcyB7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuaW5pdCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbml0KGNhbGxGbiwgdGhpc0FyZywgY2FsbEFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gY2FsbEZuOwogICAgICAgICAgICAgICAgdGhpcy50aGlzQXJnID0gdGhpc0FyZzsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEFyZ3MgPSBjYWxsQXJnczsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlZmxlY3QoKSB7CiAgICAgICAgICAgICAgICBjb25zdCByID0gUmVmbGVjdC5hcHBseSh0aGlzLmNhbGxGbiwgdGhpcy50aGlzQXJnLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy50aGlzQXJnID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5hcHBseUNvbnRleHRzLnB1c2godGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGF0aWMgZmFjdG9yeSguLi5hcmdzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcHJveHlBcHBseUZuLmFwcGx5Q29udGV4dHMubGVuZ3RoICE9PSAwCiAgICAgICAgICAgICAgICAgICAgPyBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkFwcGx5Q29udGV4dCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBmblN0ciA9IGZuLnRvU3RyaW5nKCk7CiAgICBjb25zdCB0b1N0cmluZyA9IChmdW5jdGlvbiB0b1N0cmluZygpIHsgcmV0dXJuIGZuU3RyOyB9KS5iaW5kKG51bGwpOwogICAgY29uc3QgcHJveHlEZXRhaWxzID0gewogICAgICAgIGFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICByZXR1cm4gaGFuZGxlcihwcm94eUFwcGx5Rm4uQXBwbHlDb250ZXh0LmZhY3RvcnkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSk7CiAgICAgICAgfSwKICAgICAgICBnZXQodGFyZ2V0LCBwcm9wKSB7CiAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ3RvU3RyaW5nJyApIHsgcmV0dXJuIHRvU3RyaW5nOyB9CiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3ApOwogICAgICAgIH0sCiAgICB9OwogICAgaWYgKCBmbi5wcm90b3R5cGU/LmNvbnN0cnVjdG9yID09PSBmbiApIHsKICAgICAgICBwcm94eURldGFpbHMuY29uc3RydWN0ID0gZnVuY3Rpb24odGFyZ2V0LCBhcmdzKSB7CiAgICAgICAgICAgIHJldHVybiBoYW5kbGVyKHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dC5mYWN0b3J5KHRhcmdldCwgYXJncykpOwogICAgICAgIH07CiAgICB9CiAgICBjb250ZXh0W3Byb3BdID0gbmV3IFByb3h5KGZuLCBwcm94eURldGFpbHMpOwp9CgogIChmdW5jdGlvbiBub1dpbmRvd09wZW5JZigKICAgIHBhdHRlcm4gPSAnJywKICAgIGRlbGF5ID0gJycsCiAgICBkZWNveSA9ICcnCikgewogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBsb2dQcmVmaXggPSBzYWZlLm1ha2VMb2dQcmVmaXgoJ25vLXdpbmRvdy1vcGVuLWlmJywgcGF0dGVybiwgZGVsYXksIGRlY295KTsKICAgIGNvbnN0IHRhcmdldE1hdGNoUmVzdWx0ID0gcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlOwogICAgaWYgKCB0YXJnZXRNYXRjaFJlc3VsdCA9PT0gZmFsc2UgKSB7CiAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICB9CiAgICBjb25zdCByZVBhdHRlcm4gPSBzYWZlLnBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4pOwogICAgY29uc3QgYXV0b1JlbW92ZUFmdGVyID0gKHBhcnNlRmxvYXQoZGVsYXkpIHx8IDApICogMTAwMDsKICAgIGNvbnN0IHNldFRpbWVvdXQgPSBzZWxmLnNldFRpbWVvdXQ7CiAgICBjb25zdCBjcmVhdGVEZWNveSA9IGZ1bmN0aW9uKHRhZywgdXJsUHJvcCwgdXJsKSB7CiAgICAgICAgY29uc3QgZGVjb3lFbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOwogICAgICAgIGRlY295RWxlbVt1cmxQcm9wXSA9IHVybDsKICAgICAgICBkZWNveUVsZW0uc3R5bGUuc2V0UHJvcGVydHkoJ2hlaWdodCcsJzFweCcsICdpbXBvcnRhbnQnKTsKICAgICAgICBkZWNveUVsZW0uc3R5bGUuc2V0UHJvcGVydHkoJ3Bvc2l0aW9uJywnZml4ZWQnLCAnaW1wb3J0YW50Jyk7CiAgICAgICAgZGVjb3lFbGVtLnN0eWxlLnNldFByb3BlcnR5KCd0b3AnLCctMXB4JywgJ2ltcG9ydGFudCcpOwogICAgICAgIGRlY295RWxlbS5zdHlsZS5zZXRQcm9wZXJ0eSgnd2lkdGgnLCcxcHgnLCAnaW1wb3J0YW50Jyk7CiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkZWNveUVsZW0pOwogICAgICAgIHNldFRpbWVvdXQoKCApID0+IHsgZGVjb3lFbGVtLnJlbW92ZSgpOyB9LCBhdXRvUmVtb3ZlQWZ0ZXIpOwogICAgICAgIHJldHVybiBkZWNveUVsZW07CiAgICB9OwogICAgY29uc3Qgbm9vcEZ1bmMgPSBmdW5jdGlvbigpe307CiAgICBwcm94eUFwcGx5Rm4oJ29wZW4nLCBmdW5jdGlvbiBvcGVuKGNvbnRleHQpIHsKICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICdkZWJ1ZycgJiYgc2FmZS5sb2dMZXZlbCAhPT0gMCApIHsKICAgICAgICAgICAgZGVidWdnZXI7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZGVidWdnZXIKICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQucmVmbGVjdCgpOwogICAgICAgIH0KICAgICAgICBjb25zdCB7IGNhbGxBcmdzIH0gPSBjb250ZXh0OwogICAgICAgIGNvbnN0IGhheXN0YWNrID0gY2FsbEFyZ3Muam9pbignICcpOwogICAgICAgIGlmICggcmVQYXR0ZXJuLnRlc3QoaGF5c3RhY2spICE9PSB0YXJnZXRNYXRjaFJlc3VsdCApIHsKICAgICAgICAgICAgaWYgKCBzYWZlLmxvZ0xldmVsID4gMSApIHsKICAgICAgICAgICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgYEFsbG93ZWQgKCR7Y2FsbEFyZ3Muam9pbignLCAnKX0pYCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQucmVmbGVjdCgpOwogICAgICAgIH0KICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBQcmV2ZW50ZWQgKCR7Y2FsbEFyZ3Muam9pbignLCAnKX0pYCk7CiAgICAgICAgaWYgKCBkZWxheSA9PT0gJycgKSB7IHJldHVybiBudWxsOyB9CiAgICAgICAgaWYgKCBkZWNveSA9PT0gJ2JsYW5rJyApIHsKICAgICAgICAgICAgY2FsbEFyZ3NbMF0gPSAnYWJvdXQ6YmxhbmsnOwogICAgICAgICAgICBjb25zdCByID0gY29udGV4dC5yZWZsZWN0KCk7CiAgICAgICAgICAgIHNldFRpbWVvdXQoKCApID0+IHsgci5jbG9zZSgpOyB9LCBhdXRvUmVtb3ZlQWZ0ZXIpOwogICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICB9CiAgICAgICAgY29uc3QgZGVjb3lFbGVtID0gZGVjb3kgPT09ICdvYmonCiAgICAgICAgICAgID8gY3JlYXRlRGVjb3koJ29iamVjdCcsICdkYXRhJywgLi4uY2FsbEFyZ3MpCiAgICAgICAgICAgIDogY3JlYXRlRGVjb3koJ2lmcmFtZScsICdzcmMnLCAuLi5jYWxsQXJncyk7CiAgICAgICAgbGV0IHBvcHVwID0gZGVjb3lFbGVtLmNvbnRlbnRXaW5kb3c7CiAgICAgICAgaWYgKCB0eXBlb2YgcG9wdXAgPT09ICdvYmplY3QnICYmIHBvcHVwICE9PSBudWxsICkgewogICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocG9wdXAsICdjbG9zZWQnLCB7IHZhbHVlOiBmYWxzZSB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBwb3B1cCA9IG5ldyBQcm94eShzZWxmLCB7CiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKHRhcmdldCwgcHJvcCwgLi4uYXJncykgewogICAgICAgICAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ2Nsb3NlZCcgKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIC4uLmFyZ3MpOwogICAgICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHIgPT09ICdmdW5jdGlvbicgKSB7IHJldHVybiBub29wRnVuYzsgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNldDogZnVuY3Rpb24oLi4uYXJncykgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LnNldCguLi5hcmdzKTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBpZiAoIHNhZmUubG9nTGV2ZWwgIT09IDAgKSB7CiAgICAgICAgICAgIHBvcHVwID0gbmV3IFByb3h5KHBvcHVwLCB7CiAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKHRhcmdldCwgcHJvcCwgLi4uYXJncykgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3AsIC4uLmFyZ3MpOwogICAgICAgICAgICAgICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgYHBvcHVwIC8gZ2V0ICR7cHJvcH0gPT09ICR7cn1gKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiByID09PSAnZnVuY3Rpb24nICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHsgcmV0dXJuIHIuY2FsbCh0YXJnZXQsIC4uLmFyZ3MpOyB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKHRhcmdldCwgcHJvcCwgdmFsdWUsIC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBwb3B1cCAvIHNldCAke3Byb3B9ID0gJHt2YWx1ZX1gKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5zZXQodGFyZ2V0LCBwcm9wLCB2YWx1ZSwgLi4uYXJncyk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHBvcHVwOwogICAgfSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"close-window.js","aliases":["window-close-if.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24gY2xvc2VXaW5kb3coCiAgICBhcmcxID0gJycKKSB7CiAgICBpZiAoIHR5cGVvZiBhcmcxICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGxldCBzdWJqZWN0ID0gJyc7CiAgICBpZiAoIC9eXC8uKlwvJC8udGVzdChhcmcxKSApIHsKICAgICAgICBzdWJqZWN0ID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CiAgICB9IGVsc2UgaWYgKCBhcmcxICE9PSAnJyApIHsKICAgICAgICBzdWJqZWN0ID0gYCR7d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lfSR7d2luZG93LmxvY2F0aW9uLnNlYXJjaH1gOwogICAgfQogICAgdHJ5IHsKICAgICAgICBjb25zdCByZSA9IHNhZmUucGF0dGVyblRvUmVnZXgoYXJnMSk7CiAgICAgICAgaWYgKCByZS50ZXN0KHN1YmplY3QpICkgewogICAgICAgICAgICB3aW5kb3cuY2xvc2UoKTsKICAgICAgICB9CiAgICB9IGNhdGNoKGV4KSB7CiAgICAgICAgY29uc29sZS5sb2coZXgpOwogICAgfQp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"window.name-defuser.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgCiAgKGZ1bmN0aW9uIHdpbmRvd05hbWVEZWZ1c2VyKCkgewogICAgaWYgKCB3aW5kb3cgPT09IHdpbmRvdy50b3AgKSB7CiAgICAgICAgd2luZG93Lm5hbWUgPSAnJzsKICAgIH0KfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"overlay-buster.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgCiAgKGZ1bmN0aW9uIG92ZXJsYXlCdXN0ZXIoKSB7CiAgICBpZiAoIHdpbmRvdyAhPT0gd2luZG93LnRvcCApIHsgcmV0dXJuOyB9CiAgICB2YXIgdHN0YXJ0OwogICAgdmFyIHR0bCA9IDMwMDAwOwogICAgdmFyIGRlbGF5ID0gMDsKICAgIHZhciBkZWxheVN0ZXAgPSA1MDsKICAgIHZhciBidXN0ZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgZG9jRWwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsCiAgICAgICAgICAgIGJvZHlFbCA9IGRvY3VtZW50LmJvZHksCiAgICAgICAgICAgIHZ3ID0gTWF0aC5taW4oZG9jRWwuY2xpZW50V2lkdGgsIHdpbmRvdy5pbm5lcldpZHRoKSwKICAgICAgICAgICAgdmggPSBNYXRoLm1pbihkb2NFbC5jbGllbnRIZWlnaHQsIHdpbmRvdy5pbm5lckhlaWdodCksCiAgICAgICAgICAgIHRvbCA9IE1hdGgubWluKHZ3LCB2aCkgKiAwLjA1LAogICAgICAgICAgICBlbCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQodncvMiwgdmgvMiksCiAgICAgICAgICAgIHN0eWxlLCByZWN0OwogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgaWYgKCBlbCA9PT0gbnVsbCB8fCBlbC5wYXJlbnROb2RlID09PSBudWxsIHx8IGVsID09PSBib2R5RWwgKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsKTsKICAgICAgICAgICAgaWYgKCBwYXJzZUludChzdHlsZS56SW5kZXgsIDEwKSA+PSAxMDAwIHx8IHN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnICkgewogICAgICAgICAgICAgICAgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgICAgICAgICAgICAgaWYgKCByZWN0LmxlZnQgPD0gdG9sICYmIHJlY3QudG9wIDw9IHRvbCAmJiAodncgLSByZWN0LnJpZ2h0KSA8PSB0b2wgJiYgKHZoIC0gcmVjdC5ib3R0b20pIDwgdG9sICkgewogICAgICAgICAgICAgICAgICAgIGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWwpOwogICAgICAgICAgICAgICAgICAgIHRzdGFydCA9IERhdGUubm93KCk7CiAgICAgICAgICAgICAgICAgICAgZWwgPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHZ3LzIsIHZoLzIpOwogICAgICAgICAgICAgICAgICAgIGJvZHlFbC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cnLCAnYXV0bycsICdpbXBvcnRhbnQnKTsKICAgICAgICAgICAgICAgICAgICBkb2NFbC5zdHlsZS5zZXRQcm9wZXJ0eSgnb3ZlcmZsb3cnLCAnYXV0bycsICdpbXBvcnRhbnQnKTsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbCA9IGVsLnBhcmVudE5vZGU7CiAgICAgICAgfQogICAgICAgIGlmICggKERhdGUubm93KCkgLSB0c3RhcnQpIDwgdHRsICkgewogICAgICAgICAgICBkZWxheSA9IE1hdGgubWluKGRlbGF5ICsgZGVsYXlTdGVwLCAxMDAwKTsKICAgICAgICAgICAgc2V0VGltZW91dChidXN0ZXIsIGRlbGF5KTsKICAgICAgICB9CiAgICB9OwogICAgdmFyIGRvbVJlYWR5ID0gZnVuY3Rpb24oZXYpIHsKICAgICAgICBpZiAoIGV2ICkgewogICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKGV2LnR5cGUsIGRvbVJlYWR5KTsKICAgICAgICB9CiAgICAgICAgdHN0YXJ0ID0gRGF0ZS5ub3coKTsKICAgICAgICBzZXRUaW1lb3V0KGJ1c3RlciwgZGVsYXkpOwogICAgfTsKICAgIGlmICggZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnICkgewogICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBkb21SZWFkeSk7CiAgICB9IGVsc2UgewogICAgICAgIGRvbVJlYWR5KCk7CiAgICB9Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"alert-buster.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgCiAgKGZ1bmN0aW9uIGFsZXJ0QnVzdGVyKCkgewogICAgd2luZG93LmFsZXJ0ID0gbmV3IFByb3h5KHdpbmRvdy5hbGVydCwgewogICAgICAgIGFwcGx5OiBmdW5jdGlvbihhKSB7CiAgICAgICAgICAgIGNvbnNvbGUuaW5mbyhhKTsKICAgICAgICB9LAogICAgICAgIGdldCh0YXJnZXQsIHByb3ApIHsKICAgICAgICAgICAgaWYgKCBwcm9wID09PSAndG9TdHJpbmcnICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRhcmdldC50b1N0cmluZy5iaW5kKHRhcmdldCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCk7CiAgICAgICAgfSwKICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"nowebrtc.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgCiAgKGZ1bmN0aW9uIG5vV2VicnRjKCkgewogICAgdmFyIHJ0Y05hbWUgPSB3aW5kb3cuUlRDUGVlckNvbm5lY3Rpb24gPyAnUlRDUGVlckNvbm5lY3Rpb24nIDogKAogICAgICAgIHdpbmRvdy53ZWJraXRSVENQZWVyQ29ubmVjdGlvbiA/ICd3ZWJraXRSVENQZWVyQ29ubmVjdGlvbicgOiAnJwogICAgKTsKICAgIGlmICggcnRjTmFtZSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgdmFyIGxvZyA9IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSk7CiAgICB2YXIgcGMgPSBmdW5jdGlvbihjZmcpIHsKICAgICAgICBsb2coJ0RvY3VtZW50IHRyaWVkIHRvIGNyZWF0ZSBhbiBSVENQZWVyQ29ubmVjdGlvbjogJW8nLCBjZmcpOwogICAgfTsKICAgIGNvbnN0IG5vb3AgPSBmdW5jdGlvbigpIHsKICAgIH07CiAgICBwYy5wcm90b3R5cGUgPSB7CiAgICAgICAgY2xvc2U6IG5vb3AsCiAgICAgICAgY3JlYXRlRGF0YUNoYW5uZWw6IG5vb3AsCiAgICAgICAgY3JlYXRlT2ZmZXI6IG5vb3AsCiAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb246IG5vb3AsCiAgICAgICAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gJ1tvYmplY3QgUlRDUGVlckNvbm5lY3Rpb25dJzsKICAgICAgICB9CiAgICB9OwogICAgdmFyIHogPSB3aW5kb3dbcnRjTmFtZV07CiAgICB3aW5kb3dbcnRjTmFtZV0gPSBwYy5iaW5kKHdpbmRvdyk7CiAgICBpZiAoIHoucHJvdG90eXBlICkgewogICAgICAgIHoucHJvdG90eXBlLmNyZWF0ZURhdGFDaGFubmVsID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBjbG9zZTogZnVuY3Rpb24oKSB7fSwKICAgICAgICAgICAgICAgIHNlbmQ6IGZ1bmN0aW9uKCkge30KICAgICAgICAgICAgfTsKICAgICAgICB9LmJpbmQobnVsbCk7CiAgICB9Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"disable-newtab-links.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgCiAgKGZ1bmN0aW9uIGRpc2FibGVOZXd0YWJMaW5rcygpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpIHsKICAgICAgICB2YXIgdGFyZ2V0ID0gZXYudGFyZ2V0OwogICAgICAgIHdoaWxlICggdGFyZ2V0ICE9PSBudWxsICkgewogICAgICAgICAgICBpZiAoIHRhcmdldC5sb2NhbE5hbWUgPT09ICdhJyAmJiB0YXJnZXQuaGFzQXR0cmlidXRlKCd0YXJnZXQnKSApIHsKICAgICAgICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnROb2RlOwogICAgICAgIH0KICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"xml-prune.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24geG1sUHJ1bmUoCiAgICBzZWxlY3RvciA9ICcnLAogICAgc2VsZWN0b3JDaGVjayA9ICcnLAogICAgdXJsUGF0dGVybiA9ICcnCikgewogICAgaWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGlmICggc2VsZWN0b3IgPT09ICcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbG9nUHJlZml4ID0gc2FmZS5tYWtlTG9nUHJlZml4KCd4bWwtcHJ1bmUnLCBzZWxlY3Rvciwgc2VsZWN0b3JDaGVjaywgdXJsUGF0dGVybik7CiAgICBjb25zdCByZVVybCA9IHNhZmUucGF0dGVyblRvUmVnZXgodXJsUGF0dGVybik7CiAgICBjb25zdCBleHRyYUFyZ3MgPSBzYWZlLmdldEV4dHJhQXJncyhBcnJheS5mcm9tKGFyZ3VtZW50cyksIDMpOwogICAgY29uc3QgcXVlcnlBbGwgPSAoeG1sRG9jLCBzZWxlY3RvcikgPT4gewogICAgICAgIGNvbnN0IGlzWHBhdGggPSAvXnhwYXRoXCguK1wpJC8udGVzdChzZWxlY3Rvcik7CiAgICAgICAgaWYgKCBpc1hwYXRoID09PSBmYWxzZSApIHsKICAgICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oeG1sRG9jLnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKICAgICAgICB9CiAgICAgICAgY29uc3QgeHByID0geG1sRG9jLmV2YWx1YXRlKAogICAgICAgICAgICBzZWxlY3Rvci5zbGljZSg2LCAtMSksCiAgICAgICAgICAgIHhtbERvYywKICAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAgWFBhdGhSZXN1bHQuVU5PUkRFUkVEX05PREVfU05BUFNIT1RfVFlQRSwKICAgICAgICAgICAgbnVsbAogICAgICAgICk7CiAgICAgICAgY29uc3Qgb3V0ID0gW107CiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgeHByLnNuYXBzaG90TGVuZ3RoOyBpKysgKSB7CiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB4cHIuc25hcHNob3RJdGVtKGkpOwogICAgICAgICAgICBvdXQucHVzaChub2RlKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG91dDsKICAgIH07CiAgICBjb25zdCBwcnVuZUZyb21Eb2MgPSB4bWxEb2MgPT4gewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmICggc2VsZWN0b3JDaGVjayAhPT0gJycgJiYgeG1sRG9jLnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3JDaGVjaykgPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geG1sRG9jOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggZXh0cmFBcmdzLmxvZ2RvYyApIHsKICAgICAgICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZXIgPSBuZXcgWE1MU2VyaWFsaXplcigpOwogICAgICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCBgRG9jdW1lbnQgaXNcblx0JHtzZXJpYWxpemVyLnNlcmlhbGl6ZVRvU3RyaW5nKHhtbERvYyl9YCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgaXRlbXMgPSBxdWVyeUFsbCh4bWxEb2MsIHNlbGVjdG9yKTsKICAgICAgICAgICAgaWYgKCBpdGVtcy5sZW5ndGggPT09IDAgKSB7IHJldHVybiB4bWxEb2M7IH0KICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCBgUmVtb3ZpbmcgJHtpdGVtcy5sZW5ndGh9IGl0ZW1zYCk7CiAgICAgICAgICAgIGZvciAoIGNvbnN0IGl0ZW0gb2YgaXRlbXMgKSB7CiAgICAgICAgICAgICAgICBpZiAoIGl0ZW0ubm9kZVR5cGUgPT09IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgaXRlbS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIGl0ZW0ubm9kZVR5cGUgPT09IDIgKSB7CiAgICAgICAgICAgICAgICAgICAgaXRlbS5vd25lckVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGl0ZW0ubm9kZU5hbWUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCBgJHtpdGVtLmNvbnN0cnVjdG9yLm5hbWV9LiR7aXRlbS5ub2RlTmFtZX0gcmVtb3ZlZGApOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaChleCkgewogICAgICAgICAgICBzYWZlLnVib0Vycihsb2dQcmVmaXgsIGBFcnJvcjogJHtleH1gKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHhtbERvYzsKICAgIH07CiAgICBjb25zdCBwcnVuZUZyb21UZXh0ID0gdGV4dCA9PiB7CiAgICAgICAgaWYgKCAoL15ccyo8Ly50ZXN0KHRleHQpICYmIC8+XHMqJC8udGVzdCh0ZXh0KSkgPT09IGZhbHNlICkgewogICAgICAgICAgICByZXR1cm4gdGV4dDsKICAgICAgICB9CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgY29uc3QgeG1sUGFyc2VyID0gbmV3IERPTVBhcnNlcigpOwogICAgICAgICAgICBjb25zdCB4bWxEb2MgPSB4bWxQYXJzZXIucGFyc2VGcm9tU3RyaW5nKHRleHQsICd0ZXh0L3htbCcpOwogICAgICAgICAgICBwcnVuZUZyb21Eb2MoeG1sRG9jKTsKICAgICAgICAgICAgY29uc3Qgc2VyaWFsaXplciA9IG5ldyBYTUxTZXJpYWxpemVyKCk7CiAgICAgICAgICAgIHRleHQgPSBzZXJpYWxpemVyLnNlcmlhbGl6ZVRvU3RyaW5nKHhtbERvYyk7CiAgICAgICAgfSBjYXRjaChleCkgewogICAgICAgIH0KICAgICAgICByZXR1cm4gdGV4dDsKICAgIH07CiAgICBjb25zdCB1cmxGcm9tQXJnID0gYXJnID0+IHsKICAgICAgICBpZiAoIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnICkgeyByZXR1cm4gYXJnOyB9CiAgICAgICAgaWYgKCBhcmcgaW5zdGFuY2VvZiBSZXF1ZXN0ICkgeyByZXR1cm4gYXJnLnVybDsgfQogICAgICAgIHJldHVybiBTdHJpbmcoYXJnKTsKICAgIH07CiAgICBzZWxmLmZldGNoID0gbmV3IFByb3h5KHNlbGYuZmV0Y2gsIHsKICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgIGNvbnN0IGZldGNoUHJvbWlzZSA9IFJlZmxlY3QuYXBwbHkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKTsKICAgICAgICAgICAgaWYgKCByZVVybC50ZXN0KHVybEZyb21BcmcoYXJnc1swXSkpID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiBmZXRjaFByb21pc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZldGNoUHJvbWlzZS50aGVuKHJlc3BvbnNlQmVmb3JlID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzcG9uc2VCZWZvcmUuY2xvbmUoKTsKICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS50ZXh0KCkudGhlbih0ZXh0ID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZUFmdGVyID0gbmV3IFJlc3BvbnNlKHBydW5lRnJvbVRleHQodGV4dCksIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiByZXNwb25zZUJlZm9yZS5zdGF0dXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6IHJlc3BvbnNlQmVmb3JlLnN0YXR1c1RleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlc3BvbnNlQmVmb3JlLmhlYWRlcnMsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMocmVzcG9uc2VBZnRlciwgewogICAgICAgICAgICAgICAgICAgICAgICBvazogeyB2YWx1ZTogcmVzcG9uc2VCZWZvcmUub2sgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3RlZDogeyB2YWx1ZTogcmVzcG9uc2VCZWZvcmUucmVkaXJlY3RlZCB9LAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiB7IHZhbHVlOiByZXNwb25zZUJlZm9yZS50eXBlIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogeyB2YWx1ZTogcmVzcG9uc2VCZWZvcmUudXJsIH0sCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlQWZ0ZXI7CiAgICAgICAgICAgICAgICB9KS5jYXRjaCgoICkgPT4KICAgICAgICAgICAgICAgICAgICByZXNwb25zZUJlZm9yZQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfSk7CiAgICBzZWxmLlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5vcGVuID0gbmV3IFByb3h5KHNlbGYuWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLm9wZW4sIHsKICAgICAgICBhcHBseTogYXN5bmMgKHRhcmdldCwgdGhpc0FyZywgYXJncykgPT4gewogICAgICAgICAgICBpZiAoIHJlVXJsLnRlc3QodXJsRnJvbUFyZyhhcmdzWzFdKSkgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzQXJnLmFkZEV2ZW50TGlzdGVuZXIoJ3JlYWR5c3RhdGVjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGlmICggdGhpc0FyZy5yZWFkeVN0YXRlICE9PSA0ICkgeyByZXR1cm47IH0KICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzQXJnLnJlc3BvbnNlVHlwZTsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICB0eXBlID09PSAnZG9jdW1lbnQnIHx8CiAgICAgICAgICAgICAgICAgICAgdHlwZSA9PT0gJycgJiYgdGhpc0FyZy5yZXNwb25zZVhNTCBpbnN0YW5jZW9mIFhNTERvY3VtZW50CiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICBwcnVuZUZyb21Eb2ModGhpc0FyZy5yZXNwb25zZVhNTCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VyaWFsaXplciA9IG5ldyBYTUxTZXJpYWxpemVyKCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGV4dG91dCA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplVG9TdHJpbmcodGhpc0FyZy5yZXNwb25zZVhNTCk7CiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXNBcmcsICdyZXNwb25zZVRleHQnLCB7IHZhbHVlOiB0ZXh0b3V0IH0pOwogICAgICAgICAgICAgICAgICAgIGlmICggdHlwZW9mIHRoaXNBcmcucmVzcG9uc2UgPT09ICdzdHJpbmcnICkgewogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpc0FyZywgJ3Jlc3BvbnNlJywgeyB2YWx1ZTogdGV4dG91dCB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIHR5cGUgPT09ICd0ZXh0JyB8fAogICAgICAgICAgICAgICAgICAgIHR5cGUgPT09ICcnICYmIHR5cGVvZiB0aGlzQXJnLnJlc3BvbnNlVGV4dCA9PT0gJ3N0cmluZycKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRpbiA9IHRoaXNBcmcucmVzcG9uc2VUZXh0OwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRvdXQgPSBwcnVuZUZyb21UZXh0KHRleHRpbik7CiAgICAgICAgICAgICAgICAgICAgaWYgKCB0ZXh0b3V0ID09PSB0ZXh0aW4gKSB7IHJldHVybjsgfQogICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzQXJnLCAncmVzcG9uc2UnLCB7IHZhbHVlOiB0ZXh0b3V0IH0pOwogICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzQXJnLCAncmVzcG9uc2VUZXh0JywgeyB2YWx1ZTogdGV4dG91dCB9KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpOwogICAgICAgIH0KICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"m3u-prune.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24gbTN1UHJ1bmUoCiAgICBtM3VQYXR0ZXJuID0gJycsCiAgICB1cmxQYXR0ZXJuID0gJycKKSB7CiAgICBpZiAoIHR5cGVvZiBtM3VQYXR0ZXJuICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGxvZ1ByZWZpeCA9IHNhZmUubWFrZUxvZ1ByZWZpeCgnbTN1LXBydW5lJywgbTN1UGF0dGVybiwgdXJsUGF0dGVybik7CiAgICBjb25zdCB0b0xvZyA9IFtdOwogICAgY29uc3QgcmVnZXhGcm9tQXJnID0gYXJnID0+IHsKICAgICAgICBpZiAoIGFyZyA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICBjb25zdCBtYXRjaCA9IC9eXC8oLispXC8oW2dtc10qKSQvLmV4ZWMoYXJnKTsKICAgICAgICBpZiAoIG1hdGNoICE9PSBudWxsICkgewogICAgICAgICAgICBsZXQgZmxhZ3MgPSBtYXRjaFsyXSB8fCAnJzsKICAgICAgICAgICAgaWYgKCBmbGFncy5pbmNsdWRlcygnbScpICkgeyBmbGFncyArPSAncyc7IH0KICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIGZsYWdzKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoCiAgICAgICAgICAgIGFyZy5yZXBsYWNlKC9bLis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpLnJlcGxhY2UoL1wqKy9nLCAnLio/JykKICAgICAgICApOwogICAgfTsKICAgIGNvbnN0IHJlTTN1ID0gcmVnZXhGcm9tQXJnKG0zdVBhdHRlcm4pOwogICAgY29uc3QgcmVVcmwgPSByZWdleEZyb21BcmcodXJsUGF0dGVybik7CiAgICBjb25zdCBwcnVuZVNwbGljZW91dEJsb2NrID0gKGxpbmVzLCBpKSA9PiB7CiAgICAgICAgaWYgKCBsaW5lc1tpXS5zdGFydHNXaXRoKCcjRVhULVgtQ1VFOlRZUEU9IlNwbGljZU91dCInKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgdG9Mb2cucHVzaChgXHQke2xpbmVzW2ldfWApOwogICAgICAgIGxpbmVzW2ldID0gdW5kZWZpbmVkOyBpICs9IDE7CiAgICAgICAgaWYgKCBsaW5lc1tpXS5zdGFydHNXaXRoKCcjRVhULVgtQVNTRVQ6Q0FJRCcpICkgewogICAgICAgICAgICB0b0xvZy5wdXNoKGBcdCR7bGluZXNbaV19YCk7CiAgICAgICAgICAgIGxpbmVzW2ldID0gdW5kZWZpbmVkOyBpICs9IDE7CiAgICAgICAgfQogICAgICAgIGlmICggbGluZXNbaV0uc3RhcnRzV2l0aCgnI0VYVC1YLVNDVEUzNTonKSApIHsKICAgICAgICAgICAgdG9Mb2cucHVzaChgXHQke2xpbmVzW2ldfWApOwogICAgICAgICAgICBsaW5lc1tpXSA9IHVuZGVmaW5lZDsgaSArPSAxOwogICAgICAgIH0KICAgICAgICBpZiAoIGxpbmVzW2ldLnN0YXJ0c1dpdGgoJyNFWFQtWC1DVUUtSU4nKSApIHsKICAgICAgICAgICAgdG9Mb2cucHVzaChgXHQke2xpbmVzW2ldfWApOwogICAgICAgICAgICBsaW5lc1tpXSA9IHVuZGVmaW5lZDsgaSArPSAxOwogICAgICAgIH0KICAgICAgICBpZiAoIGxpbmVzW2ldLnN0YXJ0c1dpdGgoJyNFWFQtWC1TQ1RFMzU6JykgKSB7CiAgICAgICAgICAgIHRvTG9nLnB1c2goYFx0JHtsaW5lc1tpXX1gKTsKICAgICAgICAgICAgbGluZXNbaV0gPSB1bmRlZmluZWQ7IGkgKz0gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9OwogICAgY29uc3QgcHJ1bmVJbmZCbG9jayA9IChsaW5lcywgaSkgPT4gewogICAgICAgIGlmICggbGluZXNbaV0uc3RhcnRzV2l0aCgnI0VYVElORicpID09PSBmYWxzZSApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgaWYgKCByZU0zdS50ZXN0KGxpbmVzW2krMV0pID09PSBmYWxzZSApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgdG9Mb2cucHVzaCgnRGlzY2FyZGluZycsIGBcdCR7bGluZXNbaV19LCBcdCR7bGluZXNbaSsxXX1gKTsKICAgICAgICBsaW5lc1tpXSA9IGxpbmVzW2krMV0gPSB1bmRlZmluZWQ7IGkgKz0gMjsKICAgICAgICBpZiAoIGxpbmVzW2ldLnN0YXJ0c1dpdGgoJyNFWFQtWC1ESVNDT05USU5VSVRZJykgKSB7CiAgICAgICAgICAgIHRvTG9nLnB1c2goYFx0JHtsaW5lc1tpXX1gKTsKICAgICAgICAgICAgbGluZXNbaV0gPSB1bmRlZmluZWQ7IGkgKz0gMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9OwogICAgY29uc3QgcHJ1bmVyID0gdGV4dCA9PiB7CiAgICAgICAgaWYgKCAoL15ccyojRVhUTTNVLy50ZXN0KHRleHQpKSA9PT0gZmFsc2UgKSB7IHJldHVybiB0ZXh0OyB9CiAgICAgICAgaWYgKCBtM3VQYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgc2FmZS51Ym9Mb2coYCBDb250ZW50OlxuJHt0ZXh0fWApOwogICAgICAgICAgICByZXR1cm4gdGV4dDsKICAgICAgICB9CiAgICAgICAgaWYgKCByZU0zdS5tdWx0aWxpbmUgKSB7CiAgICAgICAgICAgIHJlTTN1Lmxhc3RJbmRleCA9IDA7CiAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gcmVNM3UuZXhlYyh0ZXh0KTsKICAgICAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBsZXQgZGlzY2FyZCA9IG1hdGNoWzBdOwogICAgICAgICAgICAgICAgbGV0IGJlZm9yZSA9IHRleHQuc2xpY2UoMCwgbWF0Y2guaW5kZXgpOwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIC9eW1xuXHJdKy8udGVzdChkaXNjYXJkKSA9PT0gZmFsc2UgJiYKICAgICAgICAgICAgICAgICAgICAvW1xuXHJdKyQvLnRlc3QoYmVmb3JlKSA9PT0gZmFsc2UKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0T2ZMaW5lID0gL1teXG5ccl0rJC8uZXhlYyhiZWZvcmUpOwogICAgICAgICAgICAgICAgICAgIGlmICggc3RhcnRPZkxpbmUgIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSA9IGJlZm9yZS5zbGljZSgwLCBzdGFydE9mTGluZS5pbmRleCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NhcmQgPSBzdGFydE9mTGluZVswXSArIGRpc2NhcmQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbGV0IGFmdGVyID0gdGV4dC5zbGljZShtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgL1tcblxyXSskLy50ZXN0KGRpc2NhcmQpID09PSBmYWxzZSAmJgogICAgICAgICAgICAgICAgICAgIC9eW1xuXHJdKy8udGVzdChhZnRlcikgPT09IGZhbHNlCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmRPZkxpbmUgPSAvXlteXG5ccl0rLy5leGVjKGFmdGVyKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIGVuZE9mTGluZSAhPT0gbnVsbCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIgPSBhZnRlci5zbGljZShlbmRPZkxpbmUuaW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAgICBkaXNjYXJkICs9IGRpc2NhcmQgKyBlbmRPZkxpbmVbMF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGV4dCA9IGJlZm9yZS50cmltKCkgKyAnXG4nICsgYWZ0ZXIudHJpbSgpOwogICAgICAgICAgICAgICAgcmVNM3UubGFzdEluZGV4ID0gYmVmb3JlLmxlbmd0aCArIDE7CiAgICAgICAgICAgICAgICB0b0xvZy5wdXNoKCdEaXNjYXJkaW5nJywgLi4uZGlzY2FyZC5zcGxpdCgvXG4rLykubWFwKHMgPT4gYFx0JHtzfWApKTsKICAgICAgICAgICAgICAgIGlmICggcmVNM3UuZ2xvYmFsID09PSBmYWxzZSApIHsgYnJlYWs7IH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdGV4dDsKICAgICAgICB9CiAgICAgICAgY29uc3QgbGluZXMgPSB0ZXh0LnNwbGl0KC9cblxyfFxufFxyLyk7CiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKysgKSB7CiAgICAgICAgICAgIGlmICggbGluZXNbaV0gPT09IHVuZGVmaW5lZCApIHsgY29udGludWU7IH0KICAgICAgICAgICAgaWYgKCBwcnVuZVNwbGljZW91dEJsb2NrKGxpbmVzLCBpKSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgaWYgKCBwcnVuZUluZkJsb2NrKGxpbmVzLCBpKSApIHsgY29udGludWU7IH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGxpbmVzLmZpbHRlcihsID0+IGwgIT09IHVuZGVmaW5lZCkuam9pbignXG4nKTsKICAgIH07CiAgICBjb25zdCB1cmxGcm9tQXJnID0gYXJnID0+IHsKICAgICAgICBpZiAoIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnICkgeyByZXR1cm4gYXJnOyB9CiAgICAgICAgaWYgKCBhcmcgaW5zdGFuY2VvZiBSZXF1ZXN0ICkgeyByZXR1cm4gYXJnLnVybDsgfQogICAgICAgIHJldHVybiBTdHJpbmcoYXJnKTsKICAgIH07CiAgICBjb25zdCByZWFsRmV0Y2ggPSBzZWxmLmZldGNoOwogICAgc2VsZi5mZXRjaCA9IG5ldyBQcm94eShzZWxmLmZldGNoLCB7CiAgICAgICAgYXBwbHk6IGZ1bmN0aW9uKHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICBpZiAoIHJlVXJsLnRlc3QodXJsRnJvbUFyZyhhcmdzWzBdKSkgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcmVhbEZldGNoKC4uLmFyZ3MpLnRoZW4ocmVhbFJlc3BvbnNlID0+CiAgICAgICAgICAgICAgICByZWFsUmVzcG9uc2UudGV4dCgpLnRoZW4odGV4dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UocHJ1bmVyKHRleHQpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogcmVhbFJlc3BvbnNlLnN0YXR1cywKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogcmVhbFJlc3BvbnNlLnN0YXR1c1RleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlYWxSZXNwb25zZS5oZWFkZXJzLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIGlmICggdG9Mb2cubGVuZ3RoICE9PSAwICkgewogICAgICAgICAgICAgICAgICAgICAgICB0b0xvZy51bnNoaWZ0KGxvZ1ByZWZpeCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHNhZmUudWJvTG9nKHRvTG9nLmpvaW4oJ1xuJykpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7CiAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0pOwogICAgc2VsZi5YTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUub3BlbiA9IG5ldyBQcm94eShzZWxmLlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5vcGVuLCB7CiAgICAgICAgYXBwbHk6IGFzeW5jICh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpID0+IHsKICAgICAgICAgICAgaWYgKCByZVVybC50ZXN0KHVybEZyb21BcmcoYXJnc1sxXSkpID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpc0FyZy5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoIHRoaXNBcmcucmVhZHlTdGF0ZSAhPT0gNCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gdGhpc0FyZy5yZXNwb25zZVR5cGU7CiAgICAgICAgICAgICAgICBpZiAoIHR5cGUgIT09ICcnICYmIHR5cGUgIT09ICd0ZXh0JyApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0aW4gPSB0aGlzQXJnLnJlc3BvbnNlVGV4dDsKICAgICAgICAgICAgICAgIGNvbnN0IHRleHRvdXQgPSBwcnVuZXIodGV4dGluKTsKICAgICAgICAgICAgICAgIGlmICggdGV4dG91dCA9PT0gdGV4dGluICkgeyByZXR1cm47IH0KICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzQXJnLCAncmVzcG9uc2UnLCB7IHZhbHVlOiB0ZXh0b3V0IH0pOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXNBcmcsICdyZXNwb25zZVRleHQnLCB7IHZhbHVlOiB0ZXh0b3V0IH0pOwogICAgICAgICAgICAgICAgaWYgKCB0b0xvZy5sZW5ndGggIT09IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgdG9Mb2cudW5zaGlmdChsb2dQcmVmaXgpOwogICAgICAgICAgICAgICAgICAgIHNhZmUudWJvTG9nKHRvTG9nLmpvaW4oJ1xuJykpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuYXBwbHkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKTsKICAgICAgICB9CiAgICB9KTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"href-sanitizer.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBydW5BdChmbiwgd2hlbikgewogICAgY29uc3QgaW50RnJvbVJlYWR5U3RhdGUgPSBzdGF0ZSA9PiB7CiAgICAgICAgY29uc3QgdGFyZ2V0cyA9IHsKICAgICAgICAgICAgJ2xvYWRpbmcnOiAxLCAnYXNhcCc6IDEsCiAgICAgICAgICAgICdpbnRlcmFjdGl2ZSc6IDIsICdlbmQnOiAyLCAnMic6IDIsCiAgICAgICAgICAgICdjb21wbGV0ZSc6IDMsICdpZGxlJzogMywgJzMnOiAzLAogICAgICAgIH07CiAgICAgICAgY29uc3QgdG9rZW5zID0gQXJyYXkuaXNBcnJheShzdGF0ZSkgPyBzdGF0ZSA6IFsgc3RhdGUgXTsKICAgICAgICBmb3IgKCBjb25zdCB0b2tlbiBvZiB0b2tlbnMgKSB7CiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBgJHt0b2tlbn1gOwogICAgICAgICAgICBpZiAoIHRhcmdldHMuaGFzT3duUHJvcGVydHkocHJvcCkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICByZXR1cm4gdGFyZ2V0c1twcm9wXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwogICAgY29uc3QgcnVuQXQgPSBpbnRGcm9tUmVhZHlTdGF0ZSh3aGVuKTsKICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPj0gcnVuQXQgKSB7CiAgICAgICAgZm4oKTsgcmV0dXJuOwogICAgfQogICAgY29uc3Qgb25TdGF0ZUNoYW5nZSA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBpbnRGcm9tUmVhZHlTdGF0ZShkb2N1bWVudC5yZWFkeVN0YXRlKSA8IHJ1bkF0ICkgeyByZXR1cm47IH0KICAgICAgICBmbigpOwogICAgICAgIHNhZmUucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseShkb2N1bWVudCwgYXJncyk7CiAgICB9OwogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBhcmdzID0gWyAncmVhZHlzdGF0ZWNoYW5nZScsIG9uU3RhdGVDaGFuZ2UsIHsgY2FwdHVyZTogdHJ1ZSB9IF07CiAgICBzYWZlLmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwp9CgogIChmdW5jdGlvbiBocmVmU2FuaXRpemVyKAogICAgc2VsZWN0b3IgPSAnJywKICAgIHNvdXJjZSA9ICcnCikgewogICAgaWYgKCB0eXBlb2Ygc2VsZWN0b3IgIT09ICdzdHJpbmcnICkgeyByZXR1cm47IH0KICAgIGlmICggc2VsZWN0b3IgPT09ICcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbG9nUHJlZml4ID0gc2FmZS5tYWtlTG9nUHJlZml4KCdocmVmLXNhbml0aXplcicsIHNlbGVjdG9yLCBzb3VyY2UpOwogICAgaWYgKCBzb3VyY2UgPT09ICcnICkgeyBzb3VyY2UgPSAndGV4dCc7IH0KICAgIGNvbnN0IHNhbml0aXplQ29weWNhdHMgPSAoaHJlZiwgdGV4dCkgPT4gewogICAgICAgIGxldCBlbGVtcyA9IFtdOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGVsZW1zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgYVtocmVmPSIke2hyZWZ9ImApOwogICAgICAgIH0KICAgICAgICBjYXRjaChleCkgewogICAgICAgIH0KICAgICAgICBmb3IgKCBjb25zdCBlbGVtIG9mIGVsZW1zICkgewogICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgnaHJlZicsIHRleHQpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZWxlbXMubGVuZ3RoOwogICAgfTsKICAgIGNvbnN0IHZhbGlkYXRlVVJMID0gdGV4dCA9PiB7CiAgICAgICAgaWYgKCB0ZXh0ID09PSAnJyApIHsgcmV0dXJuICcnOyB9CiAgICAgICAgaWYgKCAvW1x4MDAtXHgyMFx4N2ZdLy50ZXN0KHRleHQpICkgeyByZXR1cm4gJyc7IH0KICAgICAgICB0cnkgewogICAgICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHRleHQsIGRvY3VtZW50LmxvY2F0aW9uKTsKICAgICAgICAgICAgcmV0dXJuIHVybC5ocmVmOwogICAgICAgIH0gY2F0Y2goZXgpIHsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICcnOwogICAgfTsKICAgIGNvbnN0IGV4dHJhY3RQYXJhbSA9IChocmVmLCBzb3VyY2UpID0+IHsKICAgICAgICBpZiAoIEJvb2xlYW4oc291cmNlKSA9PT0gZmFsc2UgKSB7IHJldHVybiBocmVmOyB9CiAgICAgICAgY29uc3QgcmVjdXJzaXZlID0gc291cmNlLmluY2x1ZGVzKCc/JywgMSk7CiAgICAgICAgY29uc3QgZW5kID0gcmVjdXJzaXZlID8gc291cmNlLmluZGV4T2YoJz8nLCAxKSA6IHNvdXJjZS5sZW5ndGg7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChocmVmLCBkb2N1bWVudC5sb2NhdGlvbik7CiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHVybC5zZWFyY2hQYXJhbXMuZ2V0KHNvdXJjZS5zbGljZSgxLCBlbmQpKTsKICAgICAgICAgICAgaWYgKCB2YWx1ZSA9PT0gbnVsbCApIHsgcmV0dXJuIGhyZWYgfQogICAgICAgICAgICBpZiAoIHJlY3Vyc2l2ZSApIHsgcmV0dXJuIGV4dHJhY3RQYXJhbSh2YWx1ZSwgc291cmNlLnNsaWNlKGVuZCkpOyB9CiAgICAgICAgICAgIGlmICggdmFsdWUuaW5jbHVkZXMoJyAnKSApIHsKICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvIC9nLCAnJTIwJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgIH0gY2F0Y2goeCkgewogICAgICAgIH0KICAgICAgICByZXR1cm4gaHJlZjsKICAgIH07CiAgICBjb25zdCBleHRyYWN0VGV4dCA9IChlbGVtLCBzb3VyY2UpID0+IHsKICAgICAgICBpZiAoIC9eXFsuKlxdJC8udGVzdChzb3VyY2UpICkgewogICAgICAgICAgICByZXR1cm4gZWxlbS5nZXRBdHRyaWJ1dGUoc291cmNlLnNsaWNlKDEsLTEpLnRyaW0oKSkgfHwgJyc7CiAgICAgICAgfQogICAgICAgIGlmICggc291cmNlLnN0YXJ0c1dpdGgoJz8nKSApIHsKICAgICAgICAgICAgcmV0dXJuIGV4dHJhY3RQYXJhbShlbGVtLmhyZWYsIHNvdXJjZSk7CiAgICAgICAgfQogICAgICAgIGlmICggc291cmNlID09PSAndGV4dCcgKSB7CiAgICAgICAgICAgIHJldHVybiBlbGVtLnRleHRDb250ZW50CiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXlteXHgyMS1ceDdlXSsvLCAnJykgLy8gcmVtb3ZlIGxlYWRpbmcgaW52YWxpZCBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW15ceDIxLVx4N2VdKyQvLCAnJykgLy8gcmVtb3ZlIHRyYWlsaW5nIGludmFsaWQgY2hhcmFjdGVycwogICAgICAgICAgICA7CiAgICAgICAgfQogICAgICAgIHJldHVybiAnJzsKICAgIH07CiAgICBjb25zdCBzYW5pdGl6ZSA9ICggKSA9PiB7CiAgICAgICAgbGV0IGVsZW1zID0gW107CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgZWxlbXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsKICAgICAgICB9CiAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBmb3IgKCBjb25zdCBlbGVtIG9mIGVsZW1zICkgewogICAgICAgICAgICBpZiAoIGVsZW0ubG9jYWxOYW1lICE9PSAnYScgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgIGlmICggZWxlbS5oYXNBdHRyaWJ1dGUoJ2hyZWYnKSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgIGNvbnN0IGhyZWYgPSBlbGVtLmdldEF0dHJpYnV0ZSgnaHJlZicpOwogICAgICAgICAgICBjb25zdCB0ZXh0ID0gZXh0cmFjdFRleHQoZWxlbSwgc291cmNlKTsKICAgICAgICAgICAgY29uc3QgaHJlZkFmdGVyID0gdmFsaWRhdGVVUkwodGV4dCk7CiAgICAgICAgICAgIGlmICggaHJlZkFmdGVyID09PSAnJyApIHsgY29udGludWU7IH0KICAgICAgICAgICAgaWYgKCBocmVmQWZ0ZXIgPT09IGhyZWYgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCdocmVmJywgaHJlZkFmdGVyKTsKICAgICAgICAgICAgY29uc3QgY291bnQgPSBzYW5pdGl6ZUNvcHljYXRzKGhyZWYsIGhyZWZBZnRlcik7CiAgICAgICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgYFNhbml0aXplZCAke2NvdW50KzF9IGxpbmtzIHRvXG4ke2hyZWZBZnRlcn1gKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9OwogICAgbGV0IG9ic2VydmVyLCB0aW1lcjsKICAgIGNvbnN0IG9uRG9tQ2hhbmdlZCA9IG11dGF0aW9ucyA9PiB7CiAgICAgICAgaWYgKCB0aW1lciAhPT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICBsZXQgc2hvdWxkU2FuaXRpemUgPSBmYWxzZTsKICAgICAgICBmb3IgKCBjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMgKSB7CiAgICAgICAgICAgIGlmICggbXV0YXRpb24uYWRkZWROb2Rlcy5sZW5ndGggPT09IDAgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgIGZvciAoIGNvbnN0IG5vZGUgb2YgbXV0YXRpb24uYWRkZWROb2RlcyApIHsKICAgICAgICAgICAgICAgIGlmICggbm9kZS5ub2RlVHlwZSAhPT0gMSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIHNob3VsZFNhbml0aXplID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggc2hvdWxkU2FuaXRpemUgKSB7IGJyZWFrOyB9CiAgICAgICAgfQogICAgICAgIGlmICggc2hvdWxkU2FuaXRpemUgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICB0aW1lciA9IHNhZmUub25JZGxlKCggKSA9PiB7CiAgICAgICAgICAgIHRpbWVyID0gdW5kZWZpbmVkOwogICAgICAgICAgICBzYW5pdGl6ZSgpOwogICAgICAgIH0pOwogICAgfTsKICAgIGNvbnN0IHN0YXJ0ID0gKCApID0+IHsKICAgICAgICBpZiAoIHNhbml0aXplKCkgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG9uRG9tQ2hhbmdlZCk7CiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7CiAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsCiAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSwKICAgICAgICB9KTsKICAgIH07CiAgICBydW5BdCgoICkgPT4geyBzdGFydCgpOyB9LCAnaW50ZXJhY3RpdmUnKTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"call-nothrow.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgCiAgKGZ1bmN0aW9uIGNhbGxOb3Rocm93KAogICAgY2hhaW4gPSAnJwopIHsKICAgIGlmICggdHlwZW9mIGNoYWluICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBpZiAoIGNoYWluID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBwYXJ0cyA9IGNoYWluLnNwbGl0KCcuJyk7CiAgICBsZXQgb3duZXIgPSB3aW5kb3csIHByb3A7CiAgICBmb3IgKDs7KSB7CiAgICAgICAgcHJvcCA9IHBhcnRzLnNoaWZ0KCk7CiAgICAgICAgaWYgKCBwYXJ0cy5sZW5ndGggPT09IDAgKSB7IGJyZWFrOyB9CiAgICAgICAgb3duZXIgPSBvd25lcltwcm9wXTsKICAgICAgICBpZiAoIG93bmVyIGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSApIHsgcmV0dXJuOyB9CiAgICB9CiAgICBpZiAoIHByb3AgPT09ICcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IGZuID0gb3duZXJbcHJvcF07CiAgICBpZiAoIHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJyApIHsgcmV0dXJuOyB9CiAgICBvd25lcltwcm9wXSA9IG5ldyBQcm94eShmbiwgewogICAgICAgIGFwcGx5OiBmdW5jdGlvbiguLi5hcmdzKSB7CiAgICAgICAgICAgIGxldCByOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgciA9IFJlZmxlY3QuYXBwbHkoLi4uYXJncyk7CiAgICAgICAgICAgIH0gY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICB9LAogICAgfSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"spoof-css.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24gc3Bvb2ZDU1MoCiAgICBzZWxlY3RvciwKICAgIC4uLmFyZ3MKKSB7CiAgICBpZiAoIHR5cGVvZiBzZWxlY3RvciAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgaWYgKCBzZWxlY3RvciA9PT0gJycgKSB7IHJldHVybjsgfQogICAgY29uc3QgdG9DYW1lbENhc2UgPSBzID0+IHMucmVwbGFjZSgvLVthLXpdL2csIHMgPT4gcy5jaGFyQXQoMSkudG9VcHBlckNhc2UoKSk7CiAgICBjb25zdCBwcm9wVG9WYWx1ZU1hcCA9IG5ldyBNYXAoKTsKICAgIGZvciAoIGxldCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpICs9IDIgKSB7CiAgICAgICAgaWYgKCB0eXBlb2YgYXJnc1tpKzBdICE9PSAnc3RyaW5nJyApIHsgYnJlYWs7IH0KICAgICAgICBpZiAoIGFyZ3NbaSswXSA9PT0gJycgKSB7IGJyZWFrOyB9CiAgICAgICAgaWYgKCB0eXBlb2YgYXJnc1tpKzFdICE9PSAnc3RyaW5nJyApIHsgYnJlYWs7IH0KICAgICAgICBwcm9wVG9WYWx1ZU1hcC5zZXQodG9DYW1lbENhc2UoYXJnc1tpKzBdKSwgYXJnc1tpKzFdKTsKICAgIH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbG9nUHJlZml4ID0gc2FmZS5tYWtlTG9nUHJlZml4KCdzcG9vZi1jc3MnLCBzZWxlY3RvciwgLi4uYXJncyk7CiAgICBjb25zdCBjYW5EZWJ1ZyA9IHNjcmlwdGxldEdsb2JhbHMuY2FuRGVidWc7CiAgICBjb25zdCBzaG91bGREZWJ1ZyA9IGNhbkRlYnVnICYmIHByb3BUb1ZhbHVlTWFwLmdldCgnZGVidWcnKSB8fCAwOwogICAgY29uc3QgaW5zdGFuY2VQcm9wZXJ0aWVzID0gWyAnY3NzVGV4dCcsICdsZW5ndGgnLCAncGFyZW50UnVsZScgXTsKICAgIGNvbnN0IHNwb29mU3R5bGUgPSAocHJvcCwgcmVhbCkgPT4gewogICAgICAgIGNvbnN0IG5vcm1hbFByb3AgPSB0b0NhbWVsQ2FzZShwcm9wKTsKICAgICAgICBjb25zdCBzaG91bGRTcG9vZiA9IHByb3BUb1ZhbHVlTWFwLmhhcyhub3JtYWxQcm9wKTsKICAgICAgICBjb25zdCB2YWx1ZSA9IHNob3VsZFNwb29mID8gcHJvcFRvVmFsdWVNYXAuZ2V0KG5vcm1hbFByb3ApIDogcmVhbDsKICAgICAgICBpZiAoIHNob3VsZFNwb29mICkgewogICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBTcG9vZmluZyAke3Byb3B9IHRvICR7dmFsdWV9YCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB2YWx1ZTsKICAgIH07CiAgICBjb25zdCBjbG9hY2tGdW5jID0gKGZuLCB0aGlzQXJnLCBuYW1lKSA9PiB7CiAgICAgICAgY29uc3QgdHJhcCA9IGZuLmJpbmQodGhpc0FyZyk7CiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRyYXAsICduYW1lJywgeyB2YWx1ZTogbmFtZSB9KTsKICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodHJhcCwgJ3RvU3RyaW5nJywgewogICAgICAgICAgICB2YWx1ZTogKCApID0+IGBmdW5jdGlvbiAke25hbWV9KCkgeyBbbmF0aXZlIGNvZGVdIH1gCiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuIHRyYXA7CiAgICB9OwogICAgc2VsZi5nZXRDb21wdXRlZFN0eWxlID0gbmV3IFByb3h5KHNlbGYuZ2V0Q29tcHV0ZWRTdHlsZSwgewogICAgICAgIGFwcGx5OiBmdW5jdGlvbih0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpIHsKICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWRlYnVnZ2VyCiAgICAgICAgICAgIGlmICggc2hvdWxkRGVidWcgIT09IDAgKSB7IGRlYnVnZ2VyOyB9CiAgICAgICAgICAgIGNvbnN0IHN0eWxlID0gUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpOwogICAgICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50cyA9IG5ldyBXZWFrU2V0KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKICAgICAgICAgICAgaWYgKCB0YXJnZXRFbGVtZW50cy5oYXMoYXJnc1swXSkgPT09IGZhbHNlICkgeyByZXR1cm4gc3R5bGU7IH0KICAgICAgICAgICAgY29uc3QgcHJveGllZFN0eWxlID0gbmV3IFByb3h5KHN0eWxlLCB7CiAgICAgICAgICAgICAgICBnZXQodGFyZ2V0LCBwcm9wKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCB0eXBlb2YgdGFyZ2V0W3Byb3BdID09PSAnZnVuY3Rpb24nICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHByb3AgPT09ICdnZXRQcm9wZXJ0eVZhbHVlJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbG9hY2tGdW5jKGZ1bmN0aW9uIGdldFByb3BlcnR5VmFsdWUocHJvcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzcG9vZlN0eWxlKHByb3AsIHRhcmdldFtwcm9wXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0YXJnZXQsICdnZXRQcm9wZXJ0eVZhbHVlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsb2Fja0Z1bmModGFyZ2V0W3Byb3BdLCB0YXJnZXQsIHByb3ApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoIGluc3RhbmNlUHJvcGVydGllcy5pbmNsdWRlcyhwcm9wKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBzcG9vZlN0eWxlKHByb3AsIFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCkpOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIHByb3ApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIHByb3BUb1ZhbHVlTWFwLmhhcyhwcm9wKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcHJvcFRvVmFsdWVNYXAuZ2V0KHByb3ApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIHByb3ApOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHJldHVybiBwcm94aWVkU3R5bGU7CiAgICAgICAgfSwKICAgICAgICBnZXQodGFyZ2V0LCBwcm9wKSB7CiAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ3RvU3RyaW5nJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXQudG9TdHJpbmcuYmluZCh0YXJnZXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3ApOwogICAgICAgIH0sCiAgICB9KTsKICAgIEVsZW1lbnQucHJvdG90eXBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCA9IG5ldyBQcm94eShFbGVtZW50LnByb3RvdHlwZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QsIHsKICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1kZWJ1Z2dlcgogICAgICAgICAgICBpZiAoIHNob3VsZERlYnVnICE9PSAwICkgeyBkZWJ1Z2dlcjsgfQogICAgICAgICAgICBjb25zdCByZWN0ID0gUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpOwogICAgICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50cyA9IG5ldyBXZWFrU2V0KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpKTsKICAgICAgICAgICAgaWYgKCB0YXJnZXRFbGVtZW50cy5oYXModGhpc0FyZykgPT09IGZhbHNlICkgeyByZXR1cm4gcmVjdDsgfQogICAgICAgICAgICBsZXQgeyBoZWlnaHQsIHdpZHRoIH0gPSByZWN0OwogICAgICAgICAgICBpZiAoIHByb3BUb1ZhbHVlTWFwLmhhcygnd2lkdGgnKSApIHsKICAgICAgICAgICAgICAgIHdpZHRoID0gcGFyc2VGbG9hdChwcm9wVG9WYWx1ZU1hcC5nZXQoJ3dpZHRoJykpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggcHJvcFRvVmFsdWVNYXAuaGFzKCdoZWlnaHQnKSApIHsKICAgICAgICAgICAgICAgIGhlaWdodCA9IHBhcnNlRmxvYXQocHJvcFRvVmFsdWVNYXAuZ2V0KCdoZWlnaHQnKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG5ldyBzZWxmLkRPTVJlY3QocmVjdC54LCByZWN0LnksIHdpZHRoLCBoZWlnaHQpOwogICAgICAgIH0sCiAgICAgICAgZ2V0KHRhcmdldCwgcHJvcCkgewogICAgICAgICAgICBpZiAoIHByb3AgPT09ICd0b1N0cmluZycgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0LnRvU3RyaW5nLmJpbmQodGFyZ2V0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wKTsKICAgICAgICB9LAogICAgfSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"remove-node-text.js","aliases":["rmnt.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBydW5BdChmbiwgd2hlbikgewogICAgY29uc3QgaW50RnJvbVJlYWR5U3RhdGUgPSBzdGF0ZSA9PiB7CiAgICAgICAgY29uc3QgdGFyZ2V0cyA9IHsKICAgICAgICAgICAgJ2xvYWRpbmcnOiAxLCAnYXNhcCc6IDEsCiAgICAgICAgICAgICdpbnRlcmFjdGl2ZSc6IDIsICdlbmQnOiAyLCAnMic6IDIsCiAgICAgICAgICAgICdjb21wbGV0ZSc6IDMsICdpZGxlJzogMywgJzMnOiAzLAogICAgICAgIH07CiAgICAgICAgY29uc3QgdG9rZW5zID0gQXJyYXkuaXNBcnJheShzdGF0ZSkgPyBzdGF0ZSA6IFsgc3RhdGUgXTsKICAgICAgICBmb3IgKCBjb25zdCB0b2tlbiBvZiB0b2tlbnMgKSB7CiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBgJHt0b2tlbn1gOwogICAgICAgICAgICBpZiAoIHRhcmdldHMuaGFzT3duUHJvcGVydHkocHJvcCkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICByZXR1cm4gdGFyZ2V0c1twcm9wXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwogICAgY29uc3QgcnVuQXQgPSBpbnRGcm9tUmVhZHlTdGF0ZSh3aGVuKTsKICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPj0gcnVuQXQgKSB7CiAgICAgICAgZm4oKTsgcmV0dXJuOwogICAgfQogICAgY29uc3Qgb25TdGF0ZUNoYW5nZSA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBpbnRGcm9tUmVhZHlTdGF0ZShkb2N1bWVudC5yZWFkeVN0YXRlKSA8IHJ1bkF0ICkgeyByZXR1cm47IH0KICAgICAgICBmbigpOwogICAgICAgIHNhZmUucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseShkb2N1bWVudCwgYXJncyk7CiAgICB9OwogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBhcmdzID0gWyAncmVhZHlzdGF0ZWNoYW5nZScsIG9uU3RhdGVDaGFuZ2UsIHsgY2FwdHVyZTogdHJ1ZSB9IF07CiAgICBzYWZlLmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwp9CmZ1bmN0aW9uIGdldFJhbmRvbVRva2VuKCkgewogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICByZXR1cm4gc2FmZS5TdHJpbmdfZnJvbUNoYXJDb2RlKERhdGUubm93KCkgJSAyNiArIDk3KSArCiAgICAgICAgc2FmZS5NYXRoX2Zsb29yKHNhZmUuTWF0aF9yYW5kb20oKSAqIDk4MjQ1MTY1MyArIDk4MjQ1MTY1MykudG9TdHJpbmcoMzYpOwp9CmZ1bmN0aW9uIHJlcGxhY2VOb2RlVGV4dEZuKAogICAgbm9kZU5hbWUgPSAnJywKICAgIHBhdHRlcm4gPSAnJywKICAgIHJlcGxhY2VtZW50ID0gJycKKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGxvZ1ByZWZpeCA9IHNhZmUubWFrZUxvZ1ByZWZpeCgncmVwbGFjZS1ub2RlLXRleHQuZm4nLCAuLi5BcnJheS5mcm9tKGFyZ3VtZW50cykpOwogICAgY29uc3QgcmVOb2RlTmFtZSA9IHNhZmUucGF0dGVyblRvUmVnZXgobm9kZU5hbWUsICdpJywgdHJ1ZSk7CiAgICBjb25zdCByZVBhdHRlcm4gPSBzYWZlLnBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sICdnbXMnKTsKICAgIGNvbnN0IGV4dHJhQXJncyA9IHNhZmUuZ2V0RXh0cmFBcmdzKEFycmF5LmZyb20oYXJndW1lbnRzKSwgMyk7CiAgICBjb25zdCByZUluY2x1ZGVzID0gZXh0cmFBcmdzLmluY2x1ZGVzIHx8IGV4dHJhQXJncy5jb25kaXRpb24KICAgICAgICA/IHNhZmUucGF0dGVyblRvUmVnZXgoZXh0cmFBcmdzLmluY2x1ZGVzIHx8IGV4dHJhQXJncy5jb25kaXRpb24sICdtcycpCiAgICAgICAgOiBudWxsOwogICAgY29uc3QgcmVFeGNsdWRlcyA9IGV4dHJhQXJncy5leGNsdWRlcwogICAgICAgID8gc2FmZS5wYXR0ZXJuVG9SZWdleChleHRyYUFyZ3MuZXhjbHVkZXMsICdtcycpCiAgICAgICAgOiBudWxsOwogICAgY29uc3Qgc3RvcCA9ICh0YWtlUmVjb3JkID0gdHJ1ZSkgPT4gewogICAgICAgIGlmICggdGFrZVJlY29yZCApIHsKICAgICAgICAgICAgaGFuZGxlTXV0YXRpb25zKG9ic2VydmVyLnRha2VSZWNvcmRzKCkpOwogICAgICAgIH0KICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CiAgICAgICAgaWYgKCBzYWZlLmxvZ0xldmVsID4gMSApIHsKICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCAnUXVpdHRpbmcnKTsKICAgICAgICB9CiAgICB9OwogICAgY29uc3QgdGV4dENvbnRlbnRGYWN0b3J5ID0gKCggKSA9PiB7CiAgICAgICAgY29uc3Qgb3V0ID0geyBjcmVhdGVTY3JpcHQ6IHMgPT4gcyB9OwogICAgICAgIGNvbnN0IHsgdHJ1c3RlZFR5cGVzOiB0dCB9ID0gc2VsZjsKICAgICAgICBpZiAoIHR0IGluc3RhbmNlb2YgT2JqZWN0ICkgewogICAgICAgICAgICBpZiAoIHR5cGVvZiB0dC5nZXRQcm9wZXJ0eVR5cGUgPT09ICdmdW5jdGlvbicgKSB7CiAgICAgICAgICAgICAgICBpZiAoIHR0LmdldFByb3BlcnR5VHlwZSgnc2NyaXB0JywgJ3RleHRDb250ZW50JykgPT09ICdUcnVzdGVkU2NyaXB0JyApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHQuY3JlYXRlUG9saWN5KGdldFJhbmRvbVRva2VuKCksIG91dCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG91dDsKICAgIH0pKCk7CiAgICBsZXQgc2VkQ291bnQgPSBleHRyYUFyZ3Muc2VkQ291bnQgfHwgMDsKICAgIGNvbnN0IGhhbmRsZU5vZGUgPSBub2RlID0+IHsKICAgICAgICBjb25zdCBiZWZvcmUgPSBub2RlLnRleHRDb250ZW50OwogICAgICAgIGlmICggcmVJbmNsdWRlcyApIHsKICAgICAgICAgICAgcmVJbmNsdWRlcy5sYXN0SW5kZXggPSAwOwogICAgICAgICAgICBpZiAoIHNhZmUuUmVnRXhwX3Rlc3QuY2FsbChyZUluY2x1ZGVzLCBiZWZvcmUpID09PSBmYWxzZSApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICB9CiAgICAgICAgaWYgKCByZUV4Y2x1ZGVzICkgewogICAgICAgICAgICByZUV4Y2x1ZGVzLmxhc3RJbmRleCA9IDA7CiAgICAgICAgICAgIGlmICggc2FmZS5SZWdFeHBfdGVzdC5jYWxsKHJlRXhjbHVkZXMsIGJlZm9yZSkgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgfQogICAgICAgIHJlUGF0dGVybi5sYXN0SW5kZXggPSAwOwogICAgICAgIGlmICggc2FmZS5SZWdFeHBfdGVzdC5jYWxsKHJlUGF0dGVybiwgYmVmb3JlKSA9PT0gZmFsc2UgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgcmVQYXR0ZXJuLmxhc3RJbmRleCA9IDA7CiAgICAgICAgY29uc3QgYWZ0ZXIgPSBwYXR0ZXJuICE9PSAnJwogICAgICAgICAgICA/IGJlZm9yZS5yZXBsYWNlKHJlUGF0dGVybiwgcmVwbGFjZW1lbnQpCiAgICAgICAgICAgIDogcmVwbGFjZW1lbnQ7CiAgICAgICAgbm9kZS50ZXh0Q29udGVudCA9IG5vZGUubm9kZU5hbWUgPT09ICdTQ1JJUFQnCiAgICAgICAgICAgID8gdGV4dENvbnRlbnRGYWN0b3J5LmNyZWF0ZVNjcmlwdChhZnRlcikKICAgICAgICAgICAgOiBhZnRlcjsKICAgICAgICBpZiAoIHNhZmUubG9nTGV2ZWwgPiAxICkgewogICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBUZXh0IGJlZm9yZTpcbiR7YmVmb3JlLnRyaW0oKX1gKTsKICAgICAgICB9CiAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCBgVGV4dCBhZnRlcjpcbiR7YWZ0ZXIudHJpbSgpfWApOwogICAgICAgIHJldHVybiBzZWRDb3VudCA9PT0gMCB8fCAoc2VkQ291bnQgLT0gMSkgIT09IDA7CiAgICB9OwogICAgY29uc3QgaGFuZGxlTXV0YXRpb25zID0gbXV0YXRpb25zID0+IHsKICAgICAgICBmb3IgKCBjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMgKSB7CiAgICAgICAgICAgIGZvciAoIGNvbnN0IG5vZGUgb2YgbXV0YXRpb24uYWRkZWROb2RlcyApIHsKICAgICAgICAgICAgICAgIGlmICggcmVOb2RlTmFtZS50ZXN0KG5vZGUubm9kZU5hbWUpID09PSBmYWxzZSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIGlmICggaGFuZGxlTm9kZShub2RlKSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIHN0b3AoZmFsc2UpOyByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihoYW5kbGVNdXRhdGlvbnMpOwogICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7CiAgICBpZiAoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCApIHsKICAgICAgICBjb25zdCB0cmVlV2Fsa2VyID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcigKICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LAogICAgICAgICAgICBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCB8IE5vZGVGaWx0ZXIuU0hPV19URVhUCiAgICAgICAgKTsKICAgICAgICBsZXQgY291bnQgPSAwOwogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRyZWVXYWxrZXIubmV4dE5vZGUoKTsKICAgICAgICAgICAgY291bnQgKz0gMTsKICAgICAgICAgICAgaWYgKCBub2RlID09PSBudWxsICkgeyBicmVhazsgfQogICAgICAgICAgICBpZiAoIHJlTm9kZU5hbWUudGVzdChub2RlLm5vZGVOYW1lKSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgIGlmICggbm9kZSA9PT0gZG9jdW1lbnQuY3VycmVudFNjcmlwdCApIHsgY29udGludWU7IH0KICAgICAgICAgICAgaWYgKCBoYW5kbGVOb2RlKG5vZGUpICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICBzdG9wKCk7IGJyZWFrOwogICAgICAgIH0KICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGAke2NvdW50fSBub2RlcyBwcmVzZW50IGJlZm9yZSBpbnN0YWxsaW5nIG11dGF0aW9uIG9ic2VydmVyYCk7CiAgICB9CiAgICBpZiAoIGV4dHJhQXJncy5zdGF5ICkgeyByZXR1cm47IH0KICAgIHJ1bkF0KCggKSA9PiB7CiAgICAgICAgY29uc3QgcXVpdEFmdGVyID0gZXh0cmFBcmdzLnF1aXRBZnRlciB8fCAwOwogICAgICAgIGlmICggcXVpdEFmdGVyICE9PSAwICkgewogICAgICAgICAgICBzZXRUaW1lb3V0KCggKSA9PiB7IHN0b3AoKTsgfSwgcXVpdEFmdGVyKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzdG9wKCk7CiAgICAgICAgfQogICAgfSwgJ2ludGVyYWN0aXZlJyk7Cn0KCiAgKGZ1bmN0aW9uIHJlbW92ZU5vZGVUZXh0KAogICAgbm9kZU5hbWUsCiAgICBpbmNsdWRlcywKICAgIC4uLmV4dHJhQXJncwopIHsKICAgIHJlcGxhY2VOb2RlVGV4dEZuKG5vZGVOYW1lLCAnJywgJycsICdpbmNsdWRlcycsIGluY2x1ZGVzIHx8ICcnLCAuLi5leHRyYUFyZ3MpOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"prevent-canvas.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQoKICAoZnVuY3Rpb24gcHJldmVudENhbnZhcygKICAgIGNvbnRleHRUeXBlID0gJycKKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IHBhdHRlcm4gPSBzYWZlLmluaXRQYXR0ZXJuKGNvbnRleHRUeXBlLCB7IGNhbk5lZ2F0ZTogdHJ1ZSB9KTsKICAgIGNvbnN0IHByb3RvID0gZ2xvYmFsVGhpcy5IVE1MQ2FudmFzRWxlbWVudC5wcm90b3R5cGU7CiAgICBwcm90by5nZXRDb250ZXh0ID0gbmV3IFByb3h5KHByb3RvLmdldENvbnRleHQsIHsKICAgICAgICBhcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpIHsKICAgICAgICAgICAgaWYgKCBzYWZlLnRlc3RQYXR0ZXJuKHBhdHRlcm4sIGFyZ3NbMF0pICkgeyByZXR1cm4gbnVsbDsgfQogICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpOwogICAgICAgIH0KICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"multiup.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgCiAgKGZ1bmN0aW9uIG11bHRpdXAoKSB7CiAgICBjb25zdCBoYW5kbGVyID0gZXYgPT4gewogICAgICAgIGNvbnN0IHRhcmdldCA9IGV2LnRhcmdldDsKICAgICAgICBpZiAoIHRhcmdldC5tYXRjaGVzKCdidXR0b25bbGlua10nKSA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIGNvbnN0IGFuY2VzdG9yID0gdGFyZ2V0LmNsb3Nlc3QoJ2Zvcm0nKTsKICAgICAgICBpZiAoIGFuY2VzdG9yID09PSBudWxsICkgeyByZXR1cm47IH0KICAgICAgICBpZiAoIGFuY2VzdG9yICE9PSB0YXJnZXQucGFyZW50RWxlbWVudCApIHsgcmV0dXJuOyB9CiAgICAgICAgY29uc3QgbGluayA9ICh0YXJnZXQuZ2V0QXR0cmlidXRlKCdsaW5rJykgfHwgJycpLnRyaW0oKTsKICAgICAgICBpZiAoIGxpbmsgPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBsaW5rOwogICAgfTsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlciwgeyBjYXB0dXJlOiB0cnVlIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"trusted-replace-node-text.js","aliases":["trusted-rpnt.js","replace-node-text.js","rpnt.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBydW5BdChmbiwgd2hlbikgewogICAgY29uc3QgaW50RnJvbVJlYWR5U3RhdGUgPSBzdGF0ZSA9PiB7CiAgICAgICAgY29uc3QgdGFyZ2V0cyA9IHsKICAgICAgICAgICAgJ2xvYWRpbmcnOiAxLCAnYXNhcCc6IDEsCiAgICAgICAgICAgICdpbnRlcmFjdGl2ZSc6IDIsICdlbmQnOiAyLCAnMic6IDIsCiAgICAgICAgICAgICdjb21wbGV0ZSc6IDMsICdpZGxlJzogMywgJzMnOiAzLAogICAgICAgIH07CiAgICAgICAgY29uc3QgdG9rZW5zID0gQXJyYXkuaXNBcnJheShzdGF0ZSkgPyBzdGF0ZSA6IFsgc3RhdGUgXTsKICAgICAgICBmb3IgKCBjb25zdCB0b2tlbiBvZiB0b2tlbnMgKSB7CiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBgJHt0b2tlbn1gOwogICAgICAgICAgICBpZiAoIHRhcmdldHMuaGFzT3duUHJvcGVydHkocHJvcCkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICByZXR1cm4gdGFyZ2V0c1twcm9wXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwogICAgY29uc3QgcnVuQXQgPSBpbnRGcm9tUmVhZHlTdGF0ZSh3aGVuKTsKICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPj0gcnVuQXQgKSB7CiAgICAgICAgZm4oKTsgcmV0dXJuOwogICAgfQogICAgY29uc3Qgb25TdGF0ZUNoYW5nZSA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBpbnRGcm9tUmVhZHlTdGF0ZShkb2N1bWVudC5yZWFkeVN0YXRlKSA8IHJ1bkF0ICkgeyByZXR1cm47IH0KICAgICAgICBmbigpOwogICAgICAgIHNhZmUucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseShkb2N1bWVudCwgYXJncyk7CiAgICB9OwogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBhcmdzID0gWyAncmVhZHlzdGF0ZWNoYW5nZScsIG9uU3RhdGVDaGFuZ2UsIHsgY2FwdHVyZTogdHJ1ZSB9IF07CiAgICBzYWZlLmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwp9CmZ1bmN0aW9uIGdldFJhbmRvbVRva2VuKCkgewogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICByZXR1cm4gc2FmZS5TdHJpbmdfZnJvbUNoYXJDb2RlKERhdGUubm93KCkgJSAyNiArIDk3KSArCiAgICAgICAgc2FmZS5NYXRoX2Zsb29yKHNhZmUuTWF0aF9yYW5kb20oKSAqIDk4MjQ1MTY1MyArIDk4MjQ1MTY1MykudG9TdHJpbmcoMzYpOwp9CmZ1bmN0aW9uIHJlcGxhY2VOb2RlVGV4dEZuKAogICAgbm9kZU5hbWUgPSAnJywKICAgIHBhdHRlcm4gPSAnJywKICAgIHJlcGxhY2VtZW50ID0gJycKKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGxvZ1ByZWZpeCA9IHNhZmUubWFrZUxvZ1ByZWZpeCgncmVwbGFjZS1ub2RlLXRleHQuZm4nLCAuLi5BcnJheS5mcm9tKGFyZ3VtZW50cykpOwogICAgY29uc3QgcmVOb2RlTmFtZSA9IHNhZmUucGF0dGVyblRvUmVnZXgobm9kZU5hbWUsICdpJywgdHJ1ZSk7CiAgICBjb25zdCByZVBhdHRlcm4gPSBzYWZlLnBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sICdnbXMnKTsKICAgIGNvbnN0IGV4dHJhQXJncyA9IHNhZmUuZ2V0RXh0cmFBcmdzKEFycmF5LmZyb20oYXJndW1lbnRzKSwgMyk7CiAgICBjb25zdCByZUluY2x1ZGVzID0gZXh0cmFBcmdzLmluY2x1ZGVzIHx8IGV4dHJhQXJncy5jb25kaXRpb24KICAgICAgICA/IHNhZmUucGF0dGVyblRvUmVnZXgoZXh0cmFBcmdzLmluY2x1ZGVzIHx8IGV4dHJhQXJncy5jb25kaXRpb24sICdtcycpCiAgICAgICAgOiBudWxsOwogICAgY29uc3QgcmVFeGNsdWRlcyA9IGV4dHJhQXJncy5leGNsdWRlcwogICAgICAgID8gc2FmZS5wYXR0ZXJuVG9SZWdleChleHRyYUFyZ3MuZXhjbHVkZXMsICdtcycpCiAgICAgICAgOiBudWxsOwogICAgY29uc3Qgc3RvcCA9ICh0YWtlUmVjb3JkID0gdHJ1ZSkgPT4gewogICAgICAgIGlmICggdGFrZVJlY29yZCApIHsKICAgICAgICAgICAgaGFuZGxlTXV0YXRpb25zKG9ic2VydmVyLnRha2VSZWNvcmRzKCkpOwogICAgICAgIH0KICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KCk7CiAgICAgICAgaWYgKCBzYWZlLmxvZ0xldmVsID4gMSApIHsKICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCAnUXVpdHRpbmcnKTsKICAgICAgICB9CiAgICB9OwogICAgY29uc3QgdGV4dENvbnRlbnRGYWN0b3J5ID0gKCggKSA9PiB7CiAgICAgICAgY29uc3Qgb3V0ID0geyBjcmVhdGVTY3JpcHQ6IHMgPT4gcyB9OwogICAgICAgIGNvbnN0IHsgdHJ1c3RlZFR5cGVzOiB0dCB9ID0gc2VsZjsKICAgICAgICBpZiAoIHR0IGluc3RhbmNlb2YgT2JqZWN0ICkgewogICAgICAgICAgICBpZiAoIHR5cGVvZiB0dC5nZXRQcm9wZXJ0eVR5cGUgPT09ICdmdW5jdGlvbicgKSB7CiAgICAgICAgICAgICAgICBpZiAoIHR0LmdldFByb3BlcnR5VHlwZSgnc2NyaXB0JywgJ3RleHRDb250ZW50JykgPT09ICdUcnVzdGVkU2NyaXB0JyApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHQuY3JlYXRlUG9saWN5KGdldFJhbmRvbVRva2VuKCksIG91dCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG91dDsKICAgIH0pKCk7CiAgICBsZXQgc2VkQ291bnQgPSBleHRyYUFyZ3Muc2VkQ291bnQgfHwgMDsKICAgIGNvbnN0IGhhbmRsZU5vZGUgPSBub2RlID0+IHsKICAgICAgICBjb25zdCBiZWZvcmUgPSBub2RlLnRleHRDb250ZW50OwogICAgICAgIGlmICggcmVJbmNsdWRlcyApIHsKICAgICAgICAgICAgcmVJbmNsdWRlcy5sYXN0SW5kZXggPSAwOwogICAgICAgICAgICBpZiAoIHNhZmUuUmVnRXhwX3Rlc3QuY2FsbChyZUluY2x1ZGVzLCBiZWZvcmUpID09PSBmYWxzZSApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICB9CiAgICAgICAgaWYgKCByZUV4Y2x1ZGVzICkgewogICAgICAgICAgICByZUV4Y2x1ZGVzLmxhc3RJbmRleCA9IDA7CiAgICAgICAgICAgIGlmICggc2FmZS5SZWdFeHBfdGVzdC5jYWxsKHJlRXhjbHVkZXMsIGJlZm9yZSkgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgfQogICAgICAgIHJlUGF0dGVybi5sYXN0SW5kZXggPSAwOwogICAgICAgIGlmICggc2FmZS5SZWdFeHBfdGVzdC5jYWxsKHJlUGF0dGVybiwgYmVmb3JlKSA9PT0gZmFsc2UgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgcmVQYXR0ZXJuLmxhc3RJbmRleCA9IDA7CiAgICAgICAgY29uc3QgYWZ0ZXIgPSBwYXR0ZXJuICE9PSAnJwogICAgICAgICAgICA/IGJlZm9yZS5yZXBsYWNlKHJlUGF0dGVybiwgcmVwbGFjZW1lbnQpCiAgICAgICAgICAgIDogcmVwbGFjZW1lbnQ7CiAgICAgICAgbm9kZS50ZXh0Q29udGVudCA9IG5vZGUubm9kZU5hbWUgPT09ICdTQ1JJUFQnCiAgICAgICAgICAgID8gdGV4dENvbnRlbnRGYWN0b3J5LmNyZWF0ZVNjcmlwdChhZnRlcikKICAgICAgICAgICAgOiBhZnRlcjsKICAgICAgICBpZiAoIHNhZmUubG9nTGV2ZWwgPiAxICkgewogICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBUZXh0IGJlZm9yZTpcbiR7YmVmb3JlLnRyaW0oKX1gKTsKICAgICAgICB9CiAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCBgVGV4dCBhZnRlcjpcbiR7YWZ0ZXIudHJpbSgpfWApOwogICAgICAgIHJldHVybiBzZWRDb3VudCA9PT0gMCB8fCAoc2VkQ291bnQgLT0gMSkgIT09IDA7CiAgICB9OwogICAgY29uc3QgaGFuZGxlTXV0YXRpb25zID0gbXV0YXRpb25zID0+IHsKICAgICAgICBmb3IgKCBjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMgKSB7CiAgICAgICAgICAgIGZvciAoIGNvbnN0IG5vZGUgb2YgbXV0YXRpb24uYWRkZWROb2RlcyApIHsKICAgICAgICAgICAgICAgIGlmICggcmVOb2RlTmFtZS50ZXN0KG5vZGUubm9kZU5hbWUpID09PSBmYWxzZSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIGlmICggaGFuZGxlTm9kZShub2RlKSApIHsgY29udGludWU7IH0KICAgICAgICAgICAgICAgIHN0b3AoZmFsc2UpOyByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihoYW5kbGVNdXRhdGlvbnMpOwogICAgb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7CiAgICBpZiAoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCApIHsKICAgICAgICBjb25zdCB0cmVlV2Fsa2VyID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcigKICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LAogICAgICAgICAgICBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCB8IE5vZGVGaWx0ZXIuU0hPV19URVhUCiAgICAgICAgKTsKICAgICAgICBsZXQgY291bnQgPSAwOwogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHRyZWVXYWxrZXIubmV4dE5vZGUoKTsKICAgICAgICAgICAgY291bnQgKz0gMTsKICAgICAgICAgICAgaWYgKCBub2RlID09PSBudWxsICkgeyBicmVhazsgfQogICAgICAgICAgICBpZiAoIHJlTm9kZU5hbWUudGVzdChub2RlLm5vZGVOYW1lKSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgIGlmICggbm9kZSA9PT0gZG9jdW1lbnQuY3VycmVudFNjcmlwdCApIHsgY29udGludWU7IH0KICAgICAgICAgICAgaWYgKCBoYW5kbGVOb2RlKG5vZGUpICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICBzdG9wKCk7IGJyZWFrOwogICAgICAgIH0KICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGAke2NvdW50fSBub2RlcyBwcmVzZW50IGJlZm9yZSBpbnN0YWxsaW5nIG11dGF0aW9uIG9ic2VydmVyYCk7CiAgICB9CiAgICBpZiAoIGV4dHJhQXJncy5zdGF5ICkgeyByZXR1cm47IH0KICAgIHJ1bkF0KCggKSA9PiB7CiAgICAgICAgY29uc3QgcXVpdEFmdGVyID0gZXh0cmFBcmdzLnF1aXRBZnRlciB8fCAwOwogICAgICAgIGlmICggcXVpdEFmdGVyICE9PSAwICkgewogICAgICAgICAgICBzZXRUaW1lb3V0KCggKSA9PiB7IHN0b3AoKTsgfSwgcXVpdEFmdGVyKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzdG9wKCk7CiAgICAgICAgfQogICAgfSwgJ2ludGVyYWN0aXZlJyk7Cn0KCiAgKGZ1bmN0aW9uIHJlcGxhY2VOb2RlVGV4dCgKICAgIG5vZGVOYW1lLAogICAgcGF0dGVybiwKICAgIHJlcGxhY2VtZW50LAogICAgLi4uZXh0cmFBcmdzCikgewogICAgcmVwbGFjZU5vZGVUZXh0Rm4obm9kZU5hbWUsIHBhdHRlcm4sIHJlcGxhY2VtZW50LCAuLi5leHRyYUFyZ3MpOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"trusted-set-constant.js","aliases":["trusted-set.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gdmFsaWRhdGVDb25zdGFudEZuKHRydXN0ZWQsIHJhdywgZXh0cmFBcmdzID0ge30pIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgbGV0IHZhbHVlOwogICAgaWYgKCByYXcgPT09ICd1bmRlZmluZWQnICkgewogICAgICAgIHZhbHVlID0gdW5kZWZpbmVkOwogICAgfSBlbHNlIGlmICggcmF3ID09PSAnZmFsc2UnICkgewogICAgICAgIHZhbHVlID0gZmFsc2U7CiAgICB9IGVsc2UgaWYgKCByYXcgPT09ICd0cnVlJyApIHsKICAgICAgICB2YWx1ZSA9IHRydWU7CiAgICB9IGVsc2UgaWYgKCByYXcgPT09ICdudWxsJyApIHsKICAgICAgICB2YWx1ZSA9IG51bGw7CiAgICB9IGVsc2UgaWYgKCByYXcgPT09ICInJyIgfHwgcmF3ID09PSAnJyApIHsKICAgICAgICB2YWx1ZSA9ICcnOwogICAgfSBlbHNlIGlmICggcmF3ID09PSAnW10nIHx8IHJhdyA9PT0gJ2VtcHR5QXJyJyApIHsKICAgICAgICB2YWx1ZSA9IFtdOwogICAgfSBlbHNlIGlmICggcmF3ID09PSAne30nIHx8IHJhdyA9PT0gJ2VtcHR5T2JqJyApIHsKICAgICAgICB2YWx1ZSA9IHt9OwogICAgfSBlbHNlIGlmICggcmF3ID09PSAnbm9vcEZ1bmMnICkgewogICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKXt9OwogICAgfSBlbHNlIGlmICggcmF3ID09PSAndHJ1ZUZ1bmMnICkgewogICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKXsgcmV0dXJuIHRydWU7IH07CiAgICB9IGVsc2UgaWYgKCByYXcgPT09ICdmYWxzZUZ1bmMnICkgewogICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKXsgcmV0dXJuIGZhbHNlOyB9OwogICAgfSBlbHNlIGlmICggcmF3ID09PSAndGhyb3dGdW5jJyApIHsKICAgICAgICB2YWx1ZSA9IGZ1bmN0aW9uKCl7IHRocm93ICcnOyB9OwogICAgfSBlbHNlIGlmICggL14tP1xkKyQvLnRlc3QocmF3KSApIHsKICAgICAgICB2YWx1ZSA9IHBhcnNlSW50KHJhdyk7CiAgICAgICAgaWYgKCBpc05hTihyYXcpICkgeyByZXR1cm47IH0KICAgICAgICBpZiAoIE1hdGguYWJzKHJhdykgPiAweDdGRkYgKSB7IHJldHVybjsgfQogICAgfSBlbHNlIGlmICggdHJ1c3RlZCApIHsKICAgICAgICBpZiAoIHJhdy5zdGFydHNXaXRoKCdqc29uOicpICkgewogICAgICAgICAgICB0cnkgeyB2YWx1ZSA9IHNhZmUuSlNPTl9wYXJzZShyYXcuc2xpY2UoNSkpOyB9IGNhdGNoKGV4KSB7IHJldHVybjsgfQogICAgICAgIH0gZWxzZSBpZiAoIHJhdy5zdGFydHNXaXRoKCd7JykgJiYgcmF3LmVuZHNXaXRoKCd9JykgKSB7CiAgICAgICAgICAgIHRyeSB7IHZhbHVlID0gc2FmZS5KU09OX3BhcnNlKHJhdykudmFsdWU7IH0gY2F0Y2goZXgpIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoIGV4dHJhQXJncy5hcyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgIGlmICggZXh0cmFBcmdzLmFzID09PSAnZnVuY3Rpb24nICkgewogICAgICAgICAgICByZXR1cm4gKCApID0+IHZhbHVlOwogICAgICAgIH0gZWxzZSBpZiAoIGV4dHJhQXJncy5hcyA9PT0gJ2NhbGxiYWNrJyApIHsKICAgICAgICAgICAgcmV0dXJuICggKSA9PiAoKCApID0+IHZhbHVlKTsKICAgICAgICB9IGVsc2UgaWYgKCBleHRyYUFyZ3MuYXMgPT09ICdyZXNvbHZlZCcgKSB7CiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpOwogICAgICAgIH0gZWxzZSBpZiAoIGV4dHJhQXJncy5hcyA9PT0gJ3JlamVjdGVkJyApIHsKICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHZhbHVlKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdmFsdWU7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBydW5BdChmbiwgd2hlbikgewogICAgY29uc3QgaW50RnJvbVJlYWR5U3RhdGUgPSBzdGF0ZSA9PiB7CiAgICAgICAgY29uc3QgdGFyZ2V0cyA9IHsKICAgICAgICAgICAgJ2xvYWRpbmcnOiAxLCAnYXNhcCc6IDEsCiAgICAgICAgICAgICdpbnRlcmFjdGl2ZSc6IDIsICdlbmQnOiAyLCAnMic6IDIsCiAgICAgICAgICAgICdjb21wbGV0ZSc6IDMsICdpZGxlJzogMywgJzMnOiAzLAogICAgICAgIH07CiAgICAgICAgY29uc3QgdG9rZW5zID0gQXJyYXkuaXNBcnJheShzdGF0ZSkgPyBzdGF0ZSA6IFsgc3RhdGUgXTsKICAgICAgICBmb3IgKCBjb25zdCB0b2tlbiBvZiB0b2tlbnMgKSB7CiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBgJHt0b2tlbn1gOwogICAgICAgICAgICBpZiAoIHRhcmdldHMuaGFzT3duUHJvcGVydHkocHJvcCkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICByZXR1cm4gdGFyZ2V0c1twcm9wXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9OwogICAgY29uc3QgcnVuQXQgPSBpbnRGcm9tUmVhZHlTdGF0ZSh3aGVuKTsKICAgIGlmICggaW50RnJvbVJlYWR5U3RhdGUoZG9jdW1lbnQucmVhZHlTdGF0ZSkgPj0gcnVuQXQgKSB7CiAgICAgICAgZm4oKTsgcmV0dXJuOwogICAgfQogICAgY29uc3Qgb25TdGF0ZUNoYW5nZSA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBpbnRGcm9tUmVhZHlTdGF0ZShkb2N1bWVudC5yZWFkeVN0YXRlKSA8IHJ1bkF0ICkgeyByZXR1cm47IH0KICAgICAgICBmbigpOwogICAgICAgIHNhZmUucmVtb3ZlRXZlbnRMaXN0ZW5lci5hcHBseShkb2N1bWVudCwgYXJncyk7CiAgICB9OwogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBhcmdzID0gWyAncmVhZHlzdGF0ZWNoYW5nZScsIG9uU3RhdGVDaGFuZ2UsIHsgY2FwdHVyZTogdHJ1ZSB9IF07CiAgICBzYWZlLmFkZEV2ZW50TGlzdGVuZXIuYXBwbHkoZG9jdW1lbnQsIGFyZ3MpOwp9CmZ1bmN0aW9uIHNldENvbnN0YW50Rm4oCiAgICB0cnVzdGVkID0gZmFsc2UsCiAgICBjaGFpbiA9ICcnLAogICAgcmF3VmFsdWUgPSAnJwopIHsKICAgIGlmICggY2hhaW4gPT09ICcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbG9nUHJlZml4ID0gc2FmZS5tYWtlTG9nUHJlZml4KCdzZXQtY29uc3RhbnQnLCBjaGFpbiwgcmF3VmFsdWUpOwogICAgY29uc3QgZXh0cmFBcmdzID0gc2FmZS5nZXRFeHRyYUFyZ3MoQXJyYXkuZnJvbShhcmd1bWVudHMpLCAzKTsKICAgIGZ1bmN0aW9uIHNldENvbnN0YW50KGNoYWluLCByYXdWYWx1ZSkgewogICAgICAgIGNvbnN0IHRyYXBwZWRQcm9wID0gKCggKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHBvcyA9IGNoYWluLmxhc3RJbmRleE9mKCcuJyk7CiAgICAgICAgICAgIGlmICggcG9zID09PSAtMSApIHsgcmV0dXJuIGNoYWluOyB9CiAgICAgICAgICAgIHJldHVybiBjaGFpbi5zbGljZShwb3MrMSk7CiAgICAgICAgfSkoKTsKICAgICAgICBjb25zdCBjbG9ha0Z1bmMgPSBmbiA9PiB7CiAgICAgICAgICAgIHNhZmUuT2JqZWN0X2RlZmluZVByb3BlcnR5KGZuLCAnbmFtZScsIHsgdmFsdWU6IHRyYXBwZWRQcm9wIH0pOwogICAgICAgICAgICByZXR1cm4gbmV3IFByb3h5KGZuLCB7CiAgICAgICAgICAgICAgICBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3ApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIHByb3AgIT09ICd0b1N0cmluZycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmRlZmluZVByb3BlcnR5KC4uLmFyZ3VtZW50cyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcHJvcCkgewogICAgICAgICAgICAgICAgICAgIGlmICggcHJvcCAhPT0gJ3RvU3RyaW5nJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVsZXRlUHJvcGVydHkoLi4uYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0KHRhcmdldCwgcHJvcCkgewogICAgICAgICAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ3RvU3RyaW5nJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGBmdW5jdGlvbiAke3RyYXBwZWRQcm9wfSgpIHsgW25hdGl2ZSBjb2RlXSB9YDsKICAgICAgICAgICAgICAgICAgICAgICAgfS5iaW5kKG51bGwpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQoLi4uYXJndW1lbnRzKTsKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0pOwogICAgICAgIH07CiAgICAgICAgaWYgKCB0cmFwcGVkUHJvcCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgIGNvbnN0IHRoaXNTY3JpcHQgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0OwogICAgICAgIGxldCBub3JtYWxWYWx1ZSA9IHZhbGlkYXRlQ29uc3RhbnRGbih0cnVzdGVkLCByYXdWYWx1ZSwgZXh0cmFBcmdzKTsKICAgICAgICBpZiAoIHJhd1ZhbHVlID09PSAnbm9vcEZ1bmMnIHx8IHJhd1ZhbHVlID09PSAndHJ1ZUZ1bmMnIHx8IHJhd1ZhbHVlID09PSAnZmFsc2VGdW5jJyApIHsKICAgICAgICAgICAgbm9ybWFsVmFsdWUgPSBjbG9ha0Z1bmMobm9ybWFsVmFsdWUpOwogICAgICAgIH0KICAgICAgICBsZXQgYWJvcnRlZCA9IGZhbHNlOwogICAgICAgIGNvbnN0IG11c3RBYm9ydCA9IGZ1bmN0aW9uKHYpIHsKICAgICAgICAgICAgaWYgKCB0cnVzdGVkICkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgICAgaWYgKCBhYm9ydGVkICkgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICAgICBhYm9ydGVkID0KICAgICAgICAgICAgICAgICh2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gbnVsbCkgJiYKICAgICAgICAgICAgICAgIChub3JtYWxWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIG5vcm1hbFZhbHVlICE9PSBudWxsKSAmJgogICAgICAgICAgICAgICAgKHR5cGVvZiB2ICE9PSB0eXBlb2Ygbm9ybWFsVmFsdWUpOwogICAgICAgICAgICBpZiAoIGFib3J0ZWQgKSB7CiAgICAgICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBBYm9ydGVkIGJlY2F1c2UgdmFsdWUgc2V0IHRvICR7dn1gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gYWJvcnRlZDsKICAgICAgICB9OwogICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS91QmxvY2tPcmlnaW4vdUJsb2NrLWlzc3Vlcy9pc3N1ZXMvMTU2CiAgICAgICAgLy8gICBTdXBwb3J0IG11bHRpcGxlIHRyYXBwZXJzIGZvciB0aGUgc2FtZSBwcm9wZXJ0eS4KICAgICAgICBjb25zdCB0cmFwUHJvcCA9IGZ1bmN0aW9uKG93bmVyLCBwcm9wLCBjb25maWd1cmFibGUsIGhhbmRsZXIpIHsKICAgICAgICAgICAgaWYgKCBoYW5kbGVyLmluaXQoY29uZmlndXJhYmxlID8gb3duZXJbcHJvcF0gOiBub3JtYWxWYWx1ZSkgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICAgICAgY29uc3Qgb2Rlc2MgPSBzYWZlLk9iamVjdF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob3duZXIsIHByb3ApOwogICAgICAgICAgICBsZXQgcHJldkdldHRlciwgcHJldlNldHRlcjsKICAgICAgICAgICAgaWYgKCBvZGVzYyBpbnN0YW5jZW9mIHNhZmUuT2JqZWN0ICkgewogICAgICAgICAgICAgICAgb3duZXJbcHJvcF0gPSBub3JtYWxWYWx1ZTsKICAgICAgICAgICAgICAgIGlmICggb2Rlc2MuZ2V0IGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgICAgICAgICAgcHJldkdldHRlciA9IG9kZXNjLmdldDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggb2Rlc2Muc2V0IGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgICAgICAgICAgcHJldlNldHRlciA9IG9kZXNjLnNldDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgc2FmZS5PYmplY3RfZGVmaW5lUHJvcGVydHkob3duZXIsIHByb3AsIHsKICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGUsCiAgICAgICAgICAgICAgICAgICAgZ2V0KCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHByZXZHZXR0ZXIgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZHZXR0ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlci5nZXR0ZXIoKTsKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHNldChhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcHJldlNldHRlciAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldlNldHRlcihhKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLnNldHRlcihhKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgJ1RyYXAgaW5zdGFsbGVkJyk7CiAgICAgICAgICAgIH0gY2F0Y2goZXgpIHsKICAgICAgICAgICAgICAgIHNhZmUudWJvRXJyKGxvZ1ByZWZpeCwgZXgpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBjb25zdCB0cmFwQ2hhaW4gPSBmdW5jdGlvbihvd25lciwgY2hhaW4pIHsKICAgICAgICAgICAgY29uc3QgcG9zID0gY2hhaW4uaW5kZXhPZignLicpOwogICAgICAgICAgICBpZiAoIHBvcyA9PT0gLTEgKSB7CiAgICAgICAgICAgICAgICB0cmFwUHJvcChvd25lciwgY2hhaW4sIGZhbHNlLCB7CiAgICAgICAgICAgICAgICAgICAgdjogdW5kZWZpbmVkLAogICAgICAgICAgICAgICAgICAgIGluaXQ6IGZ1bmN0aW9uKHYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBtdXN0QWJvcnQodikgKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnYgPSB2OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGdldHRlcjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZG9jdW1lbnQuY3VycmVudFNjcmlwdCA9PT0gdGhpc1NjcmlwdCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnY7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCAnUHJvcGVydHkgcmVhZCcpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9ybWFsVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzZXR0ZXI6IGZ1bmN0aW9uKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBtdXN0QWJvcnQoYSkgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsVmFsdWUgPSBhOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IHByb3AgPSBjaGFpbi5zbGljZSgwLCBwb3MpOwogICAgICAgICAgICBjb25zdCB2ID0gb3duZXJbcHJvcF07CiAgICAgICAgICAgIGNoYWluID0gY2hhaW4uc2xpY2UocG9zICsgMSk7CiAgICAgICAgICAgIGlmICggdiBpbnN0YW5jZW9mIHNhZmUuT2JqZWN0IHx8IHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiB2ICE9PSBudWxsICkgewogICAgICAgICAgICAgICAgdHJhcENoYWluKHYsIGNoYWluKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cmFwUHJvcChvd25lciwgcHJvcCwgdHJ1ZSwgewogICAgICAgICAgICAgICAgdjogdW5kZWZpbmVkLAogICAgICAgICAgICAgICAgaW5pdDogZnVuY3Rpb24odikgewogICAgICAgICAgICAgICAgICAgIHRoaXMudiA9IHY7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZ2V0dGVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52OwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNldHRlcjogZnVuY3Rpb24oYSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMudiA9IGE7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBhIGluc3RhbmNlb2Ygc2FmZS5PYmplY3QgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyYXBDaGFpbihhLCBjaGFpbik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9OwogICAgICAgIHRyYXBDaGFpbih3aW5kb3csIGNoYWluKTsKICAgIH0KICAgIHJ1bkF0KCggKSA9PiB7CiAgICAgICAgc2V0Q29uc3RhbnQoY2hhaW4sIHJhd1ZhbHVlKTsKICAgIH0sIGV4dHJhQXJncy5ydW5BdCk7Cn0KCiAgKGZ1bmN0aW9uIHRydXN0ZWRTZXRDb25zdGFudCgKICAgIC4uLmFyZ3MKKSB7CiAgICBzZXRDb25zdGFudEZuKHRydWUsIC4uLmFyZ3MpOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"trusted-replace-fetch-response.js","aliases":["trusted-rpfr.js"],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBwYXJzZVByb3BlcnRpZXNUb01hdGNoKHByb3BzVG9NYXRjaCwgaW1wbGljaXQgPSAnJykgewogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBuZWVkbGVzID0gbmV3IE1hcCgpOwogICAgaWYgKCBwcm9wc1RvTWF0Y2ggPT09IHVuZGVmaW5lZCB8fCBwcm9wc1RvTWF0Y2ggPT09ICcnICkgeyByZXR1cm4gbmVlZGxlczsgfQogICAgY29uc3Qgb3B0aW9ucyA9IHsgY2FuTmVnYXRlOiB0cnVlIH07CiAgICBmb3IgKCBjb25zdCBuZWVkbGUgb2YgcHJvcHNUb01hdGNoLnNwbGl0KC9ccysvKSApIHsKICAgICAgICBjb25zdCBbIHByb3AsIHBhdHRlcm4gXSA9IG5lZWRsZS5zcGxpdCgnOicpOwogICAgICAgIGlmICggcHJvcCA9PT0gJycgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgaWYgKCBwYXR0ZXJuICE9PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgIG5lZWRsZXMuc2V0KHByb3AsIHNhZmUuaW5pdFBhdHRlcm4ocGF0dGVybiwgb3B0aW9ucykpOwogICAgICAgIH0gZWxzZSBpZiAoIGltcGxpY2l0ICE9PSAnJyApIHsKICAgICAgICAgICAgbmVlZGxlcy5zZXQoaW1wbGljaXQsIHNhZmUuaW5pdFBhdHRlcm4ocHJvcCwgb3B0aW9ucykpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBuZWVkbGVzOwp9CmZ1bmN0aW9uIG1hdGNoT2JqZWN0UHJvcGVydGllcyhwcm9wTmVlZGxlcywgLi4ub2JqcykgewogICAgaWYgKCBtYXRjaE9iamVjdFByb3BlcnRpZXMuZXh0cmFjdFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICBtYXRjaE9iamVjdFByb3BlcnRpZXMuZXh0cmFjdFByb3BlcnRpZXMgPSAoc3JjLCBkZXMsIHByb3BzKSA9PiB7CiAgICAgICAgICAgIGZvciAoIGNvbnN0IHAgb2YgcHJvcHMgKSB7CiAgICAgICAgICAgICAgICBjb25zdCB2ID0gc3JjW3BdOwogICAgICAgICAgICAgICAgaWYgKCB2ID09PSB1bmRlZmluZWQgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBkZXNbcF0gPSBzcmNbcF07CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBoYXlzdGFjayA9IHt9OwogICAgY29uc3QgcHJvcHMgPSBzYWZlLkFycmF5X2Zyb20ocHJvcE5lZWRsZXMua2V5cygpKTsKICAgIGZvciAoIGNvbnN0IG9iaiBvZiBvYmpzICkgewogICAgICAgIGlmICggb2JqIGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSApIHsgY29udGludWU7IH0KICAgICAgICBtYXRjaE9iamVjdFByb3BlcnRpZXMuZXh0cmFjdFByb3BlcnRpZXMob2JqLCBoYXlzdGFjaywgcHJvcHMpOwogICAgfQogICAgZm9yICggY29uc3QgWyBwcm9wLCBkZXRhaWxzIF0gb2YgcHJvcE5lZWRsZXMgKSB7CiAgICAgICAgbGV0IHZhbHVlID0gaGF5c3RhY2tbcHJvcF07CiAgICAgICAgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgeyBjb250aW51ZTsgfQogICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyApIHsKICAgICAgICAgICAgdHJ5IHsgdmFsdWUgPSBzYWZlLkpTT05fc3RyaW5naWZ5KHZhbHVlKTsgfQogICAgICAgICAgICBjYXRjaChleCkgeyB9CiAgICAgICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyApIHsgY29udGludWU7IH0KICAgICAgICB9CiAgICAgICAgaWYgKCBzYWZlLnRlc3RQYXR0ZXJuKGRldGFpbHMsIHZhbHVlKSApIHsgY29udGludWU7IH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfQpmdW5jdGlvbiByZXBsYWNlRmV0Y2hSZXNwb25zZUZuKAogICAgdHJ1c3RlZCA9IGZhbHNlLAogICAgcGF0dGVybiA9ICcnLAogICAgcmVwbGFjZW1lbnQgPSAnJywKICAgIHByb3BzVG9NYXRjaCA9ICcnCikgewogICAgaWYgKCB0cnVzdGVkICE9PSB0cnVlICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbG9nUHJlZml4ID0gc2FmZS5tYWtlTG9nUHJlZml4KCdyZXBsYWNlLWZldGNoLXJlc3BvbnNlJywgcGF0dGVybiwgcmVwbGFjZW1lbnQsIHByb3BzVG9NYXRjaCk7CiAgICBpZiAoIHBhdHRlcm4gPT09ICcqJyApIHsgcGF0dGVybiA9ICcuKic7IH0KICAgIGNvbnN0IHJlUGF0dGVybiA9IHNhZmUucGF0dGVyblRvUmVnZXgocGF0dGVybik7CiAgICBjb25zdCBwcm9wTmVlZGxlcyA9IHBhcnNlUHJvcGVydGllc1RvTWF0Y2gocHJvcHNUb01hdGNoLCAndXJsJyk7CiAgICBjb25zdCBleHRyYUFyZ3MgPSBzYWZlLmdldEV4dHJhQXJncyhBcnJheS5mcm9tKGFyZ3VtZW50cyksIDQpOwogICAgY29uc3QgcmVJbmNsdWRlcyA9IGV4dHJhQXJncy5pbmNsdWRlcyA/IHNhZmUucGF0dGVyblRvUmVnZXgoZXh0cmFBcmdzLmluY2x1ZGVzKSA6IG51bGw7CiAgICBzZWxmLmZldGNoID0gbmV3IFByb3h5KHNlbGYuZmV0Y2gsIHsKICAgICAgICBhcHBseTogZnVuY3Rpb24odGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSB7CiAgICAgICAgICAgIGNvbnN0IGZldGNoUHJvbWlzZSA9IFJlZmxlY3QuYXBwbHkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKTsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsgcmV0dXJuIGZldGNoUHJvbWlzZTsgfQogICAgICAgICAgICBsZXQgb3V0Y29tZSA9ICdtYXRjaCc7CiAgICAgICAgICAgIGlmICggcHJvcE5lZWRsZXMuc2l6ZSAhPT0gMCApIHsKICAgICAgICAgICAgICAgIGNvbnN0IG9ianMgPSBbIGFyZ3NbMF0gaW5zdGFuY2VvZiBPYmplY3QgPyBhcmdzWzBdIDogeyB1cmw6IGFyZ3NbMF0gfSBdOwogICAgICAgICAgICAgICAgaWYgKCBvYmpzWzBdIGluc3RhbmNlb2YgUmVxdWVzdCApIHsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBvYmpzWzBdID0gc2FmZS5SZXF1ZXN0X2Nsb25lLmNhbGwob2Jqc1swXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNhdGNoKGV4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNhZmUudWJvRXJyKGxvZ1ByZWZpeCwgZXgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggYXJnc1sxXSBpbnN0YW5jZW9mIE9iamVjdCApIHsKICAgICAgICAgICAgICAgICAgICBvYmpzLnB1c2goYXJnc1sxXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIG1hdGNoT2JqZWN0UHJvcGVydGllcyhwcm9wTmVlZGxlcywgLi4ub2JqcykgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgICAgIG91dGNvbWUgPSAnbm9tYXRjaCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBvdXRjb21lID09PSAnbm9tYXRjaCcgKSB7IHJldHVybiBmZXRjaFByb21pc2U7IH0KICAgICAgICAgICAgaWYgKCBzYWZlLmxvZ0xldmVsID4gMSApIHsKICAgICAgICAgICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgYE1hdGNoZWQgInByb3BzVG9NYXRjaCJcbiR7cHJvcHNUb01hdGNofWApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmZXRjaFByb21pc2UudGhlbihyZXNwb25zZUJlZm9yZSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHJlc3BvbnNlQmVmb3JlLmNsb25lKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UudGV4dCgpLnRoZW4odGV4dEJlZm9yZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCByZUluY2x1ZGVzICYmIHJlSW5jbHVkZXMudGVzdCh0ZXh0QmVmb3JlKSA9PT0gZmFsc2UgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZUJlZm9yZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGV4dEFmdGVyID0gdGV4dEJlZm9yZS5yZXBsYWNlKHJlUGF0dGVybiwgcmVwbGFjZW1lbnQpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IG91dGNvbWUgPSB0ZXh0QWZ0ZXIgIT09IHRleHRCZWZvcmUgPyAnbWF0Y2gnIDogJ25vbWF0Y2gnOwogICAgICAgICAgICAgICAgICAgIGlmICggb3V0Y29tZSA9PT0gJ25vbWF0Y2gnICkgeyByZXR1cm4gcmVzcG9uc2VCZWZvcmU7IH0KICAgICAgICAgICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsICdSZXBsYWNlZCcpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlQWZ0ZXIgPSBuZXcgUmVzcG9uc2UodGV4dEFmdGVyLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1czogcmVzcG9uc2VCZWZvcmUuc3RhdHVzLAogICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNUZXh0OiByZXNwb25zZUJlZm9yZS5zdGF0dXNUZXh0LAogICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiByZXNwb25zZUJlZm9yZS5oZWFkZXJzLAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHJlc3BvbnNlQWZ0ZXIsIHsKICAgICAgICAgICAgICAgICAgICAgICAgb2s6IHsgdmFsdWU6IHJlc3BvbnNlQmVmb3JlLm9rIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHJlZGlyZWN0ZWQ6IHsgdmFsdWU6IHJlc3BvbnNlQmVmb3JlLnJlZGlyZWN0ZWQgfSwKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogeyB2YWx1ZTogcmVzcG9uc2VCZWZvcmUudHlwZSB9LAogICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHsgdmFsdWU6IHJlc3BvbnNlQmVmb3JlLnVybCB9LAogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZUFmdGVyOwogICAgICAgICAgICAgICAgfSkuY2F0Y2gocmVhc29uID0+IHsKICAgICAgICAgICAgICAgICAgICBzYWZlLnVib0Vycihsb2dQcmVmaXgsIHJlYXNvbik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlQmVmb3JlOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pLmNhdGNoKHJlYXNvbiA9PiB7CiAgICAgICAgICAgICAgICBzYWZlLnVib0Vycihsb2dQcmVmaXgsIHJlYXNvbik7CiAgICAgICAgICAgICAgICByZXR1cm4gZmV0Y2hQcm9taXNlOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9KTsKfQoKICAoZnVuY3Rpb24gdHJ1c3RlZFJlcGxhY2VGZXRjaFJlc3BvbnNlKC4uLmFyZ3MpIHsKICAgIHJlcGxhY2VGZXRjaFJlc3BvbnNlRm4odHJ1ZSwgLi4uYXJncyk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"trusted-replace-xhr-response.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBwYXJzZVByb3BlcnRpZXNUb01hdGNoKHByb3BzVG9NYXRjaCwgaW1wbGljaXQgPSAnJykgewogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBuZWVkbGVzID0gbmV3IE1hcCgpOwogICAgaWYgKCBwcm9wc1RvTWF0Y2ggPT09IHVuZGVmaW5lZCB8fCBwcm9wc1RvTWF0Y2ggPT09ICcnICkgeyByZXR1cm4gbmVlZGxlczsgfQogICAgY29uc3Qgb3B0aW9ucyA9IHsgY2FuTmVnYXRlOiB0cnVlIH07CiAgICBmb3IgKCBjb25zdCBuZWVkbGUgb2YgcHJvcHNUb01hdGNoLnNwbGl0KC9ccysvKSApIHsKICAgICAgICBjb25zdCBbIHByb3AsIHBhdHRlcm4gXSA9IG5lZWRsZS5zcGxpdCgnOicpOwogICAgICAgIGlmICggcHJvcCA9PT0gJycgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgaWYgKCBwYXR0ZXJuICE9PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgIG5lZWRsZXMuc2V0KHByb3AsIHNhZmUuaW5pdFBhdHRlcm4ocGF0dGVybiwgb3B0aW9ucykpOwogICAgICAgIH0gZWxzZSBpZiAoIGltcGxpY2l0ICE9PSAnJyApIHsKICAgICAgICAgICAgbmVlZGxlcy5zZXQoaW1wbGljaXQsIHNhZmUuaW5pdFBhdHRlcm4ocHJvcCwgb3B0aW9ucykpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBuZWVkbGVzOwp9CmZ1bmN0aW9uIG1hdGNoT2JqZWN0UHJvcGVydGllcyhwcm9wTmVlZGxlcywgLi4ub2JqcykgewogICAgaWYgKCBtYXRjaE9iamVjdFByb3BlcnRpZXMuZXh0cmFjdFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICBtYXRjaE9iamVjdFByb3BlcnRpZXMuZXh0cmFjdFByb3BlcnRpZXMgPSAoc3JjLCBkZXMsIHByb3BzKSA9PiB7CiAgICAgICAgICAgIGZvciAoIGNvbnN0IHAgb2YgcHJvcHMgKSB7CiAgICAgICAgICAgICAgICBjb25zdCB2ID0gc3JjW3BdOwogICAgICAgICAgICAgICAgaWYgKCB2ID09PSB1bmRlZmluZWQgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBkZXNbcF0gPSBzcmNbcF07CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBoYXlzdGFjayA9IHt9OwogICAgY29uc3QgcHJvcHMgPSBzYWZlLkFycmF5X2Zyb20ocHJvcE5lZWRsZXMua2V5cygpKTsKICAgIGZvciAoIGNvbnN0IG9iaiBvZiBvYmpzICkgewogICAgICAgIGlmICggb2JqIGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSApIHsgY29udGludWU7IH0KICAgICAgICBtYXRjaE9iamVjdFByb3BlcnRpZXMuZXh0cmFjdFByb3BlcnRpZXMob2JqLCBoYXlzdGFjaywgcHJvcHMpOwogICAgfQogICAgZm9yICggY29uc3QgWyBwcm9wLCBkZXRhaWxzIF0gb2YgcHJvcE5lZWRsZXMgKSB7CiAgICAgICAgbGV0IHZhbHVlID0gaGF5c3RhY2tbcHJvcF07CiAgICAgICAgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgeyBjb250aW51ZTsgfQogICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyApIHsKICAgICAgICAgICAgdHJ5IHsgdmFsdWUgPSBzYWZlLkpTT05fc3RyaW5naWZ5KHZhbHVlKTsgfQogICAgICAgICAgICBjYXRjaChleCkgeyB9CiAgICAgICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyApIHsgY29udGludWU7IH0KICAgICAgICB9CiAgICAgICAgaWYgKCBzYWZlLnRlc3RQYXR0ZXJuKGRldGFpbHMsIHZhbHVlKSApIHsgY29udGludWU7IH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfQoKICAoZnVuY3Rpb24gdHJ1c3RlZFJlcGxhY2VYaHJSZXNwb25zZSgKICAgIHBhdHRlcm4gPSAnJywKICAgIHJlcGxhY2VtZW50ID0gJycsCiAgICBwcm9wc1RvTWF0Y2ggPSAnJwopIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbG9nUHJlZml4ID0gc2FmZS5tYWtlTG9nUHJlZml4KCd0cnVzdGVkLXJlcGxhY2UteGhyLXJlc3BvbnNlJywgcGF0dGVybiwgcmVwbGFjZW1lbnQsIHByb3BzVG9NYXRjaCk7CiAgICBjb25zdCB4aHJJbnN0YW5jZXMgPSBuZXcgV2Vha01hcCgpOwogICAgaWYgKCBwYXR0ZXJuID09PSAnKicgKSB7IHBhdHRlcm4gPSAnLionOyB9CiAgICBjb25zdCByZVBhdHRlcm4gPSBzYWZlLnBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4pOwogICAgY29uc3QgcHJvcE5lZWRsZXMgPSBwYXJzZVByb3BlcnRpZXNUb01hdGNoKHByb3BzVG9NYXRjaCwgJ3VybCcpOwogICAgY29uc3QgZXh0cmFBcmdzID0gc2FmZS5nZXRFeHRyYUFyZ3MoQXJyYXkuZnJvbShhcmd1bWVudHMpLCAzKTsKICAgIGNvbnN0IHJlSW5jbHVkZXMgPSBleHRyYUFyZ3MuaW5jbHVkZXMgPyBzYWZlLnBhdHRlcm5Ub1JlZ2V4KGV4dHJhQXJncy5pbmNsdWRlcykgOiBudWxsOwogICAgc2VsZi5YTUxIdHRwUmVxdWVzdCA9IGNsYXNzIGV4dGVuZHMgc2VsZi5YTUxIdHRwUmVxdWVzdCB7CiAgICAgICAgb3BlbihtZXRob2QsIHVybCwgLi4uYXJncykgewogICAgICAgICAgICBjb25zdCBvdXRlclhociA9IHRoaXM7CiAgICAgICAgICAgIGNvbnN0IHhockRldGFpbHMgPSB7IG1ldGhvZCwgdXJsIH07CiAgICAgICAgICAgIGxldCBvdXRjb21lID0gJ21hdGNoJzsKICAgICAgICAgICAgaWYgKCBwcm9wTmVlZGxlcy5zaXplICE9PSAwICkgewogICAgICAgICAgICAgICAgaWYgKCBtYXRjaE9iamVjdFByb3BlcnRpZXMocHJvcE5lZWRsZXMsIHhockRldGFpbHMpID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgICAgICBvdXRjb21lID0gJ25vbWF0Y2gnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3V0Y29tZSA9PT0gJ21hdGNoJyApIHsKICAgICAgICAgICAgICAgIGlmICggc2FmZS5sb2dMZXZlbCA+IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCBgTWF0Y2hlZCAicHJvcHNUb01hdGNoImApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgeGhySW5zdGFuY2VzLnNldChvdXRlclhociwgeGhyRGV0YWlscyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHN1cGVyLm9wZW4obWV0aG9kLCB1cmwsIC4uLmFyZ3MpOwogICAgICAgIH0KICAgICAgICBnZXQgcmVzcG9uc2UoKSB7CiAgICAgICAgICAgIGNvbnN0IGlubmVyUmVzcG9uc2UgPSBzdXBlci5yZXNwb25zZTsKICAgICAgICAgICAgY29uc3QgeGhyRGV0YWlscyA9IHhockluc3RhbmNlcy5nZXQodGhpcyk7CiAgICAgICAgICAgIGlmICggeGhyRGV0YWlscyA9PT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIGlubmVyUmVzcG9uc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgcmVzcG9uc2VMZW5ndGggPSB0eXBlb2YgaW5uZXJSZXNwb25zZSA9PT0gJ3N0cmluZycKICAgICAgICAgICAgICAgID8gaW5uZXJSZXNwb25zZS5sZW5ndGgKICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkOwogICAgICAgICAgICBpZiAoIHhockRldGFpbHMubGFzdFJlc3BvbnNlTGVuZ3RoICE9PSByZXNwb25zZUxlbmd0aCApIHsKICAgICAgICAgICAgICAgIHhockRldGFpbHMucmVzcG9uc2UgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB4aHJEZXRhaWxzLmxhc3RSZXNwb25zZUxlbmd0aCA9IHJlc3BvbnNlTGVuZ3RoOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggeGhyRGV0YWlscy5yZXNwb25zZSAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHhockRldGFpbHMucmVzcG9uc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCB0eXBlb2YgaW5uZXJSZXNwb25zZSAhPT0gJ3N0cmluZycgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKHhockRldGFpbHMucmVzcG9uc2UgPSBpbm5lclJlc3BvbnNlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIHJlSW5jbHVkZXMgJiYgcmVJbmNsdWRlcy50ZXN0KGlubmVyUmVzcG9uc2UpID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAoeGhyRGV0YWlscy5yZXNwb25zZSA9IGlubmVyUmVzcG9uc2UpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IHRleHRCZWZvcmUgPSBpbm5lclJlc3BvbnNlOwogICAgICAgICAgICBjb25zdCB0ZXh0QWZ0ZXIgPSB0ZXh0QmVmb3JlLnJlcGxhY2UocmVQYXR0ZXJuLCByZXBsYWNlbWVudCk7CiAgICAgICAgICAgIGlmICggdGV4dEFmdGVyICE9PSB0ZXh0QmVmb3JlICkgewogICAgICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCAnTWF0Y2gnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gKHhockRldGFpbHMucmVzcG9uc2UgPSB0ZXh0QWZ0ZXIpOwogICAgICAgIH0KICAgICAgICBnZXQgcmVzcG9uc2VUZXh0KCkgewogICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHRoaXMucmVzcG9uc2U7CiAgICAgICAgICAgIGlmICggdHlwZW9mIHJlc3BvbnNlICE9PSAnc3RyaW5nJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5yZXNwb25zZVRleHQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlOwogICAgICAgIH0KICAgIH07Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"trusted-click-element.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBydW5BdEh0bWxFbGVtZW50Rm4oZm4pIHsKICAgIGlmICggZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICkgewogICAgICAgIGZuKCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoICkgPT4gewogICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKICAgICAgICBmbigpOwogICAgfSk7CiAgICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSB9KTsKfQpmdW5jdGlvbiBnZXRBbGxMb2NhbFN0b3JhZ2VGbih3aGljaCA9ICdsb2NhbFN0b3JhZ2UnKSB7CiAgICBjb25zdCBzdG9yYWdlID0gc2VsZlt3aGljaF07CiAgICBjb25zdCBvdXQgPSBbXTsKICAgIGZvciAoIGxldCBpID0gMDsgaSA8IHN0b3JhZ2UubGVuZ3RoOyBpKysgKSB7CiAgICAgICAgY29uc3Qga2V5ID0gc3RvcmFnZS5rZXkoaSk7CiAgICAgICAgY29uc3QgdmFsdWUgPSBzdG9yYWdlLmdldEl0ZW0oa2V5KTsKICAgICAgICByZXR1cm4geyBrZXksIHZhbHVlIH07CiAgICB9CiAgICByZXR1cm4gb3V0Owp9CmZ1bmN0aW9uIGdldEFsbENvb2tpZXNGbigpIHsKICAgIHJldHVybiBkb2N1bWVudC5jb29raWUuc3BsaXQoL1xzKjtccyovKS5tYXAocyA9PiB7CiAgICAgICAgY29uc3QgcG9zID0gcy5pbmRleE9mKCc9Jyk7CiAgICAgICAgaWYgKCBwb3MgPT09IDAgKSB7IHJldHVybjsgfQogICAgICAgIGlmICggcG9zID09PSAtMSApIHsgcmV0dXJuIGAke3MudHJpbSgpfT1gOyB9CiAgICAgICAgY29uc3Qga2V5ID0gcy5zbGljZSgwLCBwb3MpLnRyaW0oKTsKICAgICAgICBjb25zdCB2YWx1ZSA9IHMuc2xpY2UocG9zKzEpLnRyaW0oKTsKICAgICAgICByZXR1cm4geyBrZXksIHZhbHVlIH07CiAgICB9KS5maWx0ZXIocyA9PiBzICE9PSB1bmRlZmluZWQpOwp9CgogIChmdW5jdGlvbiB0cnVzdGVkQ2xpY2tFbGVtZW50KAogICAgc2VsZWN0b3JzID0gJycsCiAgICBleHRyYU1hdGNoID0gJycsCiAgICBkZWxheSA9ICcnCikgewogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBsb2dQcmVmaXggPSBzYWZlLm1ha2VMb2dQcmVmaXgoJ3RydXN0ZWQtY2xpY2stZWxlbWVudCcsIHNlbGVjdG9ycywgZXh0cmFNYXRjaCwgZGVsYXkpOwoKICAgIGlmICggZXh0cmFNYXRjaCAhPT0gJycgKSB7CiAgICAgICAgY29uc3QgYXNzZXJ0aW9ucyA9IGV4dHJhTWF0Y2guc3BsaXQoJywnKS5tYXAocyA9PiB7CiAgICAgICAgICAgIGNvbnN0IHBvczEgPSBzLmluZGV4T2YoJzonKTsKICAgICAgICAgICAgY29uc3QgczEgPSBwb3MxICE9PSAtMSA/IHMuc2xpY2UoMCwgcG9zMSkgOiBzOwogICAgICAgICAgICBjb25zdCBub3QgPSBzMS5zdGFydHNXaXRoKCchJyk7CiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBub3QgPyBzMS5zbGljZSgxKSA6IHMxOwogICAgICAgICAgICBjb25zdCBzMiA9IHBvczEgIT09IC0xID8gcy5zbGljZShwb3MxKzEpLnRyaW0oKSA6ICcnOwogICAgICAgICAgICBpZiAoIHMyID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGNvbnN0IG91dCA9IHsgbm90LCB0eXBlIH07CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhpPykkLy5leGVjKHMyKTsKICAgICAgICAgICAgaWYgKCBtYXRjaCAhPT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIG91dC5yZSA9IG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IHBvczIgPSBzMi5pbmRleE9mKCc9Jyk7CiAgICAgICAgICAgIGNvbnN0IGtleSA9IHBvczIgIT09IC0xID8gczIuc2xpY2UoMCwgcG9zMikudHJpbSgpIDogczI7CiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcG9zMiAhPT0gLTEgPyBzMi5zbGljZShwb3MyKzEpLnRyaW0oKSA6ICcnOwogICAgICAgICAgICBvdXQucmUgPSBuZXcgUmVnRXhwKGBeJHt0aGlzLmVzY2FwZVJlZ2V4Q2hhcnMoa2V5KX09JHt0aGlzLmVzY2FwZVJlZ2V4Q2hhcnModmFsdWUpfWApOwogICAgICAgICAgICByZXR1cm4gb3V0OwogICAgICAgIH0pLmZpbHRlcihkZXRhaWxzID0+IGRldGFpbHMgIT09IHVuZGVmaW5lZCk7CiAgICAgICAgY29uc3QgYWxsQ29va2llcyA9IGFzc2VydGlvbnMuc29tZShvID0+IG8udHlwZSA9PT0gJ2Nvb2tpZScpCiAgICAgICAgICAgID8gZ2V0QWxsQ29va2llc0ZuKCkKICAgICAgICAgICAgOiBbXTsKICAgICAgICBjb25zdCBhbGxTdG9yYWdlSXRlbXMgPSBhc3NlcnRpb25zLnNvbWUobyA9PiBvLnR5cGUgPT09ICdsb2NhbFN0b3JhZ2UnKQogICAgICAgICAgICA/IGdldEFsbExvY2FsU3RvcmFnZUZuKCkKICAgICAgICAgICAgOiBbXTsKICAgICAgICBjb25zdCBoYXNOZWVkbGUgPSAoaGF5c3RhY2ssIG5lZWRsZSkgPT4gewogICAgICAgICAgICBmb3IgKCBjb25zdCB7IGtleSwgdmFsdWUgfSBvZiBoYXlzdGFjayApIHsKICAgICAgICAgICAgICAgIGlmICggbmVlZGxlLnRlc3QoYCR7a2V5fT0ke3ZhbHVlfWApICkgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9OwogICAgICAgIGZvciAoIGNvbnN0IHsgbm90LCB0eXBlLCByZSB9IG9mIGFzc2VydGlvbnMgKSB7CiAgICAgICAgICAgIHN3aXRjaCAoIHR5cGUgKSB7CiAgICAgICAgICAgIGNhc2UgJ2Nvb2tpZSc6CiAgICAgICAgICAgICAgICBpZiAoIGhhc05lZWRsZShhbGxDb29raWVzLCByZSkgPT09IG5vdCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnbG9jYWxTdG9yYWdlJzoKICAgICAgICAgICAgICAgIGlmICggaGFzTmVlZGxlKGFsbFN0b3JhZ2VJdGVtcywgcmUpID09PSBub3QgKSB7IHJldHVybjsgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgY29uc3QgZ2V0U2hhZG93Um9vdCA9IGVsZW0gPT4gewogICAgICAgIC8vIEZpcmVmb3gKICAgICAgICBpZiAoIGVsZW0ub3Blbk9yQ2xvc2VkU2hhZG93Um9vdCApIHsKICAgICAgICAgICAgcmV0dXJuIGVsZW0ub3Blbk9yQ2xvc2VkU2hhZG93Um9vdDsKICAgICAgICB9CiAgICAgICAgLy8gQ2hyb21pdW0KICAgICAgICBpZiAoIHR5cGVvZiBjaHJvbWUgPT09ICdvYmplY3QnICkgewogICAgICAgICAgICBpZiAoIGNocm9tZS5kb20gJiYgY2hyb21lLmRvbS5vcGVuT3JDbG9zZWRTaGFkb3dSb290ICkgewogICAgICAgICAgICAgICAgcmV0dXJuIGNocm9tZS5kb20ub3Blbk9yQ2xvc2VkU2hhZG93Um9vdChlbGVtKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH07CgogICAgY29uc3QgcXVlcnlTZWxlY3RvckV4ID0gKHNlbGVjdG9yLCBjb250ZXh0ID0gZG9jdW1lbnQpID0+IHsKICAgICAgICBjb25zdCBwb3MgPSBzZWxlY3Rvci5pbmRleE9mKCcgPj4+ICcpOwogICAgICAgIGlmICggcG9zID09PSAtMSApIHsgcmV0dXJuIGNvbnRleHQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7IH0KICAgICAgICBjb25zdCBvdXRzaWRlID0gc2VsZWN0b3Iuc2xpY2UoMCwgcG9zKS50cmltKCk7CiAgICAgICAgY29uc3QgaW5zaWRlID0gc2VsZWN0b3Iuc2xpY2UocG9zICsgNSkudHJpbSgpOwogICAgICAgIGNvbnN0IGVsZW0gPSBjb250ZXh0LnF1ZXJ5U2VsZWN0b3Iob3V0c2lkZSk7CiAgICAgICAgaWYgKCBlbGVtID09PSBudWxsICkgeyByZXR1cm4gbnVsbDsgfQogICAgICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSBnZXRTaGFkb3dSb290KGVsZW0pOwogICAgICAgIHJldHVybiBzaGFkb3dSb290ICYmIHF1ZXJ5U2VsZWN0b3JFeChpbnNpZGUsIHNoYWRvd1Jvb3QpOwogICAgfTsKCiAgICBjb25zdCBzZWxlY3Rvckxpc3QgPSBzZWxlY3RvcnMuc3BsaXQoL1xzKixccyovKQogICAgICAgIC5maWx0ZXIocyA9PiB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICB2b2lkIHF1ZXJ5U2VsZWN0b3JFeChzKTsKICAgICAgICAgICAgfSBjYXRjaChfKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSk7CiAgICBpZiAoIHNlbGVjdG9yTGlzdC5sZW5ndGggPT09IDAgKSB7IHJldHVybjsgfQoKICAgIGNvbnN0IGNsaWNrRGVsYXkgPSBwYXJzZUludChkZWxheSwgMTApIHx8IDE7CiAgICBjb25zdCB0MCA9IERhdGUubm93KCk7CiAgICBjb25zdCB0YnllID0gdDAgKyAxMDAwMDsKICAgIGxldCB0bmV4dCA9IHNlbGVjdG9yTGlzdC5sZW5ndGggIT09IDEgPyB0MCA6IHQwICsgY2xpY2tEZWxheTsKCiAgICBjb25zdCB0ZXJtaW5hdGUgPSAoICkgPT4gewogICAgICAgIHNlbGVjdG9yTGlzdC5sZW5ndGggPSAwOwogICAgICAgIG5leHQuc3RvcCgpOwogICAgICAgIG9ic2VydmUuc3RvcCgpOwogICAgfTsKCiAgICBjb25zdCBuZXh0ID0gbm90Rm91bmQgPT4gewogICAgICAgIGlmICggc2VsZWN0b3JMaXN0Lmxlbmd0aCA9PT0gMCApIHsKICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCAnQ29tcGxldGVkJyk7CiAgICAgICAgICAgIHJldHVybiB0ZXJtaW5hdGUoKTsKICAgICAgICB9CiAgICAgICAgY29uc3QgdG5vdyA9IERhdGUubm93KCk7CiAgICAgICAgaWYgKCB0bm93ID49IHRieWUgKSB7CiAgICAgICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgJ1RpbWVkIG91dCcpOwogICAgICAgICAgICByZXR1cm4gdGVybWluYXRlKCk7CiAgICAgICAgfQogICAgICAgIGlmICggbm90Rm91bmQgKSB7IG9ic2VydmUoKTsgfQogICAgICAgIGNvbnN0IGRlbGF5ID0gTWF0aC5tYXgobm90Rm91bmQgPyB0YnllIC0gdG5vdyA6IHRuZXh0IC0gdG5vdywgMSk7CiAgICAgICAgbmV4dC50aW1lciA9IHNldFRpbWVvdXQoKCApID0+IHsKICAgICAgICAgICAgbmV4dC50aW1lciA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgcHJvY2VzcygpOwogICAgICAgIH0sIGRlbGF5KTsKICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBXYWl0aW5nIGZvciAke3NlbGVjdG9yTGlzdFswXX0uLi5gKTsKICAgIH07CiAgICBuZXh0LnN0b3AgPSAoICkgPT4gewogICAgICAgIGlmICggbmV4dC50aW1lciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICBjbGVhclRpbWVvdXQobmV4dC50aW1lcik7CiAgICAgICAgbmV4dC50aW1lciA9IHVuZGVmaW5lZDsKICAgIH07CgogICAgY29uc3Qgb2JzZXJ2ZSA9ICggKSA9PiB7CiAgICAgICAgaWYgKCBvYnNlcnZlLm9ic2VydmVyICE9PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgIG9ic2VydmUub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoICkgPT4gewogICAgICAgICAgICBpZiAoIG9ic2VydmUudGltZXIgIT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIG9ic2VydmUudGltZXIgPSBzZXRUaW1lb3V0KCggKSA9PiB7CiAgICAgICAgICAgICAgICBvYnNlcnZlLnRpbWVyID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgcHJvY2VzcygpOwogICAgICAgICAgICB9LCAyMCk7CiAgICAgICAgfSk7CiAgICAgICAgb2JzZXJ2ZS5vYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LCB7CiAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHRydWUsCiAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSwKICAgICAgICAgICAgc3VidHJlZTogdHJ1ZSwKICAgICAgICB9KTsKICAgIH07CiAgICBvYnNlcnZlLnN0b3AgPSAoICkgPT4gewogICAgICAgIGlmICggb2JzZXJ2ZS50aW1lciAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICBjbGVhclRpbWVvdXQob2JzZXJ2ZS50aW1lcik7CiAgICAgICAgICAgIG9ic2VydmUudGltZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgfQogICAgICAgIGlmICggb2JzZXJ2ZS5vYnNlcnZlciApIHsKICAgICAgICAgICAgb2JzZXJ2ZS5vYnNlcnZlci5kaXNjb25uZWN0KCk7CiAgICAgICAgICAgIG9ic2VydmUub2JzZXJ2ZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgfQogICAgfTsKCiAgICBjb25zdCBwcm9jZXNzID0gKCApID0+IHsKICAgICAgICBuZXh0LnN0b3AoKTsKICAgICAgICBpZiAoIERhdGUubm93KCkgPCB0bmV4dCApIHsgcmV0dXJuIG5leHQoKTsgfQogICAgICAgIGNvbnN0IHNlbGVjdG9yID0gc2VsZWN0b3JMaXN0LnNoaWZ0KCk7CiAgICAgICAgaWYgKCBzZWxlY3RvciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gdGVybWluYXRlKCk7IH0KICAgICAgICBjb25zdCBlbGVtID0gcXVlcnlTZWxlY3RvckV4KHNlbGVjdG9yKTsKICAgICAgICBpZiAoIGVsZW0gPT09IG51bGwgKSB7CiAgICAgICAgICAgIHNlbGVjdG9yTGlzdC51bnNoaWZ0KHNlbGVjdG9yKTsKICAgICAgICAgICAgcmV0dXJuIG5leHQodHJ1ZSk7CiAgICAgICAgfQogICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgYENsaWNrZWQgJHtzZWxlY3Rvcn1gKTsKICAgICAgICBlbGVtLmNsaWNrKCk7CiAgICAgICAgdG5leHQgKz0gY2xpY2tEZWxheTsKICAgICAgICBuZXh0KCk7CiAgICB9OwoKICAgIHJ1bkF0SHRtbEVsZW1lbnRGbihwcm9jZXNzKTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"trusted-prune-inbound-object.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0UmFuZG9tVG9rZW4oKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIHJldHVybiBzYWZlLlN0cmluZ19mcm9tQ2hhckNvZGUoRGF0ZS5ub3coKSAlIDI2ICsgOTcpICsKICAgICAgICBzYWZlLk1hdGhfZmxvb3Ioc2FmZS5NYXRoX3JhbmRvbSgpICogOTgyNDUxNjUzICsgOTgyNDUxNjUzKS50b1N0cmluZygzNik7Cn0KZnVuY3Rpb24gZ2V0RXhjZXB0aW9uVG9rZW4oKSB7CiAgICBjb25zdCB0b2tlbiA9IGdldFJhbmRvbVRva2VuKCk7CiAgICBjb25zdCBvZSA9IHNlbGYub25lcnJvcjsKICAgIHNlbGYub25lcnJvciA9IGZ1bmN0aW9uKG1zZywgLi4uYXJncykgewogICAgICAgIGlmICggdHlwZW9mIG1zZyA9PT0gJ3N0cmluZycgJiYgbXNnLmluY2x1ZGVzKHRva2VuKSApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICBpZiAoIG9lIGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgIHJldHVybiBvZS5jYWxsKHRoaXMsIG1zZywgLi4uYXJncyk7CiAgICAgICAgfQogICAgfS5iaW5kKCk7CiAgICByZXR1cm4gdG9rZW47Cn0KZnVuY3Rpb24gbWF0Y2hlc1N0YWNrVHJhY2UoCiAgICBuZWVkbGVEZXRhaWxzLAogICAgbG9nTGV2ZWwgPSAnJwopIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgZXhjZXB0aW9uVG9rZW4gPSBnZXRFeGNlcHRpb25Ub2tlbigpOwogICAgY29uc3QgZXJyb3IgPSBuZXcgc2FmZS5FcnJvcihleGNlcHRpb25Ub2tlbik7CiAgICBjb25zdCBkb2NVUkwgPSBuZXcgVVJMKHNlbGYubG9jYXRpb24uaHJlZik7CiAgICBkb2NVUkwuaGFzaCA9ICcnOwogICAgLy8gTm9ybWFsaXplIHN0YWNrIHRyYWNlCiAgICBjb25zdCByZUxpbmUgPSAvKC4qP0ApPyhcUyspKDpcZCspOlxkK1wpPyQvOwogICAgY29uc3QgbGluZXMgPSBbXTsKICAgIGZvciAoIGxldCBsaW5lIG9mIGVycm9yLnN0YWNrLnNwbGl0KC9bXG5ccl0rLykgKSB7CiAgICAgICAgaWYgKCBsaW5lLmluY2x1ZGVzKGV4Y2VwdGlvblRva2VuKSApIHsgY29udGludWU7IH0KICAgICAgICBsaW5lID0gbGluZS50cmltKCk7CiAgICAgICAgY29uc3QgbWF0Y2ggPSBzYWZlLlJlZ0V4cF9leGVjLmNhbGwocmVMaW5lLCBsaW5lKTsKICAgICAgICBpZiAoIG1hdGNoID09PSBudWxsICkgeyBjb250aW51ZTsgfQogICAgICAgIGxldCB1cmwgPSBtYXRjaFsyXTsKICAgICAgICBpZiAoIHVybC5zdGFydHNXaXRoKCcoJykgKSB7IHVybCA9IHVybC5zbGljZSgxKTsgfQogICAgICAgIGlmICggdXJsID09PSBkb2NVUkwuaHJlZiApIHsKICAgICAgICAgICAgdXJsID0gJ2lubGluZVNjcmlwdCc7CiAgICAgICAgfSBlbHNlIGlmICggdXJsLnN0YXJ0c1dpdGgoJzxhbm9ueW1vdXM+JykgKSB7CiAgICAgICAgICAgIHVybCA9ICdpbmplY3RlZFNjcmlwdCc7CiAgICAgICAgfQogICAgICAgIGxldCBmbiA9IG1hdGNoWzFdICE9PSB1bmRlZmluZWQKICAgICAgICAgICAgPyBtYXRjaFsxXS5zbGljZSgwLCAtMSkKICAgICAgICAgICAgOiBsaW5lLnNsaWNlKDAsIG1hdGNoLmluZGV4KS50cmltKCk7CiAgICAgICAgaWYgKCBmbi5zdGFydHNXaXRoKCdhdCcpICkgeyBmbiA9IGZuLnNsaWNlKDIpLnRyaW0oKTsgfQogICAgICAgIGxldCByb3djb2wgPSBtYXRjaFszXTsKICAgICAgICBsaW5lcy5wdXNoKCcgJyArIGAke2ZufSAke3VybH0ke3Jvd2NvbH06MWAudHJpbSgpKTsKICAgIH0KICAgIGxpbmVzWzBdID0gYHN0YWNrRGVwdGg6JHtsaW5lcy5sZW5ndGgtMX1gOwogICAgY29uc3Qgc3RhY2sgPSBsaW5lcy5qb2luKCdcdCcpOwogICAgY29uc3QgciA9IG5lZWRsZURldGFpbHMubWF0Y2hBbGwgIT09IHRydWUgJiYKICAgICAgICBzYWZlLnRlc3RQYXR0ZXJuKG5lZWRsZURldGFpbHMsIHN0YWNrKTsKICAgIGlmICgKICAgICAgICBsb2dMZXZlbCA9PT0gJ2FsbCcgfHwKICAgICAgICBsb2dMZXZlbCA9PT0gJ21hdGNoJyAmJiByIHx8CiAgICAgICAgbG9nTGV2ZWwgPT09ICdub21hdGNoJyAmJiAhcgogICAgKSB7CiAgICAgICAgc2FmZS51Ym9Mb2coc3RhY2sucmVwbGFjZSgvXHQvZywgJ1xuJykpOwogICAgfQogICAgcmV0dXJuIHI7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBvYmplY3RQcnVuZUZuKAogICAgb2JqLAogICAgcmF3UHJ1bmVQYXRocywKICAgIHJhd05lZWRsZVBhdGhzLAogICAgc3RhY2tOZWVkbGVEZXRhaWxzID0geyBtYXRjaEFsbDogdHJ1ZSB9LAogICAgZXh0cmFBcmdzID0ge30KKSB7CiAgICBpZiAoIHR5cGVvZiByYXdQcnVuZVBhdGhzICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBwcnVuZVBhdGhzID0gcmF3UHJ1bmVQYXRocyAhPT0gJycKICAgICAgICA/IHJhd1BydW5lUGF0aHMuc3BsaXQoLyArLykKICAgICAgICA6IFtdOwogICAgY29uc3QgbmVlZGxlUGF0aHMgPSBwcnVuZVBhdGhzLmxlbmd0aCAhPT0gMCAmJiByYXdOZWVkbGVQYXRocyAhPT0gJycKICAgICAgICA/IHJhd05lZWRsZVBhdGhzLnNwbGl0KC8gKy8pCiAgICAgICAgOiBbXTsKICAgIGlmICggc3RhY2tOZWVkbGVEZXRhaWxzLm1hdGNoQWxsICE9PSB0cnVlICkgewogICAgICAgIGlmICggbWF0Y2hlc1N0YWNrVHJhY2Uoc3RhY2tOZWVkbGVEZXRhaWxzLCBleHRyYUFyZ3MubG9nc3RhY2spID09PSBmYWxzZSApIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGlmICggb2JqZWN0UHJ1bmVGbi5tdXN0UHJvY2VzcyA9PT0gdW5kZWZpbmVkICkgewogICAgICAgIG9iamVjdFBydW5lRm4ubXVzdFByb2Nlc3MgPSAocm9vdCwgbmVlZGxlUGF0aHMpID0+IHsKICAgICAgICAgICAgZm9yICggY29uc3QgbmVlZGxlUGF0aCBvZiBuZWVkbGVQYXRocyApIHsKICAgICAgICAgICAgICAgIGlmICggb2JqZWN0RmluZE93bmVyRm4ocm9vdCwgbmVlZGxlUGF0aCkgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9OwogICAgfQogICAgaWYgKCBwcnVuZVBhdGhzLmxlbmd0aCA9PT0gMCApIHsgcmV0dXJuOyB9CiAgICBsZXQgb3V0Y29tZSA9ICdub21hdGNoJzsKICAgIGlmICggb2JqZWN0UHJ1bmVGbi5tdXN0UHJvY2VzcyhvYmosIG5lZWRsZVBhdGhzKSApIHsKICAgICAgICBmb3IgKCBjb25zdCBwYXRoIG9mIHBydW5lUGF0aHMgKSB7CiAgICAgICAgICAgIGlmICggb2JqZWN0RmluZE93bmVyRm4ob2JqLCBwYXRoLCB0cnVlKSApIHsKICAgICAgICAgICAgICAgIG91dGNvbWUgPSAnbWF0Y2gnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYgKCBvdXRjb21lID09PSAnbWF0Y2gnICkgeyByZXR1cm4gb2JqOyB9Cn0KZnVuY3Rpb24gb2JqZWN0RmluZE93bmVyRm4oCiAgICByb290LAogICAgcGF0aCwKICAgIHBydW5lID0gZmFsc2UKKSB7CiAgICBsZXQgb3duZXIgPSByb290OwogICAgbGV0IGNoYWluID0gcGF0aDsKICAgIGZvciAoOzspIHsKICAgICAgICBpZiAoIHR5cGVvZiBvd25lciAhPT0gJ29iamVjdCcgfHwgb3duZXIgPT09IG51bGwgICkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICBjb25zdCBwb3MgPSBjaGFpbi5pbmRleE9mKCcuJyk7CiAgICAgICAgaWYgKCBwb3MgPT09IC0xICkgewogICAgICAgICAgICBpZiAoIHBydW5lID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiBvd25lci5oYXNPd25Qcm9wZXJ0eShjaGFpbik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IG1vZGlmaWVkID0gZmFsc2U7CiAgICAgICAgICAgIGlmICggY2hhaW4gPT09ICcqJyApIHsKICAgICAgICAgICAgICAgIGZvciAoIGNvbnN0IGtleSBpbiBvd25lciApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIG93bmVyLmhhc093blByb3BlcnR5KGtleSkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvd25lcltrZXldOwogICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmICggb3duZXIuaGFzT3duUHJvcGVydHkoY2hhaW4pICkgewogICAgICAgICAgICAgICAgZGVsZXRlIG93bmVyW2NoYWluXTsKICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbW9kaWZpZWQ7CiAgICAgICAgfQogICAgICAgIGNvbnN0IHByb3AgPSBjaGFpbi5zbGljZSgwLCBwb3MpOwogICAgICAgIGNvbnN0IG5leHQgPSBjaGFpbi5zbGljZShwb3MgKyAxKTsKICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTsKICAgICAgICBpZiAoIHByb3AgPT09ICdbLV0nICYmIEFycmF5LmlzQXJyYXkob3duZXIpICkgewogICAgICAgICAgICBsZXQgaSA9IG93bmVyLmxlbmd0aDsKICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CiAgICAgICAgICAgICAgICBpZiAoIG9iamVjdEZpbmRPd25lckZuKG93bmVyW2ldLCBuZXh0KSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBvd25lci5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgICAgIH0KICAgICAgICBpZiAoIHByb3AgPT09ICd7LX0nICYmIG93bmVyIGluc3RhbmNlb2YgT2JqZWN0ICkgewogICAgICAgICAgICBmb3IgKCBjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3duZXIpICkgewogICAgICAgICAgICAgICAgaWYgKCBvYmplY3RGaW5kT3duZXJGbihvd25lcltrZXldLCBuZXh0KSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBkZWxldGUgb3duZXJba2V5XTsKICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZm91bmQ7CiAgICAgICAgfQogICAgICAgIGlmICgKICAgICAgICAgICAgcHJvcCA9PT0gJ1tdJyAmJiBBcnJheS5pc0FycmF5KG93bmVyKSB8fAogICAgICAgICAgICBwcm9wID09PSAne30nICYmIG93bmVyIGluc3RhbmNlb2YgT2JqZWN0IHx8CiAgICAgICAgICAgIHByb3AgPT09ICcqJyAmJiBvd25lciBpbnN0YW5jZW9mIE9iamVjdAogICAgICAgICkgewogICAgICAgICAgICBmb3IgKCBjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3duZXIpICkgewogICAgICAgICAgICAgICAgaWYgKG9iamVjdEZpbmRPd25lckZuKG93bmVyW2tleV0sIG5leHQsIHBydW5lKSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgICAgIH0KICAgICAgICBpZiAoIG93bmVyLmhhc093blByb3BlcnR5KHByb3ApID09PSBmYWxzZSApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgb3duZXIgPSBvd25lcltwcm9wXTsKICAgICAgICBjaGFpbiA9IGNoYWluLnNsaWNlKHBvcyArIDEpOwogICAgfQp9CgogIChmdW5jdGlvbiB0cnVzdGVkUHJ1bmVJbmJvdW5kT2JqZWN0KAogICAgZW50cnlQb2ludCA9ICcnLAogICAgYXJnUG9zID0gJycsCiAgICByYXdQcnVuZVBhdGhzID0gJycsCiAgICByYXdOZWVkbGVQYXRocyA9ICcnCikgewogICAgaWYgKCBlbnRyeVBvaW50ID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICBsZXQgY29udGV4dCA9IGdsb2JhbFRoaXM7CiAgICBsZXQgcHJvcCA9IGVudHJ5UG9pbnQ7CiAgICBmb3IgKDs7KSB7CiAgICAgICAgY29uc3QgcG9zID0gcHJvcC5pbmRleE9mKCcuJyk7CiAgICAgICAgaWYgKCBwb3MgPT09IC0xICkgeyBicmVhazsgfQogICAgICAgIGNvbnRleHQgPSBjb250ZXh0W3Byb3Auc2xpY2UoMCwgcG9zKV07CiAgICAgICAgaWYgKCBjb250ZXh0IGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSApIHsgcmV0dXJuOyB9CiAgICAgICAgcHJvcCA9IHByb3Auc2xpY2UocG9zKzEpOwogICAgfQogICAgaWYgKCB0eXBlb2YgY29udGV4dFtwcm9wXSAhPT0gJ2Z1bmN0aW9uJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBhcmdJbmRleCA9IHBhcnNlSW50KGFyZ1Bvcyk7CiAgICBpZiAoIGlzTmFOKGFyZ0luZGV4KSApIHsgcmV0dXJuOyB9CiAgICBpZiAoIGFyZ0luZGV4IDwgMSApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGV4dHJhQXJncyA9IHNhZmUuZ2V0RXh0cmFBcmdzKEFycmF5LmZyb20oYXJndW1lbnRzKSwgNCk7CiAgICBjb25zdCBuZWVkbGVQYXRocyA9IFtdOwogICAgaWYgKCByYXdQcnVuZVBhdGhzICE9PSAnJyApIHsKICAgICAgICBuZWVkbGVQYXRocy5wdXNoKC4uLnJhd1BydW5lUGF0aHMuc3BsaXQoLyArLykpOwogICAgfQogICAgaWYgKCByYXdOZWVkbGVQYXRocyAhPT0gJycgKSB7CiAgICAgICAgbmVlZGxlUGF0aHMucHVzaCguLi5yYXdOZWVkbGVQYXRocy5zcGxpdCgvICsvKSk7CiAgICB9CiAgICBjb25zdCBzdGFja05lZWRsZSA9IHNhZmUuaW5pdFBhdHRlcm4oZXh0cmFBcmdzLnN0YWNrVG9NYXRjaCB8fCAnJywgeyBjYW5OZWdhdGU6IHRydWUgfSk7CiAgICBjb25zdCBtdXN0UHJvY2VzcyA9IHJvb3QgPT4gewogICAgICAgIGZvciAoIGNvbnN0IG5lZWRsZVBhdGggb2YgbmVlZGxlUGF0aHMgKSB7CiAgICAgICAgICAgIGlmICggb2JqZWN0RmluZE93bmVyRm4ocm9vdCwgbmVlZGxlUGF0aCkgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfTsKICAgIGNvbnRleHRbcHJvcF0gPSBuZXcgUHJveHkoY29udGV4dFtwcm9wXSwgewogICAgICAgIGFwcGx5OiBmdW5jdGlvbih0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpIHsKICAgICAgICAgICAgY29uc3QgdGFyZ2V0QXJnID0gYXJnSW5kZXggPD0gYXJncy5sZW5ndGgKICAgICAgICAgICAgICAgID8gYXJnc1thcmdJbmRleC0xXQogICAgICAgICAgICAgICAgOiB1bmRlZmluZWQ7CiAgICAgICAgICAgIGlmICggdGFyZ2V0QXJnIGluc3RhbmNlb2YgT2JqZWN0ICYmIG11c3RQcm9jZXNzKHRhcmdldEFyZykgKSB7CiAgICAgICAgICAgICAgICBsZXQgb2JqQmVmb3JlID0gdGFyZ2V0QXJnOwogICAgICAgICAgICAgICAgaWYgKCBleHRyYUFyZ3MuZG9udE92ZXJ3cml0ZSApIHsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICBvYmpCZWZvcmUgPSBzYWZlLkpTT05fcGFyc2Uoc2FmZS5KU09OX3N0cmluZ2lmeSh0YXJnZXRBcmcpKTsKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoKF8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgb2JqQmVmb3JlID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggb2JqQmVmb3JlICE9PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2JqQWZ0ZXIgPSBvYmplY3RQcnVuZUZuKAogICAgICAgICAgICAgICAgICAgICAgICBvYmpCZWZvcmUsCiAgICAgICAgICAgICAgICAgICAgICAgIHJhd1BydW5lUGF0aHMsCiAgICAgICAgICAgICAgICAgICAgICAgIHJhd05lZWRsZVBhdGhzLAogICAgICAgICAgICAgICAgICAgICAgICBzdGFja05lZWRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFBcmdzCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBhcmdzW2FyZ0luZGV4LTFdID0gb2JqQWZ0ZXIgfHwgb2JqQmVmb3JlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncyk7CiAgICAgICAgfSwKICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"trusted-prune-outbound-object.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gZ2V0UmFuZG9tVG9rZW4oKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIHJldHVybiBzYWZlLlN0cmluZ19mcm9tQ2hhckNvZGUoRGF0ZS5ub3coKSAlIDI2ICsgOTcpICsKICAgICAgICBzYWZlLk1hdGhfZmxvb3Ioc2FmZS5NYXRoX3JhbmRvbSgpICogOTgyNDUxNjUzICsgOTgyNDUxNjUzKS50b1N0cmluZygzNik7Cn0KZnVuY3Rpb24gZ2V0RXhjZXB0aW9uVG9rZW4oKSB7CiAgICBjb25zdCB0b2tlbiA9IGdldFJhbmRvbVRva2VuKCk7CiAgICBjb25zdCBvZSA9IHNlbGYub25lcnJvcjsKICAgIHNlbGYub25lcnJvciA9IGZ1bmN0aW9uKG1zZywgLi4uYXJncykgewogICAgICAgIGlmICggdHlwZW9mIG1zZyA9PT0gJ3N0cmluZycgJiYgbXNnLmluY2x1ZGVzKHRva2VuKSApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICBpZiAoIG9lIGluc3RhbmNlb2YgRnVuY3Rpb24gKSB7CiAgICAgICAgICAgIHJldHVybiBvZS5jYWxsKHRoaXMsIG1zZywgLi4uYXJncyk7CiAgICAgICAgfQogICAgfS5iaW5kKCk7CiAgICByZXR1cm4gdG9rZW47Cn0KZnVuY3Rpb24gb2JqZWN0RmluZE93bmVyRm4oCiAgICByb290LAogICAgcGF0aCwKICAgIHBydW5lID0gZmFsc2UKKSB7CiAgICBsZXQgb3duZXIgPSByb290OwogICAgbGV0IGNoYWluID0gcGF0aDsKICAgIGZvciAoOzspIHsKICAgICAgICBpZiAoIHR5cGVvZiBvd25lciAhPT0gJ29iamVjdCcgfHwgb3duZXIgPT09IG51bGwgICkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICBjb25zdCBwb3MgPSBjaGFpbi5pbmRleE9mKCcuJyk7CiAgICAgICAgaWYgKCBwb3MgPT09IC0xICkgewogICAgICAgICAgICBpZiAoIHBydW5lID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiBvd25lci5oYXNPd25Qcm9wZXJ0eShjaGFpbik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IG1vZGlmaWVkID0gZmFsc2U7CiAgICAgICAgICAgIGlmICggY2hhaW4gPT09ICcqJyApIHsKICAgICAgICAgICAgICAgIGZvciAoIGNvbnN0IGtleSBpbiBvd25lciApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIG93bmVyLmhhc093blByb3BlcnR5KGtleSkgPT09IGZhbHNlICkgeyBjb250aW51ZTsgfQogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBvd25lcltrZXldOwogICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmICggb3duZXIuaGFzT3duUHJvcGVydHkoY2hhaW4pICkgewogICAgICAgICAgICAgICAgZGVsZXRlIG93bmVyW2NoYWluXTsKICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbW9kaWZpZWQ7CiAgICAgICAgfQogICAgICAgIGNvbnN0IHByb3AgPSBjaGFpbi5zbGljZSgwLCBwb3MpOwogICAgICAgIGNvbnN0IG5leHQgPSBjaGFpbi5zbGljZShwb3MgKyAxKTsKICAgICAgICBsZXQgZm91bmQgPSBmYWxzZTsKICAgICAgICBpZiAoIHByb3AgPT09ICdbLV0nICYmIEFycmF5LmlzQXJyYXkob3duZXIpICkgewogICAgICAgICAgICBsZXQgaSA9IG93bmVyLmxlbmd0aDsKICAgICAgICAgICAgd2hpbGUgKCBpLS0gKSB7CiAgICAgICAgICAgICAgICBpZiAoIG9iamVjdEZpbmRPd25lckZuKG93bmVyW2ldLCBuZXh0KSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBvd25lci5zcGxpY2UoaSwgMSk7CiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgICAgIH0KICAgICAgICBpZiAoIHByb3AgPT09ICd7LX0nICYmIG93bmVyIGluc3RhbmNlb2YgT2JqZWN0ICkgewogICAgICAgICAgICBmb3IgKCBjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3duZXIpICkgewogICAgICAgICAgICAgICAgaWYgKCBvYmplY3RGaW5kT3duZXJGbihvd25lcltrZXldLCBuZXh0KSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBkZWxldGUgb3duZXJba2V5XTsKICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZm91bmQ7CiAgICAgICAgfQogICAgICAgIGlmICgKICAgICAgICAgICAgcHJvcCA9PT0gJ1tdJyAmJiBBcnJheS5pc0FycmF5KG93bmVyKSB8fAogICAgICAgICAgICBwcm9wID09PSAne30nICYmIG93bmVyIGluc3RhbmNlb2YgT2JqZWN0IHx8CiAgICAgICAgICAgIHByb3AgPT09ICcqJyAmJiBvd25lciBpbnN0YW5jZW9mIE9iamVjdAogICAgICAgICkgewogICAgICAgICAgICBmb3IgKCBjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3duZXIpICkgewogICAgICAgICAgICAgICAgaWYgKG9iamVjdEZpbmRPd25lckZuKG93bmVyW2tleV0sIG5leHQsIHBydW5lKSA9PT0gZmFsc2UgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgICAgIH0KICAgICAgICBpZiAoIG93bmVyLmhhc093blByb3BlcnR5KHByb3ApID09PSBmYWxzZSApIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgb3duZXIgPSBvd25lcltwcm9wXTsKICAgICAgICBjaGFpbiA9IGNoYWluLnNsaWNlKHBvcyArIDEpOwogICAgfQp9CmZ1bmN0aW9uIG1hdGNoZXNTdGFja1RyYWNlKAogICAgbmVlZGxlRGV0YWlscywKICAgIGxvZ0xldmVsID0gJycKKSB7CiAgICBjb25zdCBzYWZlID0gc2FmZVNlbGYoKTsKICAgIGNvbnN0IGV4Y2VwdGlvblRva2VuID0gZ2V0RXhjZXB0aW9uVG9rZW4oKTsKICAgIGNvbnN0IGVycm9yID0gbmV3IHNhZmUuRXJyb3IoZXhjZXB0aW9uVG9rZW4pOwogICAgY29uc3QgZG9jVVJMID0gbmV3IFVSTChzZWxmLmxvY2F0aW9uLmhyZWYpOwogICAgZG9jVVJMLmhhc2ggPSAnJzsKICAgIC8vIE5vcm1hbGl6ZSBzdGFjayB0cmFjZQogICAgY29uc3QgcmVMaW5lID0gLyguKj9AKT8oXFMrKSg6XGQrKTpcZCtcKT8kLzsKICAgIGNvbnN0IGxpbmVzID0gW107CiAgICBmb3IgKCBsZXQgbGluZSBvZiBlcnJvci5zdGFjay5zcGxpdCgvW1xuXHJdKy8pICkgewogICAgICAgIGlmICggbGluZS5pbmNsdWRlcyhleGNlcHRpb25Ub2tlbikgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpOwogICAgICAgIGNvbnN0IG1hdGNoID0gc2FmZS5SZWdFeHBfZXhlYy5jYWxsKHJlTGluZSwgbGluZSk7CiAgICAgICAgaWYgKCBtYXRjaCA9PT0gbnVsbCApIHsgY29udGludWU7IH0KICAgICAgICBsZXQgdXJsID0gbWF0Y2hbMl07CiAgICAgICAgaWYgKCB1cmwuc3RhcnRzV2l0aCgnKCcpICkgeyB1cmwgPSB1cmwuc2xpY2UoMSk7IH0KICAgICAgICBpZiAoIHVybCA9PT0gZG9jVVJMLmhyZWYgKSB7CiAgICAgICAgICAgIHVybCA9ICdpbmxpbmVTY3JpcHQnOwogICAgICAgIH0gZWxzZSBpZiAoIHVybC5zdGFydHNXaXRoKCc8YW5vbnltb3VzPicpICkgewogICAgICAgICAgICB1cmwgPSAnaW5qZWN0ZWRTY3JpcHQnOwogICAgICAgIH0KICAgICAgICBsZXQgZm4gPSBtYXRjaFsxXSAhPT0gdW5kZWZpbmVkCiAgICAgICAgICAgID8gbWF0Y2hbMV0uc2xpY2UoMCwgLTEpCiAgICAgICAgICAgIDogbGluZS5zbGljZSgwLCBtYXRjaC5pbmRleCkudHJpbSgpOwogICAgICAgIGlmICggZm4uc3RhcnRzV2l0aCgnYXQnKSApIHsgZm4gPSBmbi5zbGljZSgyKS50cmltKCk7IH0KICAgICAgICBsZXQgcm93Y29sID0gbWF0Y2hbM107CiAgICAgICAgbGluZXMucHVzaCgnICcgKyBgJHtmbn0gJHt1cmx9JHtyb3djb2x9OjFgLnRyaW0oKSk7CiAgICB9CiAgICBsaW5lc1swXSA9IGBzdGFja0RlcHRoOiR7bGluZXMubGVuZ3RoLTF9YDsKICAgIGNvbnN0IHN0YWNrID0gbGluZXMuam9pbignXHQnKTsKICAgIGNvbnN0IHIgPSBuZWVkbGVEZXRhaWxzLm1hdGNoQWxsICE9PSB0cnVlICYmCiAgICAgICAgc2FmZS50ZXN0UGF0dGVybihuZWVkbGVEZXRhaWxzLCBzdGFjayk7CiAgICBpZiAoCiAgICAgICAgbG9nTGV2ZWwgPT09ICdhbGwnIHx8CiAgICAgICAgbG9nTGV2ZWwgPT09ICdtYXRjaCcgJiYgciB8fAogICAgICAgIGxvZ0xldmVsID09PSAnbm9tYXRjaCcgJiYgIXIKICAgICkgewogICAgICAgIHNhZmUudWJvTG9nKHN0YWNrLnJlcGxhY2UoL1x0L2csICdcbicpKTsKICAgIH0KICAgIHJldHVybiByOwp9CmZ1bmN0aW9uIHNhZmVTZWxmKCkgewogICAgaWYgKCBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmICkgewogICAgICAgIHJldHVybiBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmOwogICAgfQogICAgY29uc3Qgc2VsZiA9IGdsb2JhbFRoaXM7CiAgICBjb25zdCBzYWZlID0gewogICAgICAgICdBcnJheV9mcm9tJzogQXJyYXkuZnJvbSwKICAgICAgICAnRXJyb3InOiBzZWxmLkVycm9yLAogICAgICAgICdGdW5jdGlvbl90b1N0cmluZ0ZuJzogc2VsZi5GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nJzogdGhpc0FyZyA9PiBzYWZlLkZ1bmN0aW9uX3RvU3RyaW5nRm4uY2FsbCh0aGlzQXJnKSwKICAgICAgICAnTWF0aF9mbG9vcic6IE1hdGguZmxvb3IsCiAgICAgICAgJ01hdGhfbWF4JzogTWF0aC5tYXgsCiAgICAgICAgJ01hdGhfbWluJzogTWF0aC5taW4sCiAgICAgICAgJ01hdGhfcmFuZG9tJzogTWF0aC5yYW5kb20sCiAgICAgICAgJ09iamVjdCc6IE9iamVjdCwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnR5JzogT2JqZWN0LmRlZmluZVByb3BlcnR5LmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2RlZmluZVByb3BlcnRpZXMnOiBPYmplY3QuZGVmaW5lUHJvcGVydGllcy5iaW5kKE9iamVjdCksCiAgICAgICAgJ09iamVjdF9mcm9tRW50cmllcyc6IE9iamVjdC5mcm9tRW50cmllcy5iaW5kKE9iamVjdCksCiAgICAgICAgJ09iamVjdF9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InOiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLmJpbmQoT2JqZWN0KSwKICAgICAgICAnUmVnRXhwJzogc2VsZi5SZWdFeHAsCiAgICAgICAgJ1JlZ0V4cF90ZXN0Jzogc2VsZi5SZWdFeHAucHJvdG90eXBlLnRlc3QsCiAgICAgICAgJ1JlZ0V4cF9leGVjJzogc2VsZi5SZWdFeHAucHJvdG90eXBlLmV4ZWMsCiAgICAgICAgJ1JlcXVlc3RfY2xvbmUnOiBzZWxmLlJlcXVlc3QucHJvdG90eXBlLmNsb25lLAogICAgICAgICdTdHJpbmdfZnJvbUNoYXJDb2RlJzogU3RyaW5nLmZyb21DaGFyQ29kZSwKICAgICAgICAnWE1MSHR0cFJlcXVlc3QnOiBzZWxmLlhNTEh0dHBSZXF1ZXN0LAogICAgICAgICdhZGRFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciwKICAgICAgICAncmVtb3ZlRXZlbnRMaXN0ZW5lcic6IHNlbGYuRXZlbnRUYXJnZXQucHJvdG90eXBlLnJlbW92ZUV2ZW50TGlzdGVuZXIsCiAgICAgICAgJ2ZldGNoJzogc2VsZi5mZXRjaCwKICAgICAgICAnSlNPTic6IHNlbGYuSlNPTiwKICAgICAgICAnSlNPTl9wYXJzZUZuJzogc2VsZi5KU09OLnBhcnNlLAogICAgICAgICdKU09OX3N0cmluZ2lmeUZuJzogc2VsZi5KU09OLnN0cmluZ2lmeSwKICAgICAgICAnSlNPTl9wYXJzZSc6ICguLi5hcmdzKSA9PiBzYWZlLkpTT05fcGFyc2VGbi5jYWxsKHNhZmUuSlNPTiwgLi4uYXJncyksCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5JzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9zdHJpbmdpZnlGbi5jYWxsKHNhZmUuSlNPTiwgLi4uYXJncyksCiAgICAgICAgJ2xvZyc6IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSksCiAgICAgICAgLy8gUHJvcGVydGllcwogICAgICAgIGxvZ0xldmVsOiAwLAogICAgICAgIC8vIE1ldGhvZHMKICAgICAgICBtYWtlTG9nUHJlZml4KC4uLmFyZ3MpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyICYmIGBbJHthcmdzLmpvaW4oJyBcdTIwNUQgJyl9XWAgfHwgJyc7CiAgICAgICAgfSwKICAgICAgICB1Ym9Mb2coLi4uYXJncykgewogICAgICAgICAgICBpZiAoIHRoaXMuc2VuZFRvTG9nZ2VyID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGFyZ3MgPT09IHVuZGVmaW5lZCB8fCBhcmdzWzBdID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbmRUb0xvZ2dlcignaW5mbycsIC4uLmFyZ3MpOwogICAgICAgICAgICAKICAgICAgICB9LAogICAgICAgIHVib0VyciguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdlcnJvcicsIC4uLmFyZ3MpOwogICAgICAgIH0sCiAgICAgICAgZXNjYXBlUmVnZXhDaGFycyhzKSB7CiAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXVxcXS9nLCAnXFwkJicpOwogICAgICAgIH0sCiAgICAgICAgaW5pdFBhdHRlcm4ocGF0dGVybiwgb3B0aW9ucyA9IHt9KSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4geyBtYXRjaEFsbDogdHJ1ZSwgZXhwZWN0OiB0cnVlIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgZXhwZWN0ID0gKG9wdGlvbnMuY2FuTmVnYXRlICE9PSB0cnVlIHx8IHBhdHRlcm4uc3RhcnRzV2l0aCgnIScpID09PSBmYWxzZSk7CiAgICAgICAgICAgIGlmICggZXhwZWN0ID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnNsaWNlKDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoICE9PSBudWxsICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMl0gfHwgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIG9wdGlvbnMuZmxhZ3MgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgcmU6IG5ldyB0aGlzLlJlZ0V4cCh0aGlzLmVzY2FwZVJlZ2V4Q2hhcnMocGF0dGVybiksCiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZmxhZ3MKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIGV4cGVjdCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHsgcGF0dGVybiwgZXhwZWN0IH07CiAgICAgICAgfSwKICAgICAgICB0ZXN0UGF0dGVybihkZXRhaWxzLCBoYXlzdGFjaykgewogICAgICAgICAgICBpZiAoIGRldGFpbHMubWF0Y2hBbGwgKSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgICAgIGlmICggZGV0YWlscy5yZSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLlJlZ0V4cF90ZXN0LmNhbGwoZGV0YWlscy5yZSwgaGF5c3RhY2spID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gaGF5c3RhY2suaW5jbHVkZXMoZGV0YWlscy5wYXR0ZXJuKSA9PT0gZGV0YWlscy5leHBlY3Q7CiAgICAgICAgfSwKICAgICAgICBwYXR0ZXJuVG9SZWdleChwYXR0ZXJuLCBmbGFncyA9IHVuZGVmaW5lZCwgdmVyYmF0aW0gPSBmYWxzZSkgewogICAgICAgICAgICBpZiAoIHBhdHRlcm4gPT09ICcnICkgeyByZXR1cm4gL14vOyB9CiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gL15cLyguKylcLyhbZ2ltc3VdKikkLy5leGVjKHBhdHRlcm4pOwogICAgICAgICAgICBpZiAoIG1hdGNoID09PSBudWxsICkgewogICAgICAgICAgICAgICAgY29uc3QgcmVTdHIgPSB0aGlzLmVzY2FwZVJlZ2V4Q2hhcnMocGF0dGVybik7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cCh2ZXJiYXRpbSA/IGBeJHtyZVN0cn0kYCA6IHJlU3RyLCBmbGFncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKG1hdGNoWzFdLCBtYXRjaFsyXSB8fCB1bmRlZmluZWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoKGV4KSB7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIC9eLzsKICAgICAgICB9LAogICAgICAgIGdldEV4dHJhQXJncyhhcmdzLCBvZmZzZXQgPSAwKSB7CiAgICAgICAgICAgIGNvbnN0IGVudHJpZXMgPSBhcmdzLnNsaWNlKG9mZnNldCkucmVkdWNlKChvdXQsIHYsIGksIGEpID0+IHsKICAgICAgICAgICAgICAgIGlmICggKGkgJiAxKSA9PT0gMCApIHsKICAgICAgICAgICAgICAgICAgICBjb25zdCByYXdWYWx1ZSA9IGFbaSsxXTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IC9eXGQrJC8udGVzdChyYXdWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgPyBwYXJzZUludChyYXdWYWx1ZSwgMTApCiAgICAgICAgICAgICAgICAgICAgICAgIDogcmF3VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgb3V0LnB1c2goWyBhW2ldLCB2YWx1ZSBdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBvdXQ7CiAgICAgICAgICAgIH0sIFtdKTsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuT2JqZWN0X2Zyb21FbnRyaWVzKGVudHJpZXMpOwogICAgICAgIH0sCiAgICAgICAgb25JZGxlKGZuLCBvcHRpb25zKSB7CiAgICAgICAgICAgIGlmICggc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayhmbiwgb3B0aW9ucyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZuKTsKICAgICAgICB9LAogICAgICAgIG9mZklkbGUoaWQpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jYW5jZWxJZGxlQ2FsbGJhY2soaWQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbEFuaW1hdGlvbkZyYW1lKGlkKTsKICAgICAgICB9CiAgICB9OwogICAgc2NyaXB0bGV0R2xvYmFscy5zYWZlU2VsZiA9IHNhZmU7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuIHNhZmU7IH0KICAgIC8vIFRoaXMgaXMgZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBsb2dnZXIgaXMgb3BlbmVkCiAgICBzYWZlLmxvZ0xldmVsID0gc2NyaXB0bGV0R2xvYmFscy5sb2dMZXZlbCB8fCAxOwogICAgbGV0IGxhc3RMb2dUeXBlID0gJyc7CiAgICBsZXQgbGFzdExvZ1RleHQgPSAnJzsKICAgIGxldCBsYXN0TG9nVGltZSA9IDA7CiAgICBzYWZlLnRvTG9nVGV4dCA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgaWYgKCBhcmdzLmxlbmd0aCA9PT0gMCApIHsgcmV0dXJuOyB9CiAgICAgICAgY29uc3QgdGV4dCA9IGBbJHtkb2N1bWVudC5sb2NhdGlvbi5ob3N0bmFtZSB8fCBkb2N1bWVudC5sb2NhdGlvbi5ocmVmfV0ke2FyZ3Muam9pbignICcpfWA7CiAgICAgICAgaWYgKCB0ZXh0ID09PSBsYXN0TG9nVGV4dCAmJiB0eXBlID09PSBsYXN0TG9nVHlwZSApIHsKICAgICAgICAgICAgaWYgKCAoRGF0ZS5ub3coKSAtIGxhc3RMb2dUaW1lKSA8IDUwMDAgKSB7IHJldHVybjsgfQogICAgICAgIH0KICAgICAgICBsYXN0TG9nVHlwZSA9IHR5cGU7CiAgICAgICAgbGFzdExvZ1RleHQgPSB0ZXh0OwogICAgICAgIGxhc3RMb2dUaW1lID0gRGF0ZS5ub3coKTsKICAgICAgICByZXR1cm4gdGV4dDsKICAgIH07CiAgICB0cnkgewogICAgICAgIGNvbnN0IGJjID0gbmV3IHNlbGYuQnJvYWRjYXN0Q2hhbm5lbChzY3JpcHRsZXRHbG9iYWxzLmJjU2VjcmV0KTsKICAgICAgICBsZXQgYmNCdWZmZXIgPSBbXTsKICAgICAgICBzYWZlLnNlbmRUb0xvZ2dlciA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzYWZlLnRvTG9nVGV4dCh0eXBlLCAuLi5hcmdzKTsKICAgICAgICAgICAgaWYgKCB0ZXh0ID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYmMucG9zdE1lc3NhZ2UoeyB3aGF0OiAnbWVzc2FnZVRvTG9nZ2VyJywgdHlwZSwgdGV4dCB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBiY0J1ZmZlci5wdXNoKHsgdHlwZSwgdGV4dCB9KTsKICAgICAgICB9OwogICAgICAgIGJjLm9ubWVzc2FnZSA9IGV2ID0+IHsKICAgICAgICAgICAgY29uc3QgbXNnID0gZXYuZGF0YTsKICAgICAgICAgICAgc3dpdGNoICggbXNnICkgewogICAgICAgICAgICBjYXNlICdpYW1yZWFkeSEnOgogICAgICAgICAgICAgICAgaWYgKCBiY0J1ZmZlciA9PT0gdW5kZWZpbmVkICkgeyBicmVhazsgfQogICAgICAgICAgICAgICAgYmNCdWZmZXIuZm9yRWFjaCgoeyB0eXBlLCB0ZXh0IH0pID0+CiAgICAgICAgICAgICAgICAgICAgYmMucG9zdE1lc3NhZ2UoeyB3aGF0OiAnbWVzc2FnZVRvTG9nZ2VyJywgdHlwZSwgdGV4dCB9KQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGJjQnVmZmVyID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3NldFNjcmlwdGxldExvZ0xldmVsVG9PbmUnOgogICAgICAgICAgICAgICAgc2FmZS5sb2dMZXZlbCA9IDE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb1R3byc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBiYy5wb3N0TWVzc2FnZSgnYXJleW91cmVhZHk/Jyk7CiAgICB9IGNhdGNoKF8pIHsKICAgICAgICBzYWZlLnNlbmRUb0xvZ2dlciA9ICh0eXBlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBzYWZlLnRvTG9nVGV4dCh0eXBlLCAuLi5hcmdzKTsKICAgICAgICAgICAgaWYgKCB0ZXh0ID09PSB1bmRlZmluZWQgKSB7IHJldHVybjsgfQogICAgICAgICAgICBzYWZlLmxvZyhgdUJPICR7dGV4dH1gKTsKICAgICAgICB9OwogICAgfQogICAgcmV0dXJuIHNhZmU7Cn0KZnVuY3Rpb24gcHJveHlBcHBseUZuKAogICAgdGFyZ2V0ID0gJycsCiAgICBoYW5kbGVyID0gJycKKSB7CiAgICBsZXQgY29udGV4dCA9IGdsb2JhbFRoaXM7CiAgICBsZXQgcHJvcCA9IHRhcmdldDsKICAgIGZvciAoOzspIHsKICAgICAgICBjb25zdCBwb3MgPSBwcm9wLmluZGV4T2YoJy4nKTsKICAgICAgICBpZiAoIHBvcyA9PT0gLTEgKSB7IGJyZWFrOyB9CiAgICAgICAgY29udGV4dCA9IGNvbnRleHRbcHJvcC5zbGljZSgwLCBwb3MpXTsKICAgICAgICBpZiAoIGNvbnRleHQgaW5zdGFuY2VvZiBPYmplY3QgPT09IGZhbHNlICkgeyByZXR1cm47IH0KICAgICAgICBwcm9wID0gcHJvcC5zbGljZShwb3MrMSk7CiAgICB9CiAgICBjb25zdCBmbiA9IGNvbnRleHRbcHJvcF07CiAgICBpZiAoIHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJyApIHsgcmV0dXJuOyB9CiAgICBpZiAoIHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dCA9PT0gdW5kZWZpbmVkICkgewogICAgICAgIHByb3h5QXBwbHlGbi5jdG9yQ29udGV4dHMgPSBbXTsKICAgICAgICBwcm94eUFwcGx5Rm4uQ3RvckNvbnRleHQgPSBjbGFzcyB7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuaW5pdCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbml0KGNhbGxGbiwgY2FsbEFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gY2FsbEZuOwogICAgICAgICAgICAgICAgdGhpcy5jYWxsQXJncyA9IGNhbGxBcmdzOwogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmVmbGVjdCgpIHsKICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBSZWZsZWN0LmNvbnN0cnVjdCh0aGlzLmNhbGxGbiwgdGhpcy5jYWxsQXJncyk7CiAgICAgICAgICAgICAgICB0aGlzLmNhbGxGbiA9IHRoaXMuY2FsbEFyZ3MgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBwcm94eUFwcGx5Rm4uY3RvckNvbnRleHRzLnB1c2godGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGF0aWMgZmFjdG9yeSguLi5hcmdzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cy5sZW5ndGggIT09IDAKICAgICAgICAgICAgICAgICAgICA/IHByb3h5QXBwbHlGbi5jdG9yQ29udGV4dHMucG9wKCkuaW5pdCguLi5hcmdzKQogICAgICAgICAgICAgICAgICAgIDogbmV3IHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgcHJveHlBcHBseUZuLmFwcGx5Q29udGV4dHMgPSBbXTsKICAgICAgICBwcm94eUFwcGx5Rm4uQXBwbHlDb250ZXh0ID0gY2xhc3MgewogICAgICAgICAgICBjb25zdHJ1Y3RvciguLi5hcmdzKSB7CiAgICAgICAgICAgICAgICB0aGlzLmluaXQoLi4uYXJncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaW5pdChjYWxsRm4sIHRoaXNBcmcsIGNhbGxBcmdzKSB7CiAgICAgICAgICAgICAgICB0aGlzLmNhbGxGbiA9IGNhbGxGbjsKICAgICAgICAgICAgICAgIHRoaXMudGhpc0FyZyA9IHRoaXNBcmc7CiAgICAgICAgICAgICAgICB0aGlzLmNhbGxBcmdzID0gY2FsbEFyZ3M7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgICAgfQogICAgICAgICAgICByZWZsZWN0KCkgewogICAgICAgICAgICAgICAgY29uc3QgciA9IFJlZmxlY3QuYXBwbHkodGhpcy5jYWxsRm4sIHRoaXMudGhpc0FyZywgdGhpcy5jYWxsQXJncyk7CiAgICAgICAgICAgICAgICB0aGlzLmNhbGxGbiA9IHRoaXMudGhpc0FyZyA9IHRoaXMuY2FsbEFyZ3MgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cy5wdXNoKHRoaXMpOwogICAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3RhdGljIGZhY3RvcnkoLi4uYXJncykgewogICAgICAgICAgICAgICAgcmV0dXJuIHByb3h5QXBwbHlGbi5hcHBseUNvbnRleHRzLmxlbmd0aCAhPT0gMAogICAgICAgICAgICAgICAgICAgID8gcHJveHlBcHBseUZuLmFwcGx5Q29udGV4dHMucG9wKCkuaW5pdCguLi5hcmdzKQogICAgICAgICAgICAgICAgICAgIDogbmV3IHByb3h5QXBwbHlGbi5BcHBseUNvbnRleHQoLi4uYXJncyk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfQogICAgY29uc3QgZm5TdHIgPSBmbi50b1N0cmluZygpOwogICAgY29uc3QgdG9TdHJpbmcgPSAoZnVuY3Rpb24gdG9TdHJpbmcoKSB7IHJldHVybiBmblN0cjsgfSkuYmluZChudWxsKTsKICAgIGNvbnN0IHByb3h5RGV0YWlscyA9IHsKICAgICAgICBhcHBseSh0YXJnZXQsIHRoaXNBcmcsIGFyZ3MpIHsKICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXIocHJveHlBcHBseUZuLkFwcGx5Q29udGV4dC5mYWN0b3J5KHRhcmdldCwgdGhpc0FyZywgYXJncykpOwogICAgICAgIH0sCiAgICAgICAgZ2V0KHRhcmdldCwgcHJvcCkgewogICAgICAgICAgICBpZiAoIHByb3AgPT09ICd0b1N0cmluZycgKSB7IHJldHVybiB0b1N0cmluZzsgfQogICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXQodGFyZ2V0LCBwcm9wKTsKICAgICAgICB9LAogICAgfTsKICAgIGlmICggZm4ucHJvdG90eXBlPy5jb25zdHJ1Y3RvciA9PT0gZm4gKSB7CiAgICAgICAgcHJveHlEZXRhaWxzLmNvbnN0cnVjdCA9IGZ1bmN0aW9uKHRhcmdldCwgYXJncykgewogICAgICAgICAgICByZXR1cm4gaGFuZGxlcihwcm94eUFwcGx5Rm4uQ3RvckNvbnRleHQuZmFjdG9yeSh0YXJnZXQsIGFyZ3MpKTsKICAgICAgICB9OwogICAgfQogICAgY29udGV4dFtwcm9wXSA9IG5ldyBQcm94eShmbiwgcHJveHlEZXRhaWxzKTsKfQpmdW5jdGlvbiBvYmplY3RQcnVuZUZuKAogICAgb2JqLAogICAgcmF3UHJ1bmVQYXRocywKICAgIHJhd05lZWRsZVBhdGhzLAogICAgc3RhY2tOZWVkbGVEZXRhaWxzID0geyBtYXRjaEFsbDogdHJ1ZSB9LAogICAgZXh0cmFBcmdzID0ge30KKSB7CiAgICBpZiAoIHR5cGVvZiByYXdQcnVuZVBhdGhzICE9PSAnc3RyaW5nJyApIHsgcmV0dXJuOyB9CiAgICBjb25zdCBwcnVuZVBhdGhzID0gcmF3UHJ1bmVQYXRocyAhPT0gJycKICAgICAgICA/IHJhd1BydW5lUGF0aHMuc3BsaXQoLyArLykKICAgICAgICA6IFtdOwogICAgY29uc3QgbmVlZGxlUGF0aHMgPSBwcnVuZVBhdGhzLmxlbmd0aCAhPT0gMCAmJiByYXdOZWVkbGVQYXRocyAhPT0gJycKICAgICAgICA/IHJhd05lZWRsZVBhdGhzLnNwbGl0KC8gKy8pCiAgICAgICAgOiBbXTsKICAgIGlmICggc3RhY2tOZWVkbGVEZXRhaWxzLm1hdGNoQWxsICE9PSB0cnVlICkgewogICAgICAgIGlmICggbWF0Y2hlc1N0YWNrVHJhY2Uoc3RhY2tOZWVkbGVEZXRhaWxzLCBleHRyYUFyZ3MubG9nc3RhY2spID09PSBmYWxzZSApIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGlmICggb2JqZWN0UHJ1bmVGbi5tdXN0UHJvY2VzcyA9PT0gdW5kZWZpbmVkICkgewogICAgICAgIG9iamVjdFBydW5lRm4ubXVzdFByb2Nlc3MgPSAocm9vdCwgbmVlZGxlUGF0aHMpID0+IHsKICAgICAgICAgICAgZm9yICggY29uc3QgbmVlZGxlUGF0aCBvZiBuZWVkbGVQYXRocyApIHsKICAgICAgICAgICAgICAgIGlmICggb2JqZWN0RmluZE93bmVyRm4ocm9vdCwgbmVlZGxlUGF0aCkgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9OwogICAgfQogICAgaWYgKCBwcnVuZVBhdGhzLmxlbmd0aCA9PT0gMCApIHsgcmV0dXJuOyB9CiAgICBsZXQgb3V0Y29tZSA9ICdub21hdGNoJzsKICAgIGlmICggb2JqZWN0UHJ1bmVGbi5tdXN0UHJvY2VzcyhvYmosIG5lZWRsZVBhdGhzKSApIHsKICAgICAgICBmb3IgKCBjb25zdCBwYXRoIG9mIHBydW5lUGF0aHMgKSB7CiAgICAgICAgICAgIGlmICggb2JqZWN0RmluZE93bmVyRm4ob2JqLCBwYXRoLCB0cnVlKSApIHsKICAgICAgICAgICAgICAgIG91dGNvbWUgPSAnbWF0Y2gnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYgKCBvdXRjb21lID09PSAnbWF0Y2gnICkgeyByZXR1cm4gb2JqOyB9Cn0KCiAgKGZ1bmN0aW9uIHRydXN0ZWRQcnVuZU91dGJvdW5kT2JqZWN0KAogICAgcHJvcENoYWluID0gJycsCiAgICByYXdQcnVuZVBhdGhzID0gJycsCiAgICByYXdOZWVkbGVQYXRocyA9ICcnCikgewogICAgaWYgKCBwcm9wQ2hhaW4gPT09ICcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgZXh0cmFBcmdzID0gc2FmZS5nZXRFeHRyYUFyZ3MoQXJyYXkuZnJvbShhcmd1bWVudHMpLCAzKTsKICAgIHByb3h5QXBwbHlGbihwcm9wQ2hhaW4sIGZ1bmN0aW9uKGNvbnRleHQpIHsKICAgICAgICBjb25zdCBvYmpCZWZvcmUgPSBjb250ZXh0LnJlZmxlY3QoKTsKICAgICAgICBpZiAoIG9iakJlZm9yZSBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybiBvYmpCZWZvcmU7IH0KICAgICAgICBjb25zdCBvYmpBZnRlciA9IG9iamVjdFBydW5lRm4oCiAgICAgICAgICAgIG9iakJlZm9yZSwKICAgICAgICAgICAgcmF3UHJ1bmVQYXRocywKICAgICAgICAgICAgcmF3TmVlZGxlUGF0aHMsCiAgICAgICAgICAgIHsgbWF0Y2hBbGw6IHRydWUgfSwKICAgICAgICAgICAgZXh0cmFBcmdzCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gb2JqQWZ0ZXIgfHwgb2JqQmVmb3JlOwogICAgfSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"trusted-replace-argument.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gdmFsaWRhdGVDb25zdGFudEZuKHRydXN0ZWQsIHJhdywgZXh0cmFBcmdzID0ge30pIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgbGV0IHZhbHVlOwogICAgaWYgKCByYXcgPT09ICd1bmRlZmluZWQnICkgewogICAgICAgIHZhbHVlID0gdW5kZWZpbmVkOwogICAgfSBlbHNlIGlmICggcmF3ID09PSAnZmFsc2UnICkgewogICAgICAgIHZhbHVlID0gZmFsc2U7CiAgICB9IGVsc2UgaWYgKCByYXcgPT09ICd0cnVlJyApIHsKICAgICAgICB2YWx1ZSA9IHRydWU7CiAgICB9IGVsc2UgaWYgKCByYXcgPT09ICdudWxsJyApIHsKICAgICAgICB2YWx1ZSA9IG51bGw7CiAgICB9IGVsc2UgaWYgKCByYXcgPT09ICInJyIgfHwgcmF3ID09PSAnJyApIHsKICAgICAgICB2YWx1ZSA9ICcnOwogICAgfSBlbHNlIGlmICggcmF3ID09PSAnW10nIHx8IHJhdyA9PT0gJ2VtcHR5QXJyJyApIHsKICAgICAgICB2YWx1ZSA9IFtdOwogICAgfSBlbHNlIGlmICggcmF3ID09PSAne30nIHx8IHJhdyA9PT0gJ2VtcHR5T2JqJyApIHsKICAgICAgICB2YWx1ZSA9IHt9OwogICAgfSBlbHNlIGlmICggcmF3ID09PSAnbm9vcEZ1bmMnICkgewogICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKXt9OwogICAgfSBlbHNlIGlmICggcmF3ID09PSAndHJ1ZUZ1bmMnICkgewogICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKXsgcmV0dXJuIHRydWU7IH07CiAgICB9IGVsc2UgaWYgKCByYXcgPT09ICdmYWxzZUZ1bmMnICkgewogICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKXsgcmV0dXJuIGZhbHNlOyB9OwogICAgfSBlbHNlIGlmICggcmF3ID09PSAndGhyb3dGdW5jJyApIHsKICAgICAgICB2YWx1ZSA9IGZ1bmN0aW9uKCl7IHRocm93ICcnOyB9OwogICAgfSBlbHNlIGlmICggL14tP1xkKyQvLnRlc3QocmF3KSApIHsKICAgICAgICB2YWx1ZSA9IHBhcnNlSW50KHJhdyk7CiAgICAgICAgaWYgKCBpc05hTihyYXcpICkgeyByZXR1cm47IH0KICAgICAgICBpZiAoIE1hdGguYWJzKHJhdykgPiAweDdGRkYgKSB7IHJldHVybjsgfQogICAgfSBlbHNlIGlmICggdHJ1c3RlZCApIHsKICAgICAgICBpZiAoIHJhdy5zdGFydHNXaXRoKCdqc29uOicpICkgewogICAgICAgICAgICB0cnkgeyB2YWx1ZSA9IHNhZmUuSlNPTl9wYXJzZShyYXcuc2xpY2UoNSkpOyB9IGNhdGNoKGV4KSB7IHJldHVybjsgfQogICAgICAgIH0gZWxzZSBpZiAoIHJhdy5zdGFydHNXaXRoKCd7JykgJiYgcmF3LmVuZHNXaXRoKCd9JykgKSB7CiAgICAgICAgICAgIHRyeSB7IHZhbHVlID0gc2FmZS5KU09OX3BhcnNlKHJhdykudmFsdWU7IH0gY2F0Y2goZXgpIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoIGV4dHJhQXJncy5hcyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgIGlmICggZXh0cmFBcmdzLmFzID09PSAnZnVuY3Rpb24nICkgewogICAgICAgICAgICByZXR1cm4gKCApID0+IHZhbHVlOwogICAgICAgIH0gZWxzZSBpZiAoIGV4dHJhQXJncy5hcyA9PT0gJ2NhbGxiYWNrJyApIHsKICAgICAgICAgICAgcmV0dXJuICggKSA9PiAoKCApID0+IHZhbHVlKTsKICAgICAgICB9IGVsc2UgaWYgKCBleHRyYUFyZ3MuYXMgPT09ICdyZXNvbHZlZCcgKSB7CiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpOwogICAgICAgIH0gZWxzZSBpZiAoIGV4dHJhQXJncy5hcyA9PT0gJ3JlamVjdGVkJyApIHsKICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHZhbHVlKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdmFsdWU7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBwcm94eUFwcGx5Rm4oCiAgICB0YXJnZXQgPSAnJywKICAgIGhhbmRsZXIgPSAnJwopIHsKICAgIGxldCBjb250ZXh0ID0gZ2xvYmFsVGhpczsKICAgIGxldCBwcm9wID0gdGFyZ2V0OwogICAgZm9yICg7OykgewogICAgICAgIGNvbnN0IHBvcyA9IHByb3AuaW5kZXhPZignLicpOwogICAgICAgIGlmICggcG9zID09PSAtMSApIHsgYnJlYWs7IH0KICAgICAgICBjb250ZXh0ID0gY29udGV4dFtwcm9wLnNsaWNlKDAsIHBvcyldOwogICAgICAgIGlmICggY29udGV4dCBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIHByb3AgPSBwcm9wLnNsaWNlKHBvcysxKTsKICAgIH0KICAgIGNvbnN0IGZuID0gY29udGV4dFtwcm9wXTsKICAgIGlmICggdHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nICkgeyByZXR1cm47IH0KICAgIGlmICggcHJveHlBcHBseUZuLkN0b3JDb250ZXh0ID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dCA9IGNsYXNzIHsKICAgICAgICAgICAgY29uc3RydWN0b3IoLi4uYXJncykgewogICAgICAgICAgICAgICAgdGhpcy5pbml0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGluaXQoY2FsbEZuLCBjYWxsQXJncykgewogICAgICAgICAgICAgICAgdGhpcy5jYWxsRm4gPSBjYWxsRm47CiAgICAgICAgICAgICAgICB0aGlzLmNhbGxBcmdzID0gY2FsbEFyZ3M7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgICAgfQogICAgICAgICAgICByZWZsZWN0KCkgewogICAgICAgICAgICAgICAgY29uc3QgciA9IFJlZmxlY3QuY29uc3RydWN0KHRoaXMuY2FsbEZuLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5jdG9yQ29udGV4dHMucHVzaCh0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN0YXRpYyBmYWN0b3J5KC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwcm94eUFwcGx5Rm4uY3RvckNvbnRleHRzLmxlbmd0aCAhPT0gMAogICAgICAgICAgICAgICAgICAgID8gcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkN0b3JDb250ZXh0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5BcHBseUNvbnRleHQgPSBjbGFzcyB7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuaW5pdCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbml0KGNhbGxGbiwgdGhpc0FyZywgY2FsbEFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gY2FsbEZuOwogICAgICAgICAgICAgICAgdGhpcy50aGlzQXJnID0gdGhpc0FyZzsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEFyZ3MgPSBjYWxsQXJnczsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlZmxlY3QoKSB7CiAgICAgICAgICAgICAgICBjb25zdCByID0gUmVmbGVjdC5hcHBseSh0aGlzLmNhbGxGbiwgdGhpcy50aGlzQXJnLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy50aGlzQXJnID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5hcHBseUNvbnRleHRzLnB1c2godGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGF0aWMgZmFjdG9yeSguLi5hcmdzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcHJveHlBcHBseUZuLmFwcGx5Q29udGV4dHMubGVuZ3RoICE9PSAwCiAgICAgICAgICAgICAgICAgICAgPyBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkFwcGx5Q29udGV4dCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBmblN0ciA9IGZuLnRvU3RyaW5nKCk7CiAgICBjb25zdCB0b1N0cmluZyA9IChmdW5jdGlvbiB0b1N0cmluZygpIHsgcmV0dXJuIGZuU3RyOyB9KS5iaW5kKG51bGwpOwogICAgY29uc3QgcHJveHlEZXRhaWxzID0gewogICAgICAgIGFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICByZXR1cm4gaGFuZGxlcihwcm94eUFwcGx5Rm4uQXBwbHlDb250ZXh0LmZhY3RvcnkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSk7CiAgICAgICAgfSwKICAgICAgICBnZXQodGFyZ2V0LCBwcm9wKSB7CiAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ3RvU3RyaW5nJyApIHsgcmV0dXJuIHRvU3RyaW5nOyB9CiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3ApOwogICAgICAgIH0sCiAgICB9OwogICAgaWYgKCBmbi5wcm90b3R5cGU/LmNvbnN0cnVjdG9yID09PSBmbiApIHsKICAgICAgICBwcm94eURldGFpbHMuY29uc3RydWN0ID0gZnVuY3Rpb24odGFyZ2V0LCBhcmdzKSB7CiAgICAgICAgICAgIHJldHVybiBoYW5kbGVyKHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dC5mYWN0b3J5KHRhcmdldCwgYXJncykpOwogICAgICAgIH07CiAgICB9CiAgICBjb250ZXh0W3Byb3BdID0gbmV3IFByb3h5KGZuLCBwcm94eURldGFpbHMpOwp9CgogIChmdW5jdGlvbiB0cnVzdGVkUmVwbGFjZUFyZ3VtZW50KAogICAgcHJvcENoYWluID0gJycsCiAgICBhcmdwb3NSYXcgPSAnJywKICAgIGFyZ3JhdyA9ICcnCikgewogICAgaWYgKCBwcm9wQ2hhaW4gPT09ICcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbG9nUHJlZml4ID0gc2FmZS5tYWtlTG9nUHJlZml4KCd0cnVzdGVkLXJlcGxhY2UtYXJndW1lbnQnLCBwcm9wQ2hhaW4sIGFyZ3Bvc1JhdywgYXJncmF3KTsKICAgIGNvbnN0IGFyZ29mZnNldCA9IHBhcnNlSW50KGFyZ3Bvc1JhdywgMTApIHx8IDA7CiAgICBjb25zdCBleHRyYUFyZ3MgPSBzYWZlLmdldEV4dHJhQXJncyhBcnJheS5mcm9tKGFyZ3VtZW50cyksIDMpOwogICAgY29uc3Qgbm9ybWFsVmFsdWUgPSB2YWxpZGF0ZUNvbnN0YW50Rm4odHJ1ZSwgYXJncmF3LCBleHRyYUFyZ3MpOwogICAgY29uc3QgcmVDb25kaXRpb24gPSBleHRyYUFyZ3MuY29uZGl0aW9uCiAgICAgICAgPyBzYWZlLnBhdHRlcm5Ub1JlZ2V4KGV4dHJhQXJncy5jb25kaXRpb24pCiAgICAgICAgOiAvXi87CiAgICBwcm94eUFwcGx5Rm4ocHJvcENoYWluLCBmdW5jdGlvbihjb250ZXh0KSB7CiAgICAgICAgY29uc3QgeyBjYWxsQXJncyB9ID0gY29udGV4dDsKICAgICAgICBpZiAoIGFyZ3Bvc1JhdyA9PT0gJycgKSB7CiAgICAgICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgYEFyZ3VtZW50czpcbiR7Y2FsbEFyZ3Muam9pbignXG4nKX1gKTsKICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQucmVmbGVjdCgpOwogICAgICAgIH0KICAgICAgICBjb25zdCBhcmdwb3MgPSBhcmdvZmZzZXQgPj0gMCA/IGFyZ29mZnNldCA6IGNhbGxBcmdzLmxlbmd0aCAtIGFyZ29mZnNldDsKICAgICAgICBpZiAoIGFyZ3BvcyA+PSAwICYmIGFyZ3BvcyA8IGNhbGxBcmdzLmxlbmd0aCApIHsKICAgICAgICAgICAgY29uc3QgYXJnQmVmb3JlID0gY2FsbEFyZ3NbYXJncG9zXTsKICAgICAgICAgICAgaWYgKCBzYWZlLlJlZ0V4cF90ZXN0LmNhbGwocmVDb25kaXRpb24sIGFyZ0JlZm9yZSkgKSB7CiAgICAgICAgICAgICAgICBjYWxsQXJnc1thcmdwb3NdID0gbm9ybWFsVmFsdWU7CiAgICAgICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBSZXBsYWNlZCBhcmd1bWVudDpcbkJlZm9yZTogJHtKU09OLnN0cmluZ2lmeShhcmdCZWZvcmUpfVxuQWZ0ZXI6ICR7bm9ybWFsVmFsdWV9YCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGNvbnRleHQucmVmbGVjdCgpOwogICAgfSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"trusted-replace-outbound-text.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBwcm94eUFwcGx5Rm4oCiAgICB0YXJnZXQgPSAnJywKICAgIGhhbmRsZXIgPSAnJwopIHsKICAgIGxldCBjb250ZXh0ID0gZ2xvYmFsVGhpczsKICAgIGxldCBwcm9wID0gdGFyZ2V0OwogICAgZm9yICg7OykgewogICAgICAgIGNvbnN0IHBvcyA9IHByb3AuaW5kZXhPZignLicpOwogICAgICAgIGlmICggcG9zID09PSAtMSApIHsgYnJlYWs7IH0KICAgICAgICBjb250ZXh0ID0gY29udGV4dFtwcm9wLnNsaWNlKDAsIHBvcyldOwogICAgICAgIGlmICggY29udGV4dCBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIHByb3AgPSBwcm9wLnNsaWNlKHBvcysxKTsKICAgIH0KICAgIGNvbnN0IGZuID0gY29udGV4dFtwcm9wXTsKICAgIGlmICggdHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nICkgeyByZXR1cm47IH0KICAgIGlmICggcHJveHlBcHBseUZuLkN0b3JDb250ZXh0ID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dCA9IGNsYXNzIHsKICAgICAgICAgICAgY29uc3RydWN0b3IoLi4uYXJncykgewogICAgICAgICAgICAgICAgdGhpcy5pbml0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGluaXQoY2FsbEZuLCBjYWxsQXJncykgewogICAgICAgICAgICAgICAgdGhpcy5jYWxsRm4gPSBjYWxsRm47CiAgICAgICAgICAgICAgICB0aGlzLmNhbGxBcmdzID0gY2FsbEFyZ3M7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgICAgfQogICAgICAgICAgICByZWZsZWN0KCkgewogICAgICAgICAgICAgICAgY29uc3QgciA9IFJlZmxlY3QuY29uc3RydWN0KHRoaXMuY2FsbEZuLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5jdG9yQ29udGV4dHMucHVzaCh0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN0YXRpYyBmYWN0b3J5KC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwcm94eUFwcGx5Rm4uY3RvckNvbnRleHRzLmxlbmd0aCAhPT0gMAogICAgICAgICAgICAgICAgICAgID8gcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkN0b3JDb250ZXh0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5BcHBseUNvbnRleHQgPSBjbGFzcyB7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuaW5pdCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbml0KGNhbGxGbiwgdGhpc0FyZywgY2FsbEFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gY2FsbEZuOwogICAgICAgICAgICAgICAgdGhpcy50aGlzQXJnID0gdGhpc0FyZzsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEFyZ3MgPSBjYWxsQXJnczsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlZmxlY3QoKSB7CiAgICAgICAgICAgICAgICBjb25zdCByID0gUmVmbGVjdC5hcHBseSh0aGlzLmNhbGxGbiwgdGhpcy50aGlzQXJnLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy50aGlzQXJnID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5hcHBseUNvbnRleHRzLnB1c2godGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGF0aWMgZmFjdG9yeSguLi5hcmdzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcHJveHlBcHBseUZuLmFwcGx5Q29udGV4dHMubGVuZ3RoICE9PSAwCiAgICAgICAgICAgICAgICAgICAgPyBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkFwcGx5Q29udGV4dCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBmblN0ciA9IGZuLnRvU3RyaW5nKCk7CiAgICBjb25zdCB0b1N0cmluZyA9IChmdW5jdGlvbiB0b1N0cmluZygpIHsgcmV0dXJuIGZuU3RyOyB9KS5iaW5kKG51bGwpOwogICAgY29uc3QgcHJveHlEZXRhaWxzID0gewogICAgICAgIGFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICByZXR1cm4gaGFuZGxlcihwcm94eUFwcGx5Rm4uQXBwbHlDb250ZXh0LmZhY3RvcnkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSk7CiAgICAgICAgfSwKICAgICAgICBnZXQodGFyZ2V0LCBwcm9wKSB7CiAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ3RvU3RyaW5nJyApIHsgcmV0dXJuIHRvU3RyaW5nOyB9CiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3ApOwogICAgICAgIH0sCiAgICB9OwogICAgaWYgKCBmbi5wcm90b3R5cGU/LmNvbnN0cnVjdG9yID09PSBmbiApIHsKICAgICAgICBwcm94eURldGFpbHMuY29uc3RydWN0ID0gZnVuY3Rpb24odGFyZ2V0LCBhcmdzKSB7CiAgICAgICAgICAgIHJldHVybiBoYW5kbGVyKHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dC5mYWN0b3J5KHRhcmdldCwgYXJncykpOwogICAgICAgIH07CiAgICB9CiAgICBjb250ZXh0W3Byb3BdID0gbmV3IFByb3h5KGZuLCBwcm94eURldGFpbHMpOwp9CgogIChmdW5jdGlvbiB0cnVzdGVkUmVwbGFjZU91dGJvdW5kVGV4dCgKICAgIHByb3BDaGFpbiA9ICcnLAogICAgcmF3UGF0dGVybiA9ICcnLAogICAgcmF3UmVwbGFjZW1lbnQgPSAnJywKICAgIC4uLmFyZ3MKKSB7CiAgICBpZiAoIHByb3BDaGFpbiA9PT0gJycgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBsb2dQcmVmaXggPSBzYWZlLm1ha2VMb2dQcmVmaXgoJ3RydXN0ZWQtcmVwbGFjZS1vdXRib3VuZC10ZXh0JywgcHJvcENoYWluLCByYXdQYXR0ZXJuLCByYXdSZXBsYWNlbWVudCwgLi4uYXJncyk7CiAgICBjb25zdCByZVBhdHRlcm4gPSBzYWZlLnBhdHRlcm5Ub1JlZ2V4KHJhd1BhdHRlcm4pOwogICAgY29uc3QgcmVwbGFjZW1lbnQgPSByYXdSZXBsYWNlbWVudC5zdGFydHNXaXRoKCdqc29uOicpCiAgICAgICAgPyBzYWZlLkpTT05fcGFyc2UocmF3UmVwbGFjZW1lbnQuc2xpY2UoNSkpCiAgICAgICAgOiByYXdSZXBsYWNlbWVudDsKICAgIGNvbnN0IGV4dHJhQXJncyA9IHNhZmUuZ2V0RXh0cmFBcmdzKGFyZ3MpOwogICAgY29uc3QgcmVDb25kaXRpb24gPSBzYWZlLnBhdHRlcm5Ub1JlZ2V4KGV4dHJhQXJncy5jb25kaXRpb24gfHwgJycpOwogICAgcHJveHlBcHBseUZuKHByb3BDaGFpbiwgZnVuY3Rpb24oY29udGV4dCkgewogICAgICAgIGNvbnN0IGVuY29kZWRUZXh0QmVmb3JlID0gY29udGV4dC5yZWZsZWN0KCk7CiAgICAgICAgbGV0IHRleHRCZWZvcmUgPSBlbmNvZGVkVGV4dEJlZm9yZTsKICAgICAgICBpZiAoIGV4dHJhQXJncy5lbmNvZGluZyA9PT0gJ2Jhc2U2NCcgKSB7CiAgICAgICAgICAgIHRyeSB7IHRleHRCZWZvcmUgPSBzZWxmLmF0b2IoZW5jb2RlZFRleHRCZWZvcmUpOyB9CiAgICAgICAgICAgIGNhdGNoKGV4KSB7IHJldHVybiBlbmNvZGVkVGV4dEJlZm9yZTsgfQogICAgICAgIH0KICAgICAgICBpZiAoIHJhd1BhdHRlcm4gPT09ICcnICkgewogICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsICdEZWNvZGVkIG91dGJvdW5kIHRleHQ6XG4nLCB0ZXh0QmVmb3JlKTsKICAgICAgICAgICAgcmV0dXJuIGVuY29kZWRUZXh0QmVmb3JlOwogICAgICAgIH0KICAgICAgICByZUNvbmRpdGlvbi5sYXN0SW5kZXggPSAwOwogICAgICAgIGlmICggcmVDb25kaXRpb24udGVzdCh0ZXh0QmVmb3JlKSA9PT0gZmFsc2UgKSB7IHJldHVybiBlbmNvZGVkVGV4dEJlZm9yZTsgfQogICAgICAgIGNvbnN0IHRleHRBZnRlciA9IHRleHRCZWZvcmUucmVwbGFjZShyZVBhdHRlcm4sIHJlcGxhY2VtZW50KTsKICAgICAgICBpZiAoIHRleHRBZnRlciA9PT0gdGV4dEJlZm9yZSApIHsgcmV0dXJuIGVuY29kZWRUZXh0QmVmb3JlOyB9CiAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCAnTWF0Y2hlZCBhbmQgcmVwbGFjZWQnKTsKICAgICAgICBpZiAoIHNhZmUubG9nTGV2ZWwgPiAxICkgewogICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsICdNb2RpZmllZCBkZWNvZGVkIG91dGJvdW5kIHRleHQ6XG4nLCB0ZXh0QWZ0ZXIpOwogICAgICAgIH0KICAgICAgICBsZXQgZW5jb2RlZFRleHRBZnRlciA9IHRleHRBZnRlcjsKICAgICAgICBpZiAoIGV4dHJhQXJncy5lbmNvZGluZyA9PT0gJ2Jhc2U2NCcgKSB7CiAgICAgICAgICAgIGVuY29kZWRUZXh0QWZ0ZXIgPSBzZWxmLmJ0b2EodGV4dEFmdGVyKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGVuY29kZWRUZXh0QWZ0ZXI7CiAgICB9KTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"trusted-suppress-native-method.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBwcm94eUFwcGx5Rm4oCiAgICB0YXJnZXQgPSAnJywKICAgIGhhbmRsZXIgPSAnJwopIHsKICAgIGxldCBjb250ZXh0ID0gZ2xvYmFsVGhpczsKICAgIGxldCBwcm9wID0gdGFyZ2V0OwogICAgZm9yICg7OykgewogICAgICAgIGNvbnN0IHBvcyA9IHByb3AuaW5kZXhPZignLicpOwogICAgICAgIGlmICggcG9zID09PSAtMSApIHsgYnJlYWs7IH0KICAgICAgICBjb250ZXh0ID0gY29udGV4dFtwcm9wLnNsaWNlKDAsIHBvcyldOwogICAgICAgIGlmICggY29udGV4dCBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIHByb3AgPSBwcm9wLnNsaWNlKHBvcysxKTsKICAgIH0KICAgIGNvbnN0IGZuID0gY29udGV4dFtwcm9wXTsKICAgIGlmICggdHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nICkgeyByZXR1cm47IH0KICAgIGlmICggcHJveHlBcHBseUZuLkN0b3JDb250ZXh0ID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dCA9IGNsYXNzIHsKICAgICAgICAgICAgY29uc3RydWN0b3IoLi4uYXJncykgewogICAgICAgICAgICAgICAgdGhpcy5pbml0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGluaXQoY2FsbEZuLCBjYWxsQXJncykgewogICAgICAgICAgICAgICAgdGhpcy5jYWxsRm4gPSBjYWxsRm47CiAgICAgICAgICAgICAgICB0aGlzLmNhbGxBcmdzID0gY2FsbEFyZ3M7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgICAgfQogICAgICAgICAgICByZWZsZWN0KCkgewogICAgICAgICAgICAgICAgY29uc3QgciA9IFJlZmxlY3QuY29uc3RydWN0KHRoaXMuY2FsbEZuLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5jdG9yQ29udGV4dHMucHVzaCh0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN0YXRpYyBmYWN0b3J5KC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwcm94eUFwcGx5Rm4uY3RvckNvbnRleHRzLmxlbmd0aCAhPT0gMAogICAgICAgICAgICAgICAgICAgID8gcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkN0b3JDb250ZXh0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5BcHBseUNvbnRleHQgPSBjbGFzcyB7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuaW5pdCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbml0KGNhbGxGbiwgdGhpc0FyZywgY2FsbEFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gY2FsbEZuOwogICAgICAgICAgICAgICAgdGhpcy50aGlzQXJnID0gdGhpc0FyZzsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEFyZ3MgPSBjYWxsQXJnczsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlZmxlY3QoKSB7CiAgICAgICAgICAgICAgICBjb25zdCByID0gUmVmbGVjdC5hcHBseSh0aGlzLmNhbGxGbiwgdGhpcy50aGlzQXJnLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy50aGlzQXJnID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5hcHBseUNvbnRleHRzLnB1c2godGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGF0aWMgZmFjdG9yeSguLi5hcmdzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcHJveHlBcHBseUZuLmFwcGx5Q29udGV4dHMubGVuZ3RoICE9PSAwCiAgICAgICAgICAgICAgICAgICAgPyBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkFwcGx5Q29udGV4dCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBmblN0ciA9IGZuLnRvU3RyaW5nKCk7CiAgICBjb25zdCB0b1N0cmluZyA9IChmdW5jdGlvbiB0b1N0cmluZygpIHsgcmV0dXJuIGZuU3RyOyB9KS5iaW5kKG51bGwpOwogICAgY29uc3QgcHJveHlEZXRhaWxzID0gewogICAgICAgIGFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICByZXR1cm4gaGFuZGxlcihwcm94eUFwcGx5Rm4uQXBwbHlDb250ZXh0LmZhY3RvcnkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSk7CiAgICAgICAgfSwKICAgICAgICBnZXQodGFyZ2V0LCBwcm9wKSB7CiAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ3RvU3RyaW5nJyApIHsgcmV0dXJuIHRvU3RyaW5nOyB9CiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3ApOwogICAgICAgIH0sCiAgICB9OwogICAgaWYgKCBmbi5wcm90b3R5cGU/LmNvbnN0cnVjdG9yID09PSBmbiApIHsKICAgICAgICBwcm94eURldGFpbHMuY29uc3RydWN0ID0gZnVuY3Rpb24odGFyZ2V0LCBhcmdzKSB7CiAgICAgICAgICAgIHJldHVybiBoYW5kbGVyKHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dC5mYWN0b3J5KHRhcmdldCwgYXJncykpOwogICAgICAgIH07CiAgICB9CiAgICBjb250ZXh0W3Byb3BdID0gbmV3IFByb3h5KGZuLCBwcm94eURldGFpbHMpOwp9CgogIChmdW5jdGlvbiB0cnVzdGVkU3VwcHJlc3NOYXRpdmVNZXRob2QoCiAgICBtZXRob2RQYXRoID0gJycsCiAgICBzaWduYXR1cmUgPSAnJywKICAgIGhvdyA9ICcnLAogICAgc3RhY2sgPSAnJwopIHsKICAgIGlmICggbWV0aG9kUGF0aCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgaWYgKCBzdGFjayAhPT0gJycgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBsb2dQcmVmaXggPSBzYWZlLm1ha2VMb2dQcmVmaXgoJ3RydXN0ZWQtc3VwcHJlc3MtbmF0aXZlLW1ldGhvZCcsIG1ldGhvZFBhdGgsIHNpZ25hdHVyZSwgaG93KTsKICAgIGNvbnN0IHNpZ25hdHVyZUFyZ3MgPSBzaWduYXR1cmUuc3BsaXQoL1xzKlx8XHMqLykubWFwKHYgPT4gewogICAgICAgIGlmICggL14iLioiJC8udGVzdCh2KSApIHsKICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogJ3BhdHRlcm4nLCByZTogc2FmZS5wYXR0ZXJuVG9SZWdleCh2LnNsaWNlKDEsIC0xKSkgfTsKICAgICAgICB9CiAgICAgICAgaWYgKCB2ID09PSAnZmFsc2UnICkgewogICAgICAgICAgICByZXR1cm4geyB0eXBlOiAnZXhhY3QnLCB2YWx1ZTogZmFsc2UgfTsKICAgICAgICB9CiAgICAgICAgaWYgKCB2ID09PSAndHJ1ZScgKSB7CiAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICdleGFjdCcsIHZhbHVlOiB0cnVlIH07CiAgICAgICAgfQogICAgICAgIGlmICggdiA9PT0gJ251bGwnICkgewogICAgICAgICAgICByZXR1cm4geyB0eXBlOiAnZXhhY3QnLCB2YWx1ZTogbnVsbCB9OwogICAgICAgIH0KICAgICAgICBpZiAoIHYgPT09ICd1bmRlZmluZWQnICkgewogICAgICAgICAgICByZXR1cm4geyB0eXBlOiAnZXhhY3QnLCB2YWx1ZTogdW5kZWZpbmVkIH07CiAgICAgICAgfQogICAgfSk7CiAgICBwcm94eUFwcGx5Rm4obWV0aG9kUGF0aCwgZnVuY3Rpb24oY29udGV4dCkgewogICAgICAgIGNvbnN0IHsgY2FsbEFyZ3MgfSA9IGNvbnRleHQ7CiAgICAgICAgaWYgKCBzaWduYXR1cmUgPT09ICcnICkgewogICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBBcmd1bWVudHM6XG4ke2NhbGxBcmdzLmpvaW4oJ1xuJyl9YCk7CiAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnJlZmxlY3QoKTsKICAgICAgICB9CiAgICAgICAgZm9yICggbGV0IGkgPSAwOyBpIDwgc2lnbmF0dXJlQXJncy5sZW5ndGg7IGkrKyApIHsKICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlQXJnID0gc2lnbmF0dXJlQXJnc1tpXTsKICAgICAgICAgICAgaWYgKCBzaWduYXR1cmVBcmcgPT09IHVuZGVmaW5lZCApIHsgY29udGludWU7IH0KICAgICAgICAgICAgY29uc3QgdGFyZ2V0QXJnID0gaSA8IGNhbGxBcmdzLmxlbmd0aCA/IGNhbGxBcmdzW2ldIDogdW5kZWZpbmVkOwogICAgICAgICAgICBpZiAoIHNpZ25hdHVyZUFyZy50eXBlID09PSAnZXhhY3QnICkgewogICAgICAgICAgICAgICAgaWYgKCB0YXJnZXRBcmcgIT09IHNpZ25hdHVyZUFyZy52YWx1ZSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5yZWZsZWN0KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBzaWduYXR1cmVBcmcudHlwZSA9PT0gJ3BhdHRlcm4nICkgewogICAgICAgICAgICAgICAgaWYgKCBzYWZlLlJlZ0V4cF90ZXN0LmNhbGwoc2lnbmF0dXJlQXJnLnJlLCB0YXJnZXRBcmcpID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5yZWZsZWN0KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCBob3cgPT09ICdkZWJ1ZycgKSB7CiAgICAgICAgICAgIGRlYnVnZ2VyOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWRlYnVnZ2VyCiAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnJlZmxlY3QoKTsKICAgICAgICB9CiAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCBgU3VwcHJlc3NlZDpcbiR7Y2FsbEFyZ3Muam9pbignXG4nKX1gKTsKICAgICAgICBpZiAoIGhvdyA9PT0gJ2Fib3J0JyApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCk7CiAgICAgICAgfQogICAgfSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"},{"name":"trusted-prevent-xhr.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBwYXJzZVByb3BlcnRpZXNUb01hdGNoKHByb3BzVG9NYXRjaCwgaW1wbGljaXQgPSAnJykgewogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBuZWVkbGVzID0gbmV3IE1hcCgpOwogICAgaWYgKCBwcm9wc1RvTWF0Y2ggPT09IHVuZGVmaW5lZCB8fCBwcm9wc1RvTWF0Y2ggPT09ICcnICkgeyByZXR1cm4gbmVlZGxlczsgfQogICAgY29uc3Qgb3B0aW9ucyA9IHsgY2FuTmVnYXRlOiB0cnVlIH07CiAgICBmb3IgKCBjb25zdCBuZWVkbGUgb2YgcHJvcHNUb01hdGNoLnNwbGl0KC9ccysvKSApIHsKICAgICAgICBjb25zdCBbIHByb3AsIHBhdHRlcm4gXSA9IG5lZWRsZS5zcGxpdCgnOicpOwogICAgICAgIGlmICggcHJvcCA9PT0gJycgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgaWYgKCBwYXR0ZXJuICE9PSB1bmRlZmluZWQgKSB7CiAgICAgICAgICAgIG5lZWRsZXMuc2V0KHByb3AsIHNhZmUuaW5pdFBhdHRlcm4ocGF0dGVybiwgb3B0aW9ucykpOwogICAgICAgIH0gZWxzZSBpZiAoIGltcGxpY2l0ICE9PSAnJyApIHsKICAgICAgICAgICAgbmVlZGxlcy5zZXQoaW1wbGljaXQsIHNhZmUuaW5pdFBhdHRlcm4ocHJvcCwgb3B0aW9ucykpOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBuZWVkbGVzOwp9CmZ1bmN0aW9uIG1hdGNoT2JqZWN0UHJvcGVydGllcyhwcm9wTmVlZGxlcywgLi4ub2JqcykgewogICAgaWYgKCBtYXRjaE9iamVjdFByb3BlcnRpZXMuZXh0cmFjdFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICBtYXRjaE9iamVjdFByb3BlcnRpZXMuZXh0cmFjdFByb3BlcnRpZXMgPSAoc3JjLCBkZXMsIHByb3BzKSA9PiB7CiAgICAgICAgICAgIGZvciAoIGNvbnN0IHAgb2YgcHJvcHMgKSB7CiAgICAgICAgICAgICAgICBjb25zdCB2ID0gc3JjW3BdOwogICAgICAgICAgICAgICAgaWYgKCB2ID09PSB1bmRlZmluZWQgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBkZXNbcF0gPSBzcmNbcF07CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBoYXlzdGFjayA9IHt9OwogICAgY29uc3QgcHJvcHMgPSBzYWZlLkFycmF5X2Zyb20ocHJvcE5lZWRsZXMua2V5cygpKTsKICAgIGZvciAoIGNvbnN0IG9iaiBvZiBvYmpzICkgewogICAgICAgIGlmICggb2JqIGluc3RhbmNlb2YgT2JqZWN0ID09PSBmYWxzZSApIHsgY29udGludWU7IH0KICAgICAgICBtYXRjaE9iamVjdFByb3BlcnRpZXMuZXh0cmFjdFByb3BlcnRpZXMob2JqLCBoYXlzdGFjaywgcHJvcHMpOwogICAgfQogICAgZm9yICggY29uc3QgWyBwcm9wLCBkZXRhaWxzIF0gb2YgcHJvcE5lZWRsZXMgKSB7CiAgICAgICAgbGV0IHZhbHVlID0gaGF5c3RhY2tbcHJvcF07CiAgICAgICAgaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgeyBjb250aW51ZTsgfQogICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyApIHsKICAgICAgICAgICAgdHJ5IHsgdmFsdWUgPSBzYWZlLkpTT05fc3RyaW5naWZ5KHZhbHVlKTsgfQogICAgICAgICAgICBjYXRjaChleCkgeyB9CiAgICAgICAgICAgIGlmICggdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyApIHsgY29udGludWU7IH0KICAgICAgICB9CiAgICAgICAgaWYgKCBzYWZlLnRlc3RQYXR0ZXJuKGRldGFpbHMsIHZhbHVlKSApIHsgY29udGludWU7IH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfQpmdW5jdGlvbiBnZW5lcmF0ZUNvbnRlbnRGbih0cnVzdGVkLCBkaXJlY3RpdmUpIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgcmFuZG9taXplID0gbGVuID0+IHsKICAgICAgICBjb25zdCBjaHVua3MgPSBbXTsKICAgICAgICBsZXQgdGV4dFNpemUgPSAwOwogICAgICAgIGRvIHsKICAgICAgICAgICAgY29uc3QgcyA9IHNhZmUuTWF0aF9yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMik7CiAgICAgICAgICAgIGNodW5rcy5wdXNoKHMpOwogICAgICAgICAgICB0ZXh0U2l6ZSArPSBzLmxlbmd0aDsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKCB0ZXh0U2l6ZSA8IGxlbiApOwogICAgICAgIHJldHVybiBjaHVua3Muam9pbignICcpLnNsaWNlKDAsIGxlbik7CiAgICB9OwogICAgaWYgKCBkaXJlY3RpdmUgPT09ICd0cnVlJyApIHsKICAgICAgICByZXR1cm4gcmFuZG9taXplKDEwKTsKICAgIH0KICAgIGlmICggZGlyZWN0aXZlID09PSAnZW1wdHlPYmonICkgewogICAgICAgIHJldHVybiAne30nOwogICAgfQogICAgaWYgKCBkaXJlY3RpdmUgPT09ICdlbXB0eUFycicgKSB7CiAgICAgICAgcmV0dXJuICdbXSc7CiAgICB9CiAgICBpZiAoIGRpcmVjdGl2ZSA9PT0gJ2VtcHR5U3RyJyApIHsKICAgICAgICByZXR1cm4gJyc7CiAgICB9CiAgICBpZiAoIGRpcmVjdGl2ZS5zdGFydHNXaXRoKCdsZW5ndGg6JykgKSB7CiAgICAgICAgY29uc3QgbWF0Y2ggPSAvXmxlbmd0aDooXGQrKSg/Oi0oXGQrKSk/JC8uZXhlYyhkaXJlY3RpdmUpOwogICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7IHJldHVybiAnJzsgfQogICAgICAgIGNvbnN0IG1pbiA9IHBhcnNlSW50KG1hdGNoWzFdLCAxMCk7CiAgICAgICAgY29uc3QgZXh0ZW50ID0gc2FmZS5NYXRoX21heChwYXJzZUludChtYXRjaFsyXSwgMTApIHx8IDAsIG1pbikgLSBtaW47CiAgICAgICAgY29uc3QgbGVuID0gc2FmZS5NYXRoX21pbihtaW4gKyBleHRlbnQgKiBzYWZlLk1hdGhfcmFuZG9tKCksIDUwMDAwMCk7CiAgICAgICAgcmV0dXJuIHJhbmRvbWl6ZShsZW4gfCAwKTsKICAgIH0KICAgIGlmICggZGlyZWN0aXZlLnN0YXJ0c1dpdGgoJ3dhcjonKSApIHsKICAgICAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMud2FyT3JpZ2luID09PSB1bmRlZmluZWQgKSB7IHJldHVybiAnJzsgfQogICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKICAgICAgICAgICAgY29uc3Qgd2FyT3JpZ2luID0gc2NyaXB0bGV0R2xvYmFscy53YXJPcmlnaW47CiAgICAgICAgICAgIGNvbnN0IHdhck5hbWUgPSBkaXJlY3RpdmUuc2xpY2UoNCk7CiAgICAgICAgICAgIGNvbnN0IGZ1bGxwYXRoID0gWyB3YXJPcmlnaW4sICcvJywgd2FyTmFtZSBdOwogICAgICAgICAgICBjb25zdCB3YXJTZWNyZXQgPSBzY3JpcHRsZXRHbG9iYWxzLndhclNlY3JldDsKICAgICAgICAgICAgaWYgKCB3YXJTZWNyZXQgIT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIGZ1bGxwYXRoLnB1c2goJz9zZWNyZXQ9Jywgd2FyU2VjcmV0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCB3YXJYSFIgPSBuZXcgc2FmZS5YTUxIdHRwUmVxdWVzdCgpOwogICAgICAgICAgICB3YXJYSFIucmVzcG9uc2VUeXBlID0gJ3RleHQnOwogICAgICAgICAgICB3YXJYSFIub25sb2FkZW5kID0gZXYgPT4gewogICAgICAgICAgICAgICAgcmVzb2x2ZShldi50YXJnZXQucmVzcG9uc2VUZXh0IHx8ICcnKTsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgd2FyWEhSLm9wZW4oJ0dFVCcsIGZ1bGxwYXRoLmpvaW4oJycpKTsKICAgICAgICAgICAgd2FyWEhSLnNlbmQoKTsKICAgICAgICB9KS5jYXRjaCgoICkgPT4gJycpOwogICAgfQogICAgaWYgKCB0cnVzdGVkICkgewogICAgICAgIHJldHVybiBkaXJlY3RpdmU7CiAgICB9CiAgICByZXR1cm4gJyc7Cn0KZnVuY3Rpb24gcHJldmVudFhockZuKAogICAgdHJ1c3RlZCA9IGZhbHNlLAogICAgcHJvcHNUb01hdGNoID0gJycsCiAgICBkaXJlY3RpdmUgPSAnJwopIHsKICAgIGlmICggdHlwZW9mIHByb3BzVG9NYXRjaCAhPT0gJ3N0cmluZycgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBzY3JpcHRsZXROYW1lID0gdHJ1c3RlZCA/ICd0cnVzdGVkLXByZXZlbnQteGhyJyA6ICdwcmV2ZW50LXhocic7CiAgICBjb25zdCBsb2dQcmVmaXggPSBzYWZlLm1ha2VMb2dQcmVmaXgoc2NyaXB0bGV0TmFtZSwgcHJvcHNUb01hdGNoLCBkaXJlY3RpdmUpOwogICAgY29uc3QgeGhySW5zdGFuY2VzID0gbmV3IFdlYWtNYXAoKTsKICAgIGNvbnN0IHByb3BOZWVkbGVzID0gcGFyc2VQcm9wZXJ0aWVzVG9NYXRjaChwcm9wc1RvTWF0Y2gsICd1cmwnKTsKICAgIGNvbnN0IHdhck9yaWdpbiA9IHNjcmlwdGxldEdsb2JhbHMud2FyT3JpZ2luOwogICAgY29uc3Qgc2FmZURpc3BhdGNoRXZlbnQgPSAoeGhyLCB0eXBlKSA9PiB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgeGhyLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KHR5cGUpKTsKICAgICAgICB9IGNhdGNoKF8pIHsKICAgICAgICB9CiAgICB9OwogICAgY29uc3QgWEhSQmVmb3JlID0gWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlOwogICAgc2VsZi5YTUxIdHRwUmVxdWVzdCA9IGNsYXNzIGV4dGVuZHMgc2VsZi5YTUxIdHRwUmVxdWVzdCB7CiAgICAgICAgb3BlbihtZXRob2QsIHVybCwgLi4uYXJncykgewogICAgICAgICAgICB4aHJJbnN0YW5jZXMuZGVsZXRlKHRoaXMpOwogICAgICAgICAgICBpZiAoIHdhck9yaWdpbiAhPT0gdW5kZWZpbmVkICYmIHVybC5zdGFydHNXaXRoKHdhck9yaWdpbikgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIub3BlbihtZXRob2QsIHVybCwgLi4uYXJncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgaGF5c3RhY2sgPSB7IG1ldGhvZCwgdXJsIH07CiAgICAgICAgICAgIGlmICggcHJvcHNUb01hdGNoID09PSAnJyAmJiBkaXJlY3RpdmUgPT09ICcnICkgewogICAgICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCBgQ2FsbGVkOiAke3NhZmUuSlNPTl9zdHJpbmdpZnkoaGF5c3RhY2ssIG51bGwsIDIpfWApOwogICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLm9wZW4obWV0aG9kLCB1cmwsIC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggbWF0Y2hPYmplY3RQcm9wZXJ0aWVzKHByb3BOZWVkbGVzLCBoYXlzdGFjaykgKSB7CiAgICAgICAgICAgICAgICBjb25zdCB4aHJEZXRhaWxzID0gT2JqZWN0LmFzc2lnbihoYXlzdGFjaywgewogICAgICAgICAgICAgICAgICAgIHhocjogdGhpcywKICAgICAgICAgICAgICAgICAgICBkZWZlcjogYXJncy5sZW5ndGggPT09IDAgfHwgISFhcmdzWzBdLAogICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZSwKICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICdkYXRlJzogJycsCiAgICAgICAgICAgICAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQtbGVuZ3RoJzogJycsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB1cmw6IGhheXN0YWNrLnVybCwKICAgICAgICAgICAgICAgICAgICBwcm9wczogewogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZTogeyB2YWx1ZTogJycgfSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUZXh0OiB7IHZhbHVlOiAnJyB9LAogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVhNTDogeyB2YWx1ZTogbnVsbCB9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHhockluc3RhbmNlcy5zZXQodGhpcywgeGhyRGV0YWlscyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHN1cGVyLm9wZW4obWV0aG9kLCB1cmwsIC4uLmFyZ3MpOwogICAgICAgIH0KICAgICAgICBzZW5kKC4uLmFyZ3MpIHsKICAgICAgICAgICAgY29uc3QgeGhyRGV0YWlscyA9IHhockluc3RhbmNlcy5nZXQodGhpcyk7CiAgICAgICAgICAgIGlmICggeGhyRGV0YWlscyA9PT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLnNlbmQoLi4uYXJncyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgeGhyRGV0YWlscy5oZWFkZXJzWydkYXRlJ10gPSAobmV3IERhdGUoKSkudG9VVENTdHJpbmcoKTsKICAgICAgICAgICAgbGV0IHhoclRleHQgPSAnJzsKICAgICAgICAgICAgc3dpdGNoICggdGhpcy5yZXNwb25zZVR5cGUgKSB7CiAgICAgICAgICAgIGNhc2UgJ2FycmF5YnVmZmVyJzoKICAgICAgICAgICAgICAgIHhockRldGFpbHMucHJvcHMucmVzcG9uc2UudmFsdWUgPSBuZXcgQXJyYXlCdWZmZXIoMCk7CiAgICAgICAgICAgICAgICB4aHJEZXRhaWxzLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID0gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnYmxvYic6CiAgICAgICAgICAgICAgICB4aHJEZXRhaWxzLnByb3BzLnJlc3BvbnNlLnZhbHVlID0gbmV3IEJsb2IoW10pOwogICAgICAgICAgICAgICAgeGhyRGV0YWlscy5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2RvY3VtZW50JzogewogICAgICAgICAgICAgICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpOwogICAgICAgICAgICAgICAgY29uc3QgZG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZygnJywgJ3RleHQvaHRtbCcpOwogICAgICAgICAgICAgICAgeGhyRGV0YWlscy5wcm9wcy5yZXNwb25zZS52YWx1ZSA9IGRvYzsKICAgICAgICAgICAgICAgIHhockRldGFpbHMucHJvcHMucmVzcG9uc2VYTUwudmFsdWUgPSBkb2M7CiAgICAgICAgICAgICAgICB4aHJEZXRhaWxzLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID0gJ3RleHQvaHRtbCc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlICdqc29uJzoKICAgICAgICAgICAgICAgIHhockRldGFpbHMucHJvcHMucmVzcG9uc2UudmFsdWUgPSB7fTsKICAgICAgICAgICAgICAgIHhockRldGFpbHMucHJvcHMucmVzcG9uc2VUZXh0LnZhbHVlID0gJ3t9JzsKICAgICAgICAgICAgICAgIHhockRldGFpbHMuaGVhZGVyc1snY29udGVudC10eXBlJ10gPSAnYXBwbGljYXRpb24vanNvbic7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgICAgaWYgKCBkaXJlY3RpdmUgPT09ICcnICkgeyBicmVhazsgfQogICAgICAgICAgICAgICAgeGhyVGV4dCA9IGdlbmVyYXRlQ29udGVudEZuKHRydXN0ZWQsIHhockRldGFpbHMuZGlyZWN0aXZlKTsKICAgICAgICAgICAgICAgIGlmICggeGhyVGV4dCBpbnN0YW5jZW9mIFByb21pc2UgKSB7CiAgICAgICAgICAgICAgICAgICAgeGhyVGV4dCA9IHhoclRleHQudGhlbih0ZXh0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgeGhyRGV0YWlscy5wcm9wcy5yZXNwb25zZS52YWx1ZSA9IHRleHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHhockRldGFpbHMucHJvcHMucmVzcG9uc2VUZXh0LnZhbHVlID0gdGV4dDsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgeGhyRGV0YWlscy5wcm9wcy5yZXNwb25zZS52YWx1ZSA9IHhoclRleHQ7CiAgICAgICAgICAgICAgICAgICAgeGhyRGV0YWlscy5wcm9wcy5yZXNwb25zZVRleHQudmFsdWUgPSB4aHJUZXh0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgeGhyRGV0YWlscy5oZWFkZXJzWydjb250ZW50LXR5cGUnXSA9ICd0ZXh0L3BsYWluJzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCB4aHJEZXRhaWxzLmRlZmVyID09PSBmYWxzZSApIHsKICAgICAgICAgICAgICAgIHhockRldGFpbHMuaGVhZGVyc1snY29udGVudC1sZW5ndGgnXSA9IGAke3hockRldGFpbHMucHJvcHMucmVzcG9uc2UudmFsdWV9YC5sZW5ndGg7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh4aHJEZXRhaWxzLnhociwgewogICAgICAgICAgICAgICAgICAgIHJlYWR5U3RhdGU6IHsgdmFsdWU6IDQgfSwKICAgICAgICAgICAgICAgICAgICByZXNwb25zZVVSTDogeyB2YWx1ZTogeGhyRGV0YWlscy51cmwgfSwKICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHsgdmFsdWU6IDIwMCB9LAogICAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6IHsgdmFsdWU6ICdPSycgfSwKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoeGhyRGV0YWlscy54aHIsIHhockRldGFpbHMucHJvcHMpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSh4aHJUZXh0KS50aGVuKCggKSA9PiB4aHJEZXRhaWxzKS50aGVuKGRldGFpbHMgPT4gewogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZGV0YWlscy54aHIsIHsKICAgICAgICAgICAgICAgICAgICByZWFkeVN0YXRlOiB7IHZhbHVlOiAxLCBjb25maWd1cmFibGU6IHRydWUgfSwKICAgICAgICAgICAgICAgICAgICByZXNwb25zZVVSTDogeyB2YWx1ZTogeGhyRGV0YWlscy51cmwgfSwKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgc2FmZURpc3BhdGNoRXZlbnQoZGV0YWlscy54aHIsICdyZWFkeXN0YXRlY2hhbmdlJyk7CiAgICAgICAgICAgICAgICByZXR1cm4gZGV0YWlsczsKICAgICAgICAgICAgfSkudGhlbihkZXRhaWxzID0+IHsKICAgICAgICAgICAgICAgIHhockRldGFpbHMuaGVhZGVyc1snY29udGVudC1sZW5ndGgnXSA9IGAke2RldGFpbHMucHJvcHMucmVzcG9uc2UudmFsdWV9YC5sZW5ndGg7CiAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhkZXRhaWxzLnhociwgewogICAgICAgICAgICAgICAgICAgIHJlYWR5U3RhdGU6IHsgdmFsdWU6IDIsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9LAogICAgICAgICAgICAgICAgICAgIHN0YXR1czogeyB2YWx1ZTogMjAwIH0sCiAgICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogeyB2YWx1ZTogJ09LJyB9LAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBzYWZlRGlzcGF0Y2hFdmVudChkZXRhaWxzLnhociwgJ3JlYWR5c3RhdGVjaGFuZ2UnKTsKICAgICAgICAgICAgICAgIHJldHVybiBkZXRhaWxzOwogICAgICAgICAgICB9KS50aGVuKGRldGFpbHMgPT4gewogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZGV0YWlscy54aHIsIHsKICAgICAgICAgICAgICAgICAgICByZWFkeVN0YXRlOiB7IHZhbHVlOiAzLCBjb25maWd1cmFibGU6IHRydWUgfSwKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZGV0YWlscy54aHIsIGRldGFpbHMucHJvcHMpOwogICAgICAgICAgICAgICAgc2FmZURpc3BhdGNoRXZlbnQoZGV0YWlscy54aHIsICdyZWFkeXN0YXRlY2hhbmdlJyk7CiAgICAgICAgICAgICAgICByZXR1cm4gZGV0YWlsczsKICAgICAgICAgICAgfSkudGhlbihkZXRhaWxzID0+IHsKICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGRldGFpbHMueGhyLCB7CiAgICAgICAgICAgICAgICAgICAgcmVhZHlTdGF0ZTogeyB2YWx1ZTogNCB9LAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBzYWZlRGlzcGF0Y2hFdmVudChkZXRhaWxzLnhociwgJ3JlYWR5c3RhdGVjaGFuZ2UnKTsKICAgICAgICAgICAgICAgIHNhZmVEaXNwYXRjaEV2ZW50KGRldGFpbHMueGhyLCAnbG9hZCcpOwogICAgICAgICAgICAgICAgc2FmZURpc3BhdGNoRXZlbnQoZGV0YWlscy54aHIsICdsb2FkZW5kJyk7CiAgICAgICAgICAgICAgICBzYWZlLnVib0xvZyhsb2dQcmVmaXgsIGBQcmV2ZW50ZWQgd2l0aCByZXNwb25zZTpcbiR7ZGV0YWlscy54aHIucmVzcG9uc2V9YCk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBnZXRSZXNwb25zZUhlYWRlcihoZWFkZXJOYW1lKSB7CiAgICAgICAgICAgIGNvbnN0IHhockRldGFpbHMgPSB4aHJJbnN0YW5jZXMuZ2V0KHRoaXMpOwogICAgICAgICAgICBpZiAoIHhockRldGFpbHMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnJlYWR5U3RhdGUgPCB0aGlzLkhFQURFUlNfUkVDRUlWRUQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuZ2V0UmVzcG9uc2VIZWFkZXIoaGVhZGVyTmFtZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB4aHJEZXRhaWxzLmhlYWRlcnNbaGVhZGVyTmFtZS50b0xvd2VyQ2FzZSgpXTsKICAgICAgICAgICAgaWYgKCB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSAnJyApIHsgcmV0dXJuIHZhbHVlOyB9CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgICAgICBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSB7CiAgICAgICAgICAgIGNvbnN0IHhockRldGFpbHMgPSB4aHJJbnN0YW5jZXMuZ2V0KHRoaXMpOwogICAgICAgICAgICBpZiAoIHhockRldGFpbHMgPT09IHVuZGVmaW5lZCB8fCB0aGlzLnJlYWR5U3RhdGUgPCB0aGlzLkhFQURFUlNfUkVDRUlWRUQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3Qgb3V0ID0gW107CiAgICAgICAgICAgIGZvciAoIGNvbnN0IFsgbmFtZSwgdmFsdWUgXSBvZiBPYmplY3QuZW50cmllcyh4aHJEZXRhaWxzLmhlYWRlcnMpICkgewogICAgICAgICAgICAgICAgaWYgKCAhdmFsdWUgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBvdXQucHVzaChgJHtuYW1lfTogJHt2YWx1ZX1gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIG91dC5sZW5ndGggIT09IDAgKSB7IG91dC5wdXNoKCcnKTsgfQogICAgICAgICAgICByZXR1cm4gb3V0LmpvaW4oJ1xyXG4nKTsKICAgICAgICB9CiAgICB9OwogICAgc2VsZi5YTUxIdHRwUmVxdWVzdC5wcm90b3R5cGUub3Blbi50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBYSFJCZWZvcmUub3Blbi50b1N0cmluZygpOwogICAgfTsKICAgIHNlbGYuWE1MSHR0cFJlcXVlc3QucHJvdG90eXBlLnNlbmQudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gWEhSQmVmb3JlLnNlbmQudG9TdHJpbmcoKTsKICAgIH07CiAgICBzZWxmLlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5nZXRSZXNwb25zZUhlYWRlci50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBYSFJCZWZvcmUuZ2V0UmVzcG9uc2VIZWFkZXIudG9TdHJpbmcoKTsKICAgIH07CiAgICBzZWxmLlhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5nZXRBbGxSZXNwb25zZUhlYWRlcnMudG9TdHJpbmcgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gWEhSQmVmb3JlLmdldEFsbFJlc3BvbnNlSGVhZGVycy50b1N0cmluZygpOwogICAgfTsKfQoKICAoZnVuY3Rpb24gdHJ1c3RlZFByZXZlbnRYaHIoLi4uYXJncykgewogICAgcmV0dXJuIHByZXZlbnRYaHJGbih0cnVlLCAuLi5hcmdzKTsKfSkoLi4uYXJncy5zbGljZSgwLCBsYXN0X2FyZ19pbmRleCkpCn0="},{"name":"trusted-prevent-dom-bypass.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBwcm94eUFwcGx5Rm4oCiAgICB0YXJnZXQgPSAnJywKICAgIGhhbmRsZXIgPSAnJwopIHsKICAgIGxldCBjb250ZXh0ID0gZ2xvYmFsVGhpczsKICAgIGxldCBwcm9wID0gdGFyZ2V0OwogICAgZm9yICg7OykgewogICAgICAgIGNvbnN0IHBvcyA9IHByb3AuaW5kZXhPZignLicpOwogICAgICAgIGlmICggcG9zID09PSAtMSApIHsgYnJlYWs7IH0KICAgICAgICBjb250ZXh0ID0gY29udGV4dFtwcm9wLnNsaWNlKDAsIHBvcyldOwogICAgICAgIGlmICggY29udGV4dCBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIHByb3AgPSBwcm9wLnNsaWNlKHBvcysxKTsKICAgIH0KICAgIGNvbnN0IGZuID0gY29udGV4dFtwcm9wXTsKICAgIGlmICggdHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nICkgeyByZXR1cm47IH0KICAgIGlmICggcHJveHlBcHBseUZuLkN0b3JDb250ZXh0ID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dCA9IGNsYXNzIHsKICAgICAgICAgICAgY29uc3RydWN0b3IoLi4uYXJncykgewogICAgICAgICAgICAgICAgdGhpcy5pbml0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGluaXQoY2FsbEZuLCBjYWxsQXJncykgewogICAgICAgICAgICAgICAgdGhpcy5jYWxsRm4gPSBjYWxsRm47CiAgICAgICAgICAgICAgICB0aGlzLmNhbGxBcmdzID0gY2FsbEFyZ3M7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgICAgfQogICAgICAgICAgICByZWZsZWN0KCkgewogICAgICAgICAgICAgICAgY29uc3QgciA9IFJlZmxlY3QuY29uc3RydWN0KHRoaXMuY2FsbEZuLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5jdG9yQ29udGV4dHMucHVzaCh0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN0YXRpYyBmYWN0b3J5KC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwcm94eUFwcGx5Rm4uY3RvckNvbnRleHRzLmxlbmd0aCAhPT0gMAogICAgICAgICAgICAgICAgICAgID8gcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkN0b3JDb250ZXh0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5BcHBseUNvbnRleHQgPSBjbGFzcyB7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuaW5pdCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbml0KGNhbGxGbiwgdGhpc0FyZywgY2FsbEFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gY2FsbEZuOwogICAgICAgICAgICAgICAgdGhpcy50aGlzQXJnID0gdGhpc0FyZzsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEFyZ3MgPSBjYWxsQXJnczsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlZmxlY3QoKSB7CiAgICAgICAgICAgICAgICBjb25zdCByID0gUmVmbGVjdC5hcHBseSh0aGlzLmNhbGxGbiwgdGhpcy50aGlzQXJnLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy50aGlzQXJnID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5hcHBseUNvbnRleHRzLnB1c2godGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGF0aWMgZmFjdG9yeSguLi5hcmdzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcHJveHlBcHBseUZuLmFwcGx5Q29udGV4dHMubGVuZ3RoICE9PSAwCiAgICAgICAgICAgICAgICAgICAgPyBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkFwcGx5Q29udGV4dCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBmblN0ciA9IGZuLnRvU3RyaW5nKCk7CiAgICBjb25zdCB0b1N0cmluZyA9IChmdW5jdGlvbiB0b1N0cmluZygpIHsgcmV0dXJuIGZuU3RyOyB9KS5iaW5kKG51bGwpOwogICAgY29uc3QgcHJveHlEZXRhaWxzID0gewogICAgICAgIGFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICByZXR1cm4gaGFuZGxlcihwcm94eUFwcGx5Rm4uQXBwbHlDb250ZXh0LmZhY3RvcnkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSk7CiAgICAgICAgfSwKICAgICAgICBnZXQodGFyZ2V0LCBwcm9wKSB7CiAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ3RvU3RyaW5nJyApIHsgcmV0dXJuIHRvU3RyaW5nOyB9CiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3ApOwogICAgICAgIH0sCiAgICB9OwogICAgaWYgKCBmbi5wcm90b3R5cGU/LmNvbnN0cnVjdG9yID09PSBmbiApIHsKICAgICAgICBwcm94eURldGFpbHMuY29uc3RydWN0ID0gZnVuY3Rpb24odGFyZ2V0LCBhcmdzKSB7CiAgICAgICAgICAgIHJldHVybiBoYW5kbGVyKHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dC5mYWN0b3J5KHRhcmdldCwgYXJncykpOwogICAgICAgIH07CiAgICB9CiAgICBjb250ZXh0W3Byb3BdID0gbmV3IFByb3h5KGZuLCBwcm94eURldGFpbHMpOwp9CgogIChmdW5jdGlvbiB0cnVzdGVkUHJldmVudERvbUJ5cGFzcygKICAgIG1ldGhvZFBhdGggPSAnJywKICAgIHRhcmdldFByb3AgPSAnJwopIHsKICAgIGlmICggbWV0aG9kUGF0aCA9PT0gJycgKSB7IHJldHVybjsgfQogICAgY29uc3Qgc2FmZSA9IHNhZmVTZWxmKCk7CiAgICBjb25zdCBsb2dQcmVmaXggPSBzYWZlLm1ha2VMb2dQcmVmaXgoJ3RydXN0ZWQtcHJldmVudC1kb20tYnlwYXNzJywgbWV0aG9kUGF0aCwgdGFyZ2V0UHJvcCk7CiAgICBwcm94eUFwcGx5Rm4obWV0aG9kUGF0aCwgZnVuY3Rpb24oY29udGV4dCkgewogICAgICAgIGNvbnN0IGVsZW1zID0gbmV3IFNldChjb250ZXh0LmNhbGxBcmdzLmZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpOwogICAgICAgIGNvbnN0IHIgPSBjb250ZXh0LnJlZmxlY3QoKTsKICAgICAgICBpZiAoIGVsZW1zLmxlbmd0aCA9PT0gMCApIHsgcmV0dXJuIHI7IH0KICAgICAgICBmb3IgKCBjb25zdCBlbGVtIG9mIGVsZW1zICkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKCBgJHtlbGVtLmNvbnRlbnRXaW5kb3d9YCAhPT0gJ1tvYmplY3QgV2luZG93XScgKSB7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICBpZiAoIGVsZW0uY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmICE9PSAnYWJvdXQ6YmxhbmsnICkgewogICAgICAgICAgICAgICAgICAgIGlmICggZWxlbS5jb250ZW50V2luZG93LmxvY2F0aW9uLmhyZWYgIT09IHNlbGYubG9jYXRpb24uaHJlZiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCB0YXJnZXRQcm9wICE9PSAnJyApIHsKICAgICAgICAgICAgICAgICAgICBlbGVtLmNvbnRlbnRXaW5kb3dbdGFyZ2V0UHJvcF0gPSBzZWxmW3RhcmdldFByb3BdOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbSwgJ2NvbnRlbnRXaW5kb3cnLCB7IHZhbHVlOiBzZWxmIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2FmZS51Ym9Mb2cobG9nUHJlZml4LCAnQnlwYXNzIHByZXZlbnRlZCcpOwogICAgICAgICAgICB9IGNhdGNoKF8pIHsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gcjsKICAgIH0pOwp9KSguLi5hcmdzLnNsaWNlKDAsIGxhc3RfYXJnX2luZGV4KSkKfQ=="},{"name":"trusted-override-element-method.js","aliases":[],"kind":{"mime":"application/javascript"},"content":"ewogIGNvbnN0IGFyZ3MgPSBbInt7MX19IiwgInt7Mn19IiwgInt7M319IiwgInt7NH19IiwgInt7NX19IiwgInt7Nn19IiwgInt7N319IiwgInt7OH19IiwgInt7OX19Il07CiAgbGV0IGxhc3RfYXJnX2luZGV4ID0gMDsKICBmb3IgKGNvbnN0IGFyZ19pbmRleCBpbiBhcmdzKSB7CiAgICBpZiAoYXJnc1thcmdfaW5kZXhdID09PSAne3snICsgKE51bWJlcihhcmdfaW5kZXgpICsgMSkgKyAnfX0nKSB7CiAgICAgIGJyZWFrOwogICAgfQogICAgbGFzdF9hcmdfaW5kZXggKz0gMTsKICB9CiAgZnVuY3Rpb24gdmFsaWRhdGVDb25zdGFudEZuKHRydXN0ZWQsIHJhdywgZXh0cmFBcmdzID0ge30pIHsKICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgbGV0IHZhbHVlOwogICAgaWYgKCByYXcgPT09ICd1bmRlZmluZWQnICkgewogICAgICAgIHZhbHVlID0gdW5kZWZpbmVkOwogICAgfSBlbHNlIGlmICggcmF3ID09PSAnZmFsc2UnICkgewogICAgICAgIHZhbHVlID0gZmFsc2U7CiAgICB9IGVsc2UgaWYgKCByYXcgPT09ICd0cnVlJyApIHsKICAgICAgICB2YWx1ZSA9IHRydWU7CiAgICB9IGVsc2UgaWYgKCByYXcgPT09ICdudWxsJyApIHsKICAgICAgICB2YWx1ZSA9IG51bGw7CiAgICB9IGVsc2UgaWYgKCByYXcgPT09ICInJyIgfHwgcmF3ID09PSAnJyApIHsKICAgICAgICB2YWx1ZSA9ICcnOwogICAgfSBlbHNlIGlmICggcmF3ID09PSAnW10nIHx8IHJhdyA9PT0gJ2VtcHR5QXJyJyApIHsKICAgICAgICB2YWx1ZSA9IFtdOwogICAgfSBlbHNlIGlmICggcmF3ID09PSAne30nIHx8IHJhdyA9PT0gJ2VtcHR5T2JqJyApIHsKICAgICAgICB2YWx1ZSA9IHt9OwogICAgfSBlbHNlIGlmICggcmF3ID09PSAnbm9vcEZ1bmMnICkgewogICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKXt9OwogICAgfSBlbHNlIGlmICggcmF3ID09PSAndHJ1ZUZ1bmMnICkgewogICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKXsgcmV0dXJuIHRydWU7IH07CiAgICB9IGVsc2UgaWYgKCByYXcgPT09ICdmYWxzZUZ1bmMnICkgewogICAgICAgIHZhbHVlID0gZnVuY3Rpb24oKXsgcmV0dXJuIGZhbHNlOyB9OwogICAgfSBlbHNlIGlmICggcmF3ID09PSAndGhyb3dGdW5jJyApIHsKICAgICAgICB2YWx1ZSA9IGZ1bmN0aW9uKCl7IHRocm93ICcnOyB9OwogICAgfSBlbHNlIGlmICggL14tP1xkKyQvLnRlc3QocmF3KSApIHsKICAgICAgICB2YWx1ZSA9IHBhcnNlSW50KHJhdyk7CiAgICAgICAgaWYgKCBpc05hTihyYXcpICkgeyByZXR1cm47IH0KICAgICAgICBpZiAoIE1hdGguYWJzKHJhdykgPiAweDdGRkYgKSB7IHJldHVybjsgfQogICAgfSBlbHNlIGlmICggdHJ1c3RlZCApIHsKICAgICAgICBpZiAoIHJhdy5zdGFydHNXaXRoKCdqc29uOicpICkgewogICAgICAgICAgICB0cnkgeyB2YWx1ZSA9IHNhZmUuSlNPTl9wYXJzZShyYXcuc2xpY2UoNSkpOyB9IGNhdGNoKGV4KSB7IHJldHVybjsgfQogICAgICAgIH0gZWxzZSBpZiAoIHJhdy5zdGFydHNXaXRoKCd7JykgJiYgcmF3LmVuZHNXaXRoKCd9JykgKSB7CiAgICAgICAgICAgIHRyeSB7IHZhbHVlID0gc2FmZS5KU09OX3BhcnNlKHJhdykudmFsdWU7IH0gY2F0Y2goZXgpIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoIGV4dHJhQXJncy5hcyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgIGlmICggZXh0cmFBcmdzLmFzID09PSAnZnVuY3Rpb24nICkgewogICAgICAgICAgICByZXR1cm4gKCApID0+IHZhbHVlOwogICAgICAgIH0gZWxzZSBpZiAoIGV4dHJhQXJncy5hcyA9PT0gJ2NhbGxiYWNrJyApIHsKICAgICAgICAgICAgcmV0dXJuICggKSA9PiAoKCApID0+IHZhbHVlKTsKICAgICAgICB9IGVsc2UgaWYgKCBleHRyYUFyZ3MuYXMgPT09ICdyZXNvbHZlZCcgKSB7CiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpOwogICAgICAgIH0gZWxzZSBpZiAoIGV4dHJhQXJncy5hcyA9PT0gJ3JlamVjdGVkJyApIHsKICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHZhbHVlKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdmFsdWU7Cn0KZnVuY3Rpb24gc2FmZVNlbGYoKSB7CiAgICBpZiAoIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGYgKSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdGxldEdsb2JhbHMuc2FmZVNlbGY7CiAgICB9CiAgICBjb25zdCBzZWxmID0gZ2xvYmFsVGhpczsKICAgIGNvbnN0IHNhZmUgPSB7CiAgICAgICAgJ0FycmF5X2Zyb20nOiBBcnJheS5mcm9tLAogICAgICAgICdFcnJvcic6IHNlbGYuRXJyb3IsCiAgICAgICAgJ0Z1bmN0aW9uX3RvU3RyaW5nRm4nOiBzZWxmLkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZywKICAgICAgICAnRnVuY3Rpb25fdG9TdHJpbmcnOiB0aGlzQXJnID0+IHNhZmUuRnVuY3Rpb25fdG9TdHJpbmdGbi5jYWxsKHRoaXNBcmcpLAogICAgICAgICdNYXRoX2Zsb29yJzogTWF0aC5mbG9vciwKICAgICAgICAnTWF0aF9tYXgnOiBNYXRoLm1heCwKICAgICAgICAnTWF0aF9taW4nOiBNYXRoLm1pbiwKICAgICAgICAnTWF0aF9yYW5kb20nOiBNYXRoLnJhbmRvbSwKICAgICAgICAnT2JqZWN0JzogT2JqZWN0LAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydHknOiBPYmplY3QuZGVmaW5lUHJvcGVydHkuYmluZChPYmplY3QpLAogICAgICAgICdPYmplY3RfZGVmaW5lUHJvcGVydGllcyc6IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2Zyb21FbnRyaWVzJzogT2JqZWN0LmZyb21FbnRyaWVzLmJpbmQoT2JqZWN0KSwKICAgICAgICAnT2JqZWN0X2dldE93blByb3BlcnR5RGVzY3JpcHRvcic6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IuYmluZChPYmplY3QpLAogICAgICAgICdSZWdFeHAnOiBzZWxmLlJlZ0V4cCwKICAgICAgICAnUmVnRXhwX3Rlc3QnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUudGVzdCwKICAgICAgICAnUmVnRXhwX2V4ZWMnOiBzZWxmLlJlZ0V4cC5wcm90b3R5cGUuZXhlYywKICAgICAgICAnUmVxdWVzdF9jbG9uZSc6IHNlbGYuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUsCiAgICAgICAgJ1N0cmluZ19mcm9tQ2hhckNvZGUnOiBTdHJpbmcuZnJvbUNoYXJDb2RlLAogICAgICAgICdYTUxIdHRwUmVxdWVzdCc6IHNlbGYuWE1MSHR0cFJlcXVlc3QsCiAgICAgICAgJ2FkZEV2ZW50TGlzdGVuZXInOiBzZWxmLkV2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyLAogICAgICAgICdyZW1vdmVFdmVudExpc3RlbmVyJzogc2VsZi5FdmVudFRhcmdldC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciwKICAgICAgICAnZmV0Y2gnOiBzZWxmLmZldGNoLAogICAgICAgICdKU09OJzogc2VsZi5KU09OLAogICAgICAgICdKU09OX3BhcnNlRm4nOiBzZWxmLkpTT04ucGFyc2UsCiAgICAgICAgJ0pTT05fc3RyaW5naWZ5Rm4nOiBzZWxmLkpTT04uc3RyaW5naWZ5LAogICAgICAgICdKU09OX3BhcnNlJzogKC4uLmFyZ3MpID0+IHNhZmUuSlNPTl9wYXJzZUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnSlNPTl9zdHJpbmdpZnknOiAoLi4uYXJncykgPT4gc2FmZS5KU09OX3N0cmluZ2lmeUZuLmNhbGwoc2FmZS5KU09OLCAuLi5hcmdzKSwKICAgICAgICAnbG9nJzogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKICAgICAgICAvLyBQcm9wZXJ0aWVzCiAgICAgICAgbG9nTGV2ZWw6IDAsCiAgICAgICAgLy8gTWV0aG9kcwogICAgICAgIG1ha2VMb2dQcmVmaXgoLi4uYXJncykgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIgJiYgYFske2FyZ3Muam9pbignIFx1MjA1RCAnKX1dYCB8fCAnJzsKICAgICAgICB9LAogICAgICAgIHVib0xvZyguLi5hcmdzKSB7CiAgICAgICAgICAgIGlmICggdGhpcy5zZW5kVG9Mb2dnZXIgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYXJncyA9PT0gdW5kZWZpbmVkIHx8IGFyZ3NbMF0gPT09ICcnICkgeyByZXR1cm47IH0KICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvTG9nZ2VyKCdpbmZvJywgLi4uYXJncyk7CiAgICAgICAgICAgIAogICAgICAgIH0sCiAgICAgICAgdWJvRXJyKC4uLmFyZ3MpIHsKICAgICAgICAgICAgaWYgKCB0aGlzLnNlbmRUb0xvZ2dlciA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm47IH0KICAgICAgICAgICAgaWYgKCBhcmdzID09PSB1bmRlZmluZWQgfHwgYXJnc1swXSA9PT0gJycgKSB7IHJldHVybjsgfQogICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Mb2dnZXIoJ2Vycm9yJywgLi4uYXJncyk7CiAgICAgICAgfSwKICAgICAgICBlc2NhcGVSZWdleENoYXJzKHMpIHsKICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xdXFxdL2csICdcXCQmJyk7CiAgICAgICAgfSwKICAgICAgICBpbml0UGF0dGVybihwYXR0ZXJuLCBvcHRpb25zID0ge30pIHsKICAgICAgICAgICAgaWYgKCBwYXR0ZXJuID09PSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoQWxsOiB0cnVlLCBleHBlY3Q6IHRydWUgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb25zdCBleHBlY3QgPSAob3B0aW9ucy5jYW5OZWdhdGUgIT09IHRydWUgfHwgcGF0dGVybi5zdGFydHNXaXRoKCchJykgPT09IGZhbHNlKTsKICAgICAgICAgICAgaWYgKCBleHBlY3QgPT09IGZhbHNlICkgewogICAgICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm4uc2xpY2UoMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggIT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHJlOiBuZXcgdGhpcy5SZWdFeHAoCiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoWzFdLAogICAgICAgICAgICAgICAgICAgICAgICBtYXRjaFsyXSB8fCBvcHRpb25zLmZsYWdzCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBleHBlY3QsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggb3B0aW9ucy5mbGFncyAhPT0gdW5kZWZpbmVkICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICByZTogbmV3IHRoaXMuUmVnRXhwKHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKSwKICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5mbGFncwogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgZXhwZWN0LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4geyBwYXR0ZXJuLCBleHBlY3QgfTsKICAgICAgICB9LAogICAgICAgIHRlc3RQYXR0ZXJuKGRldGFpbHMsIGhheXN0YWNrKSB7CiAgICAgICAgICAgIGlmICggZGV0YWlscy5tYXRjaEFsbCApIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgaWYgKCBkZXRhaWxzLnJlICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuUmVnRXhwX3Rlc3QuY2FsbChkZXRhaWxzLnJlLCBoYXlzdGFjaykgPT09IGRldGFpbHMuZXhwZWN0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBoYXlzdGFjay5pbmNsdWRlcyhkZXRhaWxzLnBhdHRlcm4pID09PSBkZXRhaWxzLmV4cGVjdDsKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5Ub1JlZ2V4KHBhdHRlcm4sIGZsYWdzID0gdW5kZWZpbmVkLCB2ZXJiYXRpbSA9IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICggcGF0dGVybiA9PT0gJycgKSB7IHJldHVybiAvXi87IH0KICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSAvXlwvKC4rKVwvKFtnaW1zdV0qKSQvLmV4ZWMocGF0dGVybik7CiAgICAgICAgICAgIGlmICggbWF0Y2ggPT09IG51bGwgKSB7CiAgICAgICAgICAgICAgICBjb25zdCByZVN0ciA9IHRoaXMuZXNjYXBlUmVnZXhDaGFycyhwYXR0ZXJuKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUmVnRXhwKHZlcmJhdGltID8gYF4ke3JlU3RyfSRgIDogcmVTdHIsIGZsYWdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAobWF0Y2hbMV0sIG1hdGNoWzJdIHx8IHVuZGVmaW5lZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2goZXgpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gL14vOwogICAgICAgIH0sCiAgICAgICAgZ2V0RXh0cmFBcmdzKGFyZ3MsIG9mZnNldCA9IDApIHsKICAgICAgICAgICAgY29uc3QgZW50cmllcyA9IGFyZ3Muc2xpY2Uob2Zmc2V0KS5yZWR1Y2UoKG91dCwgdiwgaSwgYSkgPT4gewogICAgICAgICAgICAgICAgaWYgKCAoaSAmIDEpID09PSAwICkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gYVtpKzFdOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gL15cZCskLy50ZXN0KHJhd1ZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KHJhd1ZhbHVlLCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgOiByYXdWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBvdXQucHVzaChbIGFbaV0sIHZhbHVlIF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIG91dDsKICAgICAgICAgICAgfSwgW10pOwogICAgICAgICAgICByZXR1cm4gdGhpcy5PYmplY3RfZnJvbUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgfSwKICAgICAgICBvbklkbGUoZm4sIG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCBzZWxmLnJlcXVlc3RJZGxlQ2FsbGJhY2sgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrKGZuLCBvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc2VsZi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZm4pOwogICAgICAgIH0sCiAgICAgICAgb2ZmSWRsZShpZCkgewogICAgICAgICAgICBpZiAoIHNlbGYucmVxdWVzdElkbGVDYWxsYmFjayApIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNhbmNlbElkbGVDYWxsYmFjayhpZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpOwogICAgICAgIH0KICAgIH07CiAgICBzY3JpcHRsZXRHbG9iYWxzLnNhZmVTZWxmID0gc2FmZTsKICAgIGlmICggc2NyaXB0bGV0R2xvYmFscy5iY1NlY3JldCA9PT0gdW5kZWZpbmVkICkgeyByZXR1cm4gc2FmZTsgfQogICAgLy8gVGhpcyBpcyBleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGxvZ2dlciBpcyBvcGVuZWQKICAgIHNhZmUubG9nTGV2ZWwgPSBzY3JpcHRsZXRHbG9iYWxzLmxvZ0xldmVsIHx8IDE7CiAgICBsZXQgbGFzdExvZ1R5cGUgPSAnJzsKICAgIGxldCBsYXN0TG9nVGV4dCA9ICcnOwogICAgbGV0IGxhc3RMb2dUaW1lID0gMDsKICAgIHNhZmUudG9Mb2dUZXh0ID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICBpZiAoIGFyZ3MubGVuZ3RoID09PSAwICkgeyByZXR1cm47IH0KICAgICAgICBjb25zdCB0ZXh0ID0gYFske2RvY3VtZW50LmxvY2F0aW9uLmhvc3RuYW1lIHx8IGRvY3VtZW50LmxvY2F0aW9uLmhyZWZ9XSR7YXJncy5qb2luKCcgJyl9YDsKICAgICAgICBpZiAoIHRleHQgPT09IGxhc3RMb2dUZXh0ICYmIHR5cGUgPT09IGxhc3RMb2dUeXBlICkgewogICAgICAgICAgICBpZiAoIChEYXRlLm5vdygpIC0gbGFzdExvZ1RpbWUpIDwgNTAwMCApIHsgcmV0dXJuOyB9CiAgICAgICAgfQogICAgICAgIGxhc3RMb2dUeXBlID0gdHlwZTsKICAgICAgICBsYXN0TG9nVGV4dCA9IHRleHQ7CiAgICAgICAgbGFzdExvZ1RpbWUgPSBEYXRlLm5vdygpOwogICAgICAgIHJldHVybiB0ZXh0OwogICAgfTsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgYmMgPSBuZXcgc2VsZi5Ccm9hZGNhc3RDaGFubmVsKHNjcmlwdGxldEdsb2JhbHMuYmNTZWNyZXQpOwogICAgICAgIGxldCBiY0J1ZmZlciA9IFtdOwogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIGlmICggYmNCdWZmZXIgPT09IHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgIHJldHVybiBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJjQnVmZmVyLnB1c2goeyB0eXBlLCB0ZXh0IH0pOwogICAgICAgIH07CiAgICAgICAgYmMub25tZXNzYWdlID0gZXYgPT4gewogICAgICAgICAgICBjb25zdCBtc2cgPSBldi5kYXRhOwogICAgICAgICAgICBzd2l0Y2ggKCBtc2cgKSB7CiAgICAgICAgICAgIGNhc2UgJ2lhbXJlYWR5ISc6CiAgICAgICAgICAgICAgICBpZiAoIGJjQnVmZmVyID09PSB1bmRlZmluZWQgKSB7IGJyZWFrOyB9CiAgICAgICAgICAgICAgICBiY0J1ZmZlci5mb3JFYWNoKCh7IHR5cGUsIHRleHQgfSkgPT4KICAgICAgICAgICAgICAgICAgICBiYy5wb3N0TWVzc2FnZSh7IHdoYXQ6ICdtZXNzYWdlVG9Mb2dnZXInLCB0eXBlLCB0ZXh0IH0pCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmNCdWZmZXIgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2V0U2NyaXB0bGV0TG9nTGV2ZWxUb09uZSc6CiAgICAgICAgICAgICAgICBzYWZlLmxvZ0xldmVsID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZXRTY3JpcHRsZXRMb2dMZXZlbFRvVHdvJzoKICAgICAgICAgICAgICAgIHNhZmUubG9nTGV2ZWwgPSAyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIGJjLnBvc3RNZXNzYWdlKCdhcmV5b3VyZWFkeT8nKTsKICAgIH0gY2F0Y2goXykgewogICAgICAgIHNhZmUuc2VuZFRvTG9nZ2VyID0gKHR5cGUsIC4uLmFyZ3MpID0+IHsKICAgICAgICAgICAgY29uc3QgdGV4dCA9IHNhZmUudG9Mb2dUZXh0KHR5cGUsIC4uLmFyZ3MpOwogICAgICAgICAgICBpZiAoIHRleHQgPT09IHVuZGVmaW5lZCApIHsgcmV0dXJuOyB9CiAgICAgICAgICAgIHNhZmUubG9nKGB1Qk8gJHt0ZXh0fWApOwogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gc2FmZTsKfQpmdW5jdGlvbiBwcm94eUFwcGx5Rm4oCiAgICB0YXJnZXQgPSAnJywKICAgIGhhbmRsZXIgPSAnJwopIHsKICAgIGxldCBjb250ZXh0ID0gZ2xvYmFsVGhpczsKICAgIGxldCBwcm9wID0gdGFyZ2V0OwogICAgZm9yICg7OykgewogICAgICAgIGNvbnN0IHBvcyA9IHByb3AuaW5kZXhPZignLicpOwogICAgICAgIGlmICggcG9zID09PSAtMSApIHsgYnJlYWs7IH0KICAgICAgICBjb250ZXh0ID0gY29udGV4dFtwcm9wLnNsaWNlKDAsIHBvcyldOwogICAgICAgIGlmICggY29udGV4dCBpbnN0YW5jZW9mIE9iamVjdCA9PT0gZmFsc2UgKSB7IHJldHVybjsgfQogICAgICAgIHByb3AgPSBwcm9wLnNsaWNlKHBvcysxKTsKICAgIH0KICAgIGNvbnN0IGZuID0gY29udGV4dFtwcm9wXTsKICAgIGlmICggdHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nICkgeyByZXR1cm47IH0KICAgIGlmICggcHJveHlBcHBseUZuLkN0b3JDb250ZXh0ID09PSB1bmRlZmluZWQgKSB7CiAgICAgICAgcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dCA9IGNsYXNzIHsKICAgICAgICAgICAgY29uc3RydWN0b3IoLi4uYXJncykgewogICAgICAgICAgICAgICAgdGhpcy5pbml0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGluaXQoY2FsbEZuLCBjYWxsQXJncykgewogICAgICAgICAgICAgICAgdGhpcy5jYWxsRm4gPSBjYWxsRm47CiAgICAgICAgICAgICAgICB0aGlzLmNhbGxBcmdzID0gY2FsbEFyZ3M7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgICAgfQogICAgICAgICAgICByZWZsZWN0KCkgewogICAgICAgICAgICAgICAgY29uc3QgciA9IFJlZmxlY3QuY29uc3RydWN0KHRoaXMuY2FsbEZuLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5jdG9yQ29udGV4dHMucHVzaCh0aGlzKTsKICAgICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHN0YXRpYyBmYWN0b3J5KC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHJldHVybiBwcm94eUFwcGx5Rm4uY3RvckNvbnRleHRzLmxlbmd0aCAhPT0gMAogICAgICAgICAgICAgICAgICAgID8gcHJveHlBcHBseUZuLmN0b3JDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkN0b3JDb250ZXh0KC4uLmFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cyA9IFtdOwogICAgICAgIHByb3h5QXBwbHlGbi5BcHBseUNvbnRleHQgPSBjbGFzcyB7CiAgICAgICAgICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuaW5pdCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpbml0KGNhbGxGbiwgdGhpc0FyZywgY2FsbEFyZ3MpIHsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gY2FsbEZuOwogICAgICAgICAgICAgICAgdGhpcy50aGlzQXJnID0gdGhpc0FyZzsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEFyZ3MgPSBjYWxsQXJnczsKICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJlZmxlY3QoKSB7CiAgICAgICAgICAgICAgICBjb25zdCByID0gUmVmbGVjdC5hcHBseSh0aGlzLmNhbGxGbiwgdGhpcy50aGlzQXJnLCB0aGlzLmNhbGxBcmdzKTsKICAgICAgICAgICAgICAgIHRoaXMuY2FsbEZuID0gdGhpcy50aGlzQXJnID0gdGhpcy5jYWxsQXJncyA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgIHByb3h5QXBwbHlGbi5hcHBseUNvbnRleHRzLnB1c2godGhpcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGF0aWMgZmFjdG9yeSguLi5hcmdzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gcHJveHlBcHBseUZuLmFwcGx5Q29udGV4dHMubGVuZ3RoICE9PSAwCiAgICAgICAgICAgICAgICAgICAgPyBwcm94eUFwcGx5Rm4uYXBwbHlDb250ZXh0cy5wb3AoKS5pbml0KC4uLmFyZ3MpCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgcHJveHlBcHBseUZuLkFwcGx5Q29udGV4dCguLi5hcmdzKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CiAgICBjb25zdCBmblN0ciA9IGZuLnRvU3RyaW5nKCk7CiAgICBjb25zdCB0b1N0cmluZyA9IChmdW5jdGlvbiB0b1N0cmluZygpIHsgcmV0dXJuIGZuU3RyOyB9KS5iaW5kKG51bGwpOwogICAgY29uc3QgcHJveHlEZXRhaWxzID0gewogICAgICAgIGFwcGx5KHRhcmdldCwgdGhpc0FyZywgYXJncykgewogICAgICAgICAgICByZXR1cm4gaGFuZGxlcihwcm94eUFwcGx5Rm4uQXBwbHlDb250ZXh0LmZhY3RvcnkodGFyZ2V0LCB0aGlzQXJnLCBhcmdzKSk7CiAgICAgICAgfSwKICAgICAgICBnZXQodGFyZ2V0LCBwcm9wKSB7CiAgICAgICAgICAgIGlmICggcHJvcCA9PT0gJ3RvU3RyaW5nJyApIHsgcmV0dXJuIHRvU3RyaW5nOyB9CiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3ApOwogICAgICAgIH0sCiAgICB9OwogICAgaWYgKCBmbi5wcm90b3R5cGU/LmNvbnN0cnVjdG9yID09PSBmbiApIHsKICAgICAgICBwcm94eURldGFpbHMuY29uc3RydWN0ID0gZnVuY3Rpb24odGFyZ2V0LCBhcmdzKSB7CiAgICAgICAgICAgIHJldHVybiBoYW5kbGVyKHByb3h5QXBwbHlGbi5DdG9yQ29udGV4dC5mYWN0b3J5KHRhcmdldCwgYXJncykpOwogICAgICAgIH07CiAgICB9CiAgICBjb250ZXh0W3Byb3BdID0gbmV3IFByb3h5KGZuLCBwcm94eURldGFpbHMpOwp9CgogIChmdW5jdGlvbiB0cnVzdGVkT3ZlcnJpZGVFbGVtZW50TWV0aG9kKAogICAgbWV0aG9kUGF0aCA9ICcnLAogICAgc2VsZWN0b3IgPSAnJywKICAgIGRpc3Bvc2l0aW9uID0gJycKKSB7CiAgICBpZiAoIG1ldGhvZFBhdGggPT09ICcnICkgeyByZXR1cm47IH0KICAgIGNvbnN0IHNhZmUgPSBzYWZlU2VsZigpOwogICAgY29uc3QgbG9nUHJlZml4ID0gc2FmZS5tYWtlTG9nUHJlZml4KCd0cnVzdGVkLW92ZXJyaWRlLWVsZW1lbnQtbWV0aG9kJywgbWV0aG9kUGF0aCwgc2VsZWN0b3IsIGRpc3Bvc2l0aW9uKTsKICAgIHByb3h5QXBwbHlGbihtZXRob2RQYXRoLCBmdW5jdGlvbihjb250ZXh0KSB7CiAgICAgICAgbGV0IG92ZXJyaWRlID0gc2VsZWN0b3IgPT09ICcnOwogICAgICAgIGlmICggb3ZlcnJpZGUgPT09IGZhbHNlICkgewogICAgICAgICAgICBjb25zdCB7IHRoaXNBcmcgfSA9IGNvbnRleHQ7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBvdmVycmlkZSA9IHRoaXNBcmcuY2xvc2VzdChzZWxlY3RvcikgPT09IHRoaXNBcmc7CiAgICAgICAgICAgIH0gY2F0Y2goXykgewogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICggb3ZlcnJpZGUgPT09IGZhbHNlICkgewogICAgICAgICAgICByZXR1cm4gY29udGV4dC5yZWZsZWN0KCk7CiAgICAgICAgfQogICAgICAgIHNhZmUudWJvTG9nKGxvZ1ByZWZpeCwgJ092ZXJyaWRkZW4nKTsKICAgICAgICBpZiAoIGRpc3Bvc2l0aW9uID09PSAnJyApIHsgcmV0dXJuOyB9CiAgICAgICAgaWYgKCBkaXNwb3NpdGlvbiA9PT0gJ2RlYnVnJyAmJiBzYWZlLmxvZ0xldmVsICE9PSAwICkgewogICAgICAgICAgICBkZWJ1Z2dlcjsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1kZWJ1Z2dlcgogICAgICAgIH0KICAgICAgICBpZiAoIGRpc3Bvc2l0aW9uID09PSAndGhyb3cnICkgewogICAgICAgICAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHZhbGlkYXRlQ29uc3RhbnRGbihmYWxzZSwgZGlzcG9zaXRpb24pOwogICAgfSk7Cn0pKC4uLmFyZ3Muc2xpY2UoMCwgbGFzdF9hcmdfaW5kZXgpKQp9"}]
|