Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:网页插件¥js_url¥global_骚扰拦截@base64://Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICDpqprmibDmi6bmiKoKLy8gQHZlcnNpb24gICAgICAxLjMuNzUKLy8gQG5hbWVzcGFjZSAgICBhaXJiYXNoL0Fubm95YW5jZXNJbnRlcmNlcHRpb24KLy8gQGhvbWVwYWdlVVJMICBodHRwczovL2dpdGh1Yi5jb20vQWlyQmFzaFgvVXNlclNjcmlwdAovLyBAYXV0aG9yICAgICAgIGFpcmJhc2gKLy8gQGRlc2NyaXB0aW9uICDmiYvmnLrjgIHnlLXohJHlhajlubPlj7DpgJrnlKg66Ieq5Yqo5oum5oiq5oiW5Yig6ZmkYOS4i+i9veW8ueeql2DjgIFg5oKs5rWu5oyJ6ZKuYOetieW9seWTjeeUqOaIt+S9k+mqjOeahOWFg+e0oDvplb/mnJ/nu7TmiqQ6Q1NETuOAgeeugOS5puOAgeefpeS5juOAgeefpeS5juS4k+agj+OAgeeZvuW6puaQnOe0ouOAgeeZvuWutuWPt+OAgeeZvuW6pui0tOWQp+OAgeeZvuW6puaWh+W6k+OAgeeZvuW6puaWsOmXu+OAgeaWsOa1quaWsOmXu+OAgeiFvuiur+inhumikeOAgeS8mOmFt+inhumikeOAgeeIseWlh+iJuuOAgeWlveeci+inhumikeOAgeWTlOWTqeWTlOWTqeOAgULnq5nkuJPmoI/jgIFC56uZ56yU6K6w44CB6KW/55Oc6KeG6aKR44CB5oqW6Z+z44CB5LiB6aaZ5Zut44CB5YGl5bq355WM44CB5b6u5Y2a44CB5paw5rWq6LSi57uP44CB5Lic5pa56LSi5a+M572R44CB55S15a2Q5Y+R54On5Y+L44CB5Lq65rCR572R44CB5paw5Lqs5oql44CB6KeC5a+f6ICF572R44CB5r6O5rmD5paw6Ze744CB5Yek5Yew5paw6Ze744CB572R5piT5paw6Ze744CB5LuK5pel5aS05p2h44CB6JmO5ZeF44CB6JmO5omR44CB6LGG55Oj44CB5Lit5YWz5p2R5Zyo57q/44CB5aSq5bmz5rSL55S16ISR44CB5aSq5bmz5rSL5rG96L2m572R44CB5rG96L2m5LmL5a6244CB5aSq5bmz5rSL5rG96L2m572R44CBdGFwdGFw44CBaXTkuYvlrrbjgIEzNjBkb2PjgIHlvIDmupDkuK3lm73jgIFzZWdtZW50ZmF1bHTjgIFXM0NTY2hvb2zjgIHpmL/ph4zkupHlvIDlj5HogIXnpL7ljLrjgIHohb7orq/kupHlvIDlj5HogIXnpL7ljLrjgIHljY7kuLrkupHlvIDlj5HogIXnpL7ljLrjgIEzNuawquOAgembqueQg+OAgeWkqeecvOafpeOAgeermemFt+OAgeWwj+e6ouS5puOAgeS4reWbveefpee9keOAgeijheWkh+WJjee6v+OAgeW/heW6lOaQnOe0ogovLyBAbWF0Y2ggICAgICAgICo6Ly8qLmNzZG4ubmV0LyoKLy8gQG1hdGNoICAgICAgCSAqOi8vKi5qaWFuc2h1LmNvbS8qCi8vIEBtYXRjaCAgICAgICAgKjovL2p1ZWppbi5jbi8qCi8vIEBtYXRjaCAgICAgICAgKjovLyouemhpaHUuY29tLyoKLy8gQG1hdGNoICAgICAgICAqOi8vdGllYmEuYmFpZHUuY29tLyoKLy8gQG1hdGNoICAgICAgICAqOi8vYmFpamlhaGFvLmJhaWR1LmNvbS9zKgovLyBAbWF0Y2ggICAgICAgICo6Ly9tYmQuYmFpZHUuY29tL25ld3NwYWdlL2RhdGEvKgovLyBAbWF0Y2ggICAgICAgICo6Ly9uZXdzLmJhaWR1LmNvbS9uZXdzKgovLyBAbWF0Y2ggICAgICAgICo6Ly9tLmJhaWR1LmNvbS9zZl9iYWlqaWFoYW8vKgovLyBAbWF0Y2ggICAgICAgICo6Ly92aWV3LmluZXdzLnFxLmNvbS8qCi8vIEBtYXRjaCAgICAgICAgKjovL20uc29odS5jb20vYS8qCi8vIEBtYXRjaCAgICAgICAgKjovL20udi5xcS5jb20vKgovLyBAbWF0Y2ggICAgICAgICo6Ly8qLnlvdWt1LmNvbS8qCi8vIEBtYXRjaCAgICAgICAgKjovLyouaXFpeWkuY29tLyoKLy8gQG1hdGNoICAgICAgICAqOi8vaGFva2FuLmJhaWR1LmNvbS8qCi8vIEBtYXRjaCAgICAgICAgKjovLyouMTkwNS5jb20vKgovLyBAbWF0Y2ggICAgICAgICo6Ly8qLmJhaWR1LmNvbS8qCi8vIEBtYXRjaCAgICAgICAgKjovLyouYmlsaWJpbGkuY29tLyoKLy8gQG1hdGNoICAgICAgICAqOi8vM2cuZHh5LmNuLyoKLy8gQG1hdGNoICAgICAgICAqOi8vd3d3LmNuLWhlYWx0aGNhcmUuY29tLyoKLy8gQG1hdGNoICAgICAgICAqOi8vKi5zaW5hLmNuLyoKLy8gQG1hdGNoICAgICAgICAqOi8vbS53ZWliby5jbi8qCi8vIEBtYXRjaCAgICAgICAgKjovL3dhcC5lYXN0bW9uZXkuY29tLyoKLy8gQG1hdGNoICAgICAgICAqOi8vbWd1YmEuZWFzdG1vbmV5LmNvbS8qCi8vIEBtYXRjaCAgICAgICAgKjovLyouaXhpZ3VhLmNvbS8qCi8vIEBtYXRjaCAgICAgICAgKjovL3d3dy5kb3V5aW4uY29tLyoKLy8gQG1hdGNoICAgICAgICAqOi8vbS5lbGVjZmFucy5jb20vKgovLyBAbWF0Y2ggICAgICAgICo6Ly9hcHAucGVvcGxlLmNuLyoKLy8gQG1hdGNoICAgICAgICAqOi8vbS5iam5ld3MuY29tLmNuL2RldGFpbC8qCi8vIEBtYXRjaCAgICAgICAgKjovLyouZ3VhbmNoYS5jbi8qCi8vIEBtYXRjaCAgICAgICAgKjovL20udGhlcGFwZXIuY24vbmV3c0RldGFpbF9mb3J3YXJkKgovLyBAbWF0Y2ggICAgICAgICo6Ly8qLmlmZW5nLmNvbS8qCi8vIEBtYXRjaCAgICAgICAgKjovL20uMTYzLmNvbS8qL2FydGljbGUvKgovLyBAbWF0Y2ggICAgICAgICo6Ly9tLjE2My5jb20vdi92aWRlby8qCi8vIEBtYXRjaCAgICAgICAgKjovLzNnLjE2My5jb20vKi9hcnRpY2xlLyoKLy8gQG1hdGNoICAgICAgICAqOi8vM2cuMTYzLmNvbS92L3ZpZGVvLyoKLy8gQG1hdGNoICAgICAgICAqOi8vbS50b3V0aWFvLmNvbS9hcnRpY2xlLyoKLy8gQG1hdGNoICAgICAgICAqOi8vd3d3LnRvdXRpYW8uY29tL2FydGljbGUvKgovLyBAbWF0Y2ggICAgICAgICo6Ly9tLmh1eGl1LmNvbS8qCi8vIEBtYXRjaCAgICAgICAgKjovL20uaHVwdS5jb20vKgovLyBAbWF0Y2ggICAgICAgICo6Ly9tLmRvdWJhbi5jb20vbW92aWUvc3ViamVjdC8qCi8vIEBtYXRjaCAgICAgICAgKjovL2cucGNvbmxpbmUuY29tLmNuLyoKLy8gQG1hdGNoICAgICAgICAqOi8vbS56b2wuY29tLmNuLyoKLy8gQG1hdGNoICAgICAgICAqOi8vd2FwLnpvbC5jb20uY24vKgovLyBAbWF0Y2ggICAgICAgICo6Ly93d3cuYXV0b2hvbWUuY29tLmNuLyoKLy8gQG1hdGNoICAgICAgICAqOi8vKi5tLmF1dG9ob21lLmNvbS5jbi8qCi8vIEBtYXRjaCAgICAgICAgKjovL20uYXV0b2hvbWUuY29tLmNuLyoKLy8gQG1hdGNoICAgICAgICAqOi8vbS5wY2F1dG8uY29tLmNuLyoKLy8gQG1hdGNoICAgICAgICAqOi8vd3d3LnRhcHRhcC5jbi8qCi8vIEBtYXRjaCAgICAgICAgKjovL20udGFwdGFwLmNuLyoKLy8gQG1hdGNoICAgICAgICAqOi8vbS5pdGhvbWUuY29tLyoKLy8gQG1hdGNoICAgICAgICAqOi8vd3d3LjM2MGRvYy5jb20vY29udGVudC8qCi8vIEBtYXRjaCAgICAgICAgKjovL3d3dy5vc2NoaW5hLm5ldC8qCi8vIEBtYXRjaCAgICAgICAgKjovL2RldmVsb3Blci5hbGl5dW4uY29tL2FydGljbGUvKgovLyBAbWF0Y2ggICAgICAgICo6Ly9odWF3ZWljbG91ZC5jc2RuLm5ldC8qCi8vIEBtYXRjaCAgICAgICAgKjovL20uMzZrci5jb20vcC8qCi8vIEBtYXRjaCAgICAgICAgKjovL3h1ZXFpdS5jb20vKgovLyBAbWF0Y2ggICAgICAgICo6Ly9zZWdtZW50ZmF1bHQuY29tL3EvKgovLyBAbWF0Y2ggICAgICAgICo6Ly93d3cudzNjc2Nob29sLmNuLyoKLy8gQG1hdGNoICAgICAgICAqOi8vbS50aWFueWFuY2hhLmNvbS8qCi8vIEBtYXRjaCAgICAgICAgKjovLyouemNvb2wuY29tLmNuLyoKLy8gQG1hdGNoICAgICAgICAqOi8vbS54aW1hbGF5YS5jb20vKgovLyBAbWF0Y2ggICAgICAgICo6Ly93d3cueGlhb2hvbmdzaHUuY29tLyoKLy8gQG1hdGNoICAgICAgICAqOi8vd2FwLmNua2kubmV0LyoKLy8gQG1hdGNoICAgICAgICAqOi8vd3d3Lnpmcm9udGllci5jb20vKgovLyBAaWNvbiAgICAgICAgIGRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBRUFBQUFCQUNBWUFBQUNxYVhIZUFBQUFBWE5TUjBJQXJzNGM2UUFBRWk1SlJFRlVlRjY5V3dsMFZWV3kzZlZDQ0NDVFlMZkRsOGEyR1VJbVNBSUpVU0VSUkkyS0NNaWtJSUlLQWpZeXFzZ1VSQkZiWmRLUGlvb0RJQ2lLSWdnT0VFQkVFa0tBSkpBRXNMOXpON2Eyb2tBZ3lidTEvenIzaFFjM3lSc3l3RjJMdFZndjU5NXo5cTQ2VlhXcTZnak80OE10S2ZYUTVPU1ZRRWdUV05vVUZwdlkwMXM0Q1pVVFVQa0pHblpZcnQxNjZud3RTODdsUk15NXVpM0lXMEFySHBUMlVMUUJVUWNLZ0dYL2xKNy9uL2xOb2ZnTzFGeW9hd3RnYmNPTzNUbVNabytvOWFmV0NlQ0J4QWhRN29JbHZVQ0V3d1B3RzFCeW9Kb0R1Z3BCL1FYcStoMWEranVzRUlVTGpXR2hNWWlMb1F3SDJSWXFIVUcwS2lQblI0QXJZY2x5NmJrcnB6WlpxRFVDZUNDcE80aUpVTndJd2czbE5xaXNCVjBmU3NjZDMxVm4wZnlrVXd1b2RJT3lyLzFkUlNpSUx3SE1SYStzOVNJMlBUVjZha3dBODYvdUROVkZJRHBCOFJPSXhSQjVVZHAvK1o4YXJhemN5OXdRK3ljVWg5d0p1c1pCdFNXSVBMaGx2QXpLMmx5VGVhcE5BQTkzK1JOSzNFOUNNUXcwd0RrRERTNWNKcTAzRnRka1FZSGU1VXZ4b1dqbUdneUwwMEJjQ1dJMVNrUEh5OUNkUHdaNnQ3Sy9WNHNBRmx4MVBTeXNBTmtZaW9VSWM4Mlc4QjNIcXJJQWZoYmZCS3gzQVZ4dUM3OGUrMDM2NTVkVTZmMTNrdXFqcE9RUlFCNkNzZ2lVNFRKMDk5cXFmTU9NclJJQkpGeklUNW9HeFV3UStYRHJBSW5MelBjM0tUZWtocUhoMGM2QWRnTVJEd3ZHTTF3QlJaMXkxdjg0bEQrRDJBTmxKaXpaQmZlSm5ZR0k0UnNKYlVCckZZZ09JQmJodTBhVEpHMnJPMWdpZ2lhQVg2ZlV3NG1TdDBIZUNzV2JLQzBaSlIyemkzeE54TStUa3VIU3U2RXdCcXlSQnl5L0Fya2JsTytoOGh2STM2QVVnQmRDNVVJUWw5dldYK214L3VRdlVMd05TNWZMd0QwWlB1ZDZMYVVlOU5pelVJd0d1UjZVQVRMUzk5ck8vazVRQlBEN3BQbzRpZzlBWEFmbE9PbVE4VnhsaXlFaDJORzVONFJUWVNFT3hBa1FIOW9nUWtNL2x5NWYvQmFNWkxnbW9UbW9WOE9TQVNCN1ExRWZoQ0Z1aXR5WnRja25FVXZpUjBQNUhCUVpRT2t0TWpvdjRId0JDV0JPekFWd05WZ0hsYTVRM2l1eEdhOVhDajRqTVFZV1g0REtWYmJmVjVtRDRxSzM1SWJjRThHQTlnbHFlV0pqdU56OW9aZ0t4UlVnTjBFd1Z1N2FVMURwT2hiSDk0TnlPWWhzbkhMM2tNbis1L2RMZ0MzUnZLUjNRUFNHSllNbDdzdFY1U2UxN2NLT3hHa0Fwa1B4cSswTm1oOS9UYUtxWnRRQ2tjUjNJdXFpcVA3OW9FMkV3STNXTWpMNzkwcEpXQmpYSCtSS0VKL2g5eWEzK0xNSi9nbllselFEd0N4WW5DRHhHZk1yZ005TWFBNjM2MjBvdXdOWUE5YTlYN3B1L3prUW1KcjhuVXM3SmNQU3JWRGNJQ096UC9XcE9mTmlEVmt2UURGUEp1K2Q2R3VjVHdLNEwra0dFQnRBWFM1eG1VTXJnTi9XcVFWY3JrOUEvQTJRa2RLMThxMVJFN0FWNWpTdTcraXB0YUJjQTdWYXk2Z2N2NzZmVDhjdWhuSVVJUDNrNGIzdlZpa080TjdPZDBMUkczL1VHMXorZEVZYmZNZ1hJSnZDclgya1c4MmlzV0JJNHJ5ayttaDRhaTFVdWtNeFZFYnZXUjdvUGFhbDFFUFkwUytoYUlHUzBHaVpsWFdrL0R1VmFvQjlpb3ZaY1ZpazRnbU1SdTJMWlR1SVN3RlhOMG5ldVRmUVFtcjZkd2Q0aThOa3pONDNnLzBtWjhlMGhiaHlvRmduTS9iMUMwZ0FzeE82Z2E1TklLNlhUaGtPbDJNYnZPMkpuMEhSQmFxcDUwM3lEV3kxN3c2dEd2alRZUGxZN0d5b0drTjlnNlRsT094R0JRMWdWdWYzUU1UaVJMMklDcXEvTmRGakZDbjN5YlVacndRcmhlcU9zeVZ2d0J1MXAzL3dmQ3JtY2xBaWdUb1o4b2pUTzNCOFVuMDBLam9BNGlobTU4U2J5T3YwbWlvaG9OT1ZVS0VrN3ZyNjdJVnpTOGNvSU1TRXFSOUk5MTM5cXdzcTJQZTRxRlVZNmpaK0Q0cFVxQXlYQjdMZjhHbng1N1lmRE1vU0VQV2grQmwwSmN0MFo1ekE2VEgzd3BLWFFmU1VKM1BXVjBvQU01S2VCM1NyZE01MFdFdzdIdGlTOEFXSVNGaWhFWEw5am44RkM2UTY0Mnp3ZFJvYlRVeTFEemwrd2NmZUJmSTFFT21neklYRnR3RGt5b3g5UFJ3Q25CbFJGOFYxRG9QNFRwN0s3VktCQUdZa3RvYmlFSUJ4Y2xYbVFzZkw2WWw5b1h3WGxKSFNJM05KZFVBRis0NnQ5bUZuN2ZteHZnMGU1OFlPdEtNK1JUb2ExTzhsRTNhZVpGck1XRkFXZ3J4T0hzdDE1QW80T1hvOElQUGdsaWlabjNQQXJNbTdCYmdqWVNZb1UzRUtMZVM2eko4Y0JIeVdrR1ducTQ0ZWJ4WG9kQllzME1yRzJaSVBPYTMyT2x3ZTNPZEg3V1B2Z21WTGZ2TnA4T2FiTkpMVzBFSlkrRVhtNUNRNGNFeUsrVE9JSDJGeGtTeklzNE9qTXdSc1R6d0lvbEM2WnZaeXZQUnBwMlJRdGtMNW9LUm1MYW9KUUgvdjJwS3ZXeVo1NCtyRytaSDhFMlZxRHlkNHI5Vi9OT1plVUY2R2hVVDVSODR1QjU1eDBlc0JpY0tDM0w4YVkyZ1R3TzBKN2FHeUQrQlFTZDdsOExIOHVOTlNVUHJDYlYwcVBZTTdZbGFWSkJ0OHFBRVBFK1FFQWo4UUxGUDdoaDYxTHo4ZjB4SWI0K1RKZjBQNXFqeWROOVpCd05ob2s4RmFDc3VLbGNYNSt6d0ViRXNjQThYemNMdGJTbzlzYndLVEcxcUZBYzErQnZpUjNKUTFxS3JBZ2hudkJhOHdTZFhBNEQwbnZYVDRBTy9WZ3NreGIwRnhQUnE2TDVOWlp3NW1IQnZ4RjFnaDMwSmx2THlRdThCRFFIcmlteUE3Uy9kZGJSeHNiZXljQXN2YUFzVUF1VFhybldBQVZXV012ZWRockQxVFlYRzRUUEN6NTQzYW45N3pSK3Yza3ZrVkplOVkrNFNZVzBHc2hUSlpGdVo5N3ZqYnFPaXZvTWlWbC9MNmVBallsSEFJUkpiMDJIV25ZK0M2aERTUTAzRkttMG4veW8rZVZRSHMrTFpSKzVBeXRiY3dUQ2I2MmZPUHhRNEVqTm96SGI4M0NBamV4alErc2huVTlRdkloMlRSL21jY2M0K01OaWZZVHZMeS9pdkZMbGVWRmhWQkpVMXV6SHpNTVhCdFI1TmVDcGZic2xwVkY2aFBhMDlqN1prS0JwQzhBVy8yUElNSDc5MEdmNC8rQ2hiMnlPSThSK0RHK3lKblFXVWFRc0lhQ1RkMnZnS2lYME01VUc3S2V0dEJ3UHNKaDZHNlgvcnU3bDFiQk5ocWI4QmJUQVVDZ3I4THFxL0JXUHNnSmU5WS81aW9sU2JIS0Mva3RYYjhmay8wSFZDdUFCZ3AzSmlRWkZkYnlHUzVPY3U3VjVnR0Y2STdGWU40Um03UG1sSWJCTmdHVDA1YmV3NlhTWDcydkpHOHFpZklPUmFjMmxmd0JxTmpub0hGRWZKU1htTUhBY01pdTBGbE15eGNLOXlRY0J1VTc0TWFMejJ6OTNqVlorM1ZqVkJTL0FjZ2owcS9yQ2RyU29BdGVYZVp3VE5xN3c5OFdzeEFRSmJEUWpxT1Z3KzhiUWZ1ajVrS1N4L0hVUTJUMVdkNWdpRlJIUUdhNE81MjRmcU9BMkdKS1R5MmxUNjdUQ2hzUDF3WmV4bGNJVCtDTWs0R1pqbEM0NnFTNFFWdjlyeFIrMERnVlR5dXJnYmdiUXozUm8zeWxPcHdpYnl5M3h2ZGNuQk1XNmhWQ0dDUWNGM0NiWEFiRFNoSHdGdUpGME9zSXlEdWx6dDJ2MVJWMEY0aWpkcnp0TFhuY0huWWo5b2J5VnZpVWZ1aTZrdmVPL2M5MFNPaGZCSFVTK1gxZkc4MnlDYkFiUldDSEN4OHY2TTVibTRBTkY3Nm5yVUZUQTJ1b1pTQW5DS0RzK2RXaHdCYjhpVmxhcThCd0U4dlUvdGFBbTlyd0xDb1NWQThEWFUxbEdWbjB1TWNHR1dLTDFtQTloYXU3cGdDWUFzb0tkSS9hNXZEV0x3WmZ3d3FyOGpkdThkWGxRQXYrTk91enAva1ozUVlDdVZTKzJCVEM1TDNhc0NRcURrQUoySFpnYkN6a3lEc0gzbXRIVk5ZMGwzNGJtSnJXSllKaEFiSndOMk92RDlmai84bktGa3liUGZBcWhCZ1czdDNtZHFiUGU4UHZKSDg2VDEvc3VacTd4RGc0TWgzb1lpVXR3NjBjL3plSi9JT2dDdEFWNFFKaE9yZ3lQRVRVTXlSTzNmUGNneGNHcjhhUkh1NUo5c1JJdnNqdzViOHljYnZBWm9LQzhQbFVUOTdmbXFIb1FDWFFyRVpwMm9YdkwwRkJrWGxnZncvV1hYQWVjTHRIVEVMeEhTRS9uR0JKeFJlMGJFQXlyMHlKUHNPQndHdnhrMkc0aW00M1pmSXFOeUFEUTllOE5SVWFBRHdqNWJ0ZVdQdHp3WDR1enMweGFsU1UxeWRKZThjbU8zQTFTdHlGY2hFK1REZkhJa0JMb3RmQTBXVURIVkttaS9HZGdYRXRMcjBsdEhaSC9pVnZGSDcwcE5yNFRuVitaZThBVTh4ZWYxekF0N0dORENxTnl5dWdZVnJaTTJCSFE0Q2VrWjhCZFU5OGxGaGZ3OEJiM1I4d0s2cTB2VVhHWjcxdmRlSUdFOWc4VjhnUHBFeGV3YjdJc0NXZkZIRHNoeGVBUEJUT2d3Rnl3eGVTZTJydlhmdHQ3ZDdIWlJlYUY3L3o3SWt1OVQ3KzAzdFdrSk04WmFUWkdQaHN4NENYb2xyQlpIRFVCa3E5KzEySmtTZWozdmVTQlJ1dlV6Rzd6dGFuZ1FiL0lreThBaEM4b3JsVUVsSDZUa0Uzek8rQWVxZU5ESE1TbG1UUDlJaC9kU0k0UUJmaFlWbytiUmcvNW1VMk10eGg2SElsNUY3bkFaalFYd2lSRE5BanBCeCsxNTJmTXlvL2FtVG5reU9VZnRwZmd5ZWtieXF5UzV0UHBmZ2JZSDJqcndQNUJJSXVzajcrVjg0MW54anU0OUFSTWtuQlMzTjcyY0llREh1YVJBUG9wVC9JMlAzT2lxOG5CK2JCVVZ6L0ZFY2ZqcTdZcnU2WU1FL2JQWThsb09TRHZlNWs3d052aDlDVUJwUkFBdS95YnI4UkFmNDdsRVhJOFQ2QVlyNXNxbmdJU2NCL3h0bnp2d21NVHBSSHRpendDbnAyR1JZMkFwaXJEeTA5emxiN1krVnFiMXhkVFA5U1A2aEdGTlo5a2orSElPM0NiZ3RZZ1FVTDBIMVZsbGZ1TTZCbzBmNEJGQ2VoUnZSc3JWZ3Y0TUErK1ZGY1J2TkdSbi9MVzUxZGg3Ti90dFQ3VGRCSlJyZ0VGQW13MEkzMjlYNUEyOGtmM3JQNjdtVnZFZjZrYzF3aWdkQkZtQjlRYklqK291UEQwWFRFNll3OG8ya0Y1cm8xMzRjcFRFdTZuQXpMREZab09FeVlZOUpSSGdmem9tTkFMa054RVZRbmdKZEkyVG0zbVUrUFlPUnZKWkovanlBdHdtNHBaM3BDdWtMZFhXUWpRY2MzV3ZzMXU1ZWtKN1MyTlpDSDZVeFV3SjdObllId0l2aHFoOVZQdVhNdWZGTlVHeGRneEIzcmt6YjczV1hGVHpEcExQMlBNKzk1RzN3UFNOR3d1S0xVRTZSandzZGh6Y2FyM0RzUkQ2SW43R3RNTUYvY2ZTWnVIZ29kOEhpYkpteUw4MlhoSDFLZm1MWm5yZGtNK1E4Z2IrNTdiVlExMGI3R0oxVWNFdjV6bkltaHo4QjRsSFFkWjFzejNlVXl5cHZrSGl5d3hzZ0JzRFM5akk5OTJDd0pOQ0FOMFVIazI0NlgrQjd0b3VERzF0ZzRWdVVoSFdWcmM1WWhTbHR3bUc1OXBsMlBmbWlzRUpWdTNJQ25vaS9GTFJNVjhVUDBLWlhTVnJnQ3d5YzJINElsQ2I2T24vZ2plUXRsK2xmL0M5S3JTNlNmc2pSTThTVUsrckJxcGNCeGVWdzE0bVV6RE5ab1VxTm9NUG96VzV2K29FM2dueFJadVdPOGFjRm5CRFZBblFkaFBJTHVCb0dsYmNQVnF0OGJyVWJJMGFDWEFqaUVOeFdhbm53dGwyNEp0elloQkVnKzhyT1ErOVg5aTMvYlhJejI4K0dZaHBVeHNnVCt4YjdYTXlEN1c4QTlXTVFQZVM1UEorZG5EVUY3VEYyYlM1Q2FjaHpJSXlMM1lqU3NEdktxNzA5N3Fyd3Z4dkhEcFY1a2xGWTlUWTVqMS90RjRJMkJ6K0Vpcm1zTUVpZXlxbTBQTVp4SFpyQ2NwdXpoRUw1T0g3Umw4N093dFlLOEpTVU9xaDNaRGdvYzBEN2RzbDBmRmJ3ajdNdCt1bDVlSFZiMDFtNkVwQ05DTHZrTnRucXUzazZjS3VzNmErcGUySWRhQnFqWklnODQ0T0VrWkVSRUplNU9ORWQxRzlBekVGUjhkdXk0cXMvYWtLQTdjTGNKOHhGaVVkQVhnbkZWcWhyakd4Mit2a3o0TnNNZ0NXbTFya0hKK3RkSjdrMWFKWDFmalROK05HU2owQkpCbVNTek11WjUzTTczQmQ5SFVoemtjTGMrVEczd1Q0QWRCVktTcitVbFlkK0NZWU0zaHg5SWNTZEFndm1ZTmFuck5zOEUrQVQrTFJ3ZldWU3R6VTJxYzBZVUJiWnpkSmlwVXBtWVBJRGFvQ1hoTkVSRFZHM2ppbFE5Z0w1QW80ZG55Q3ZmK1B6ZWh1SFJTUkNaVEFVNWlCMFVkbmRnSDk2dXI3eEkxUi85ZlFXaXdXeUNWU2FnbWdEaGJrMDFRNktFQ2pNOFh1MWthaHNjcDdxSEFZNzZmTDZRSU1GVUJsaGQ3Y2VEeGtnK2ZuSGd5RTdhQUpzaGszby9FRFVERkJNTzAwTzNCd2tTL0pNZ2NIbnd4SHhvVGhlbEFRTlNRQ1pBQ0lPU3RPcTBzaDdWYzV6WmE3VTVPK2dLTEF2VGJnMUhhV1hadnJidi9hYU9yZHVCN2hXUWhFRGxmbjRhK0ZEc2hwV01PRE5tQ29SNE5XR1VhYjJ6bGVnYkF6SzB6amFjSTZzOWwrdkw3OGdtNWdqeGMxUXgzSWhSSTdKNnVBazVsMURmSHdEaEI2YkNvckovUjhEY1kvc1BuaHVyOHc0MUc1TWVITVUxM25LbkFoQm1vNkx4MUdreTJyYitsY2dMaUtpTHBxNmgwTEZ0TTIzQkdVVlZDWklkc0cvZzVYNjJlT3FwUUVPSXU2TzZRTHFzNmJod1BUZ1FiRUFJU0VyWkZuZ0xISlZGc3hFazh4d0R6Yk5XaUJhZ0pJSmkxTWsrK0NXcW55bi9OZ2FFK0JWeVNHbTVBeVRKekJ0OXBaSnBFSnBtaURTWlUzQnQ5VlpKRlBDcjBDcGFaUFZQcVozdWV6YWJUb2c4N0dyOENOZjNxQXFjOVVhQVY0aUJyU0xncnBNQTJOdkVCRmU2Nit5RzlCRHNGZ0FkZjBIcWtkUkI4ZFFLb1N3TVVwZFRRRXR1enJyYW12Zk1GUCtEYVM1VjJ3MGF5VVlza3l5OHUwR3g5cDZhcDBBeC9ib0d4ME90eW1TTUE1a0I0K0xPK3Z5dEczOXkxMmVWaENFNlZneGZjbGZRbHlic0xQUVpHOXJmRTIyTXRMT0tRRVZESmc1bmRVTGF3a05hUXJWcHFEeC9YVEJqV0s0OEN1Z1IxQmM5SzNzL0tGQzcxOXRTYno4ZC80ZkVrYmdINEc3MXFZQUFBQUFTVVZPUks1Q1lJST0KLy8gQHJ1bi1hdCAgICAgICBkb2N1bWVudC1ib2R5Ci8vIEBncmFudCAgICAgICAgbm9uZQovLyBAbGljZW5zZSAgICAgIEdQTC0zLjAKLy8gQGRvd25sb2FkVVJMIGh0dHBzOi8vdXBkYXRlLmdyZWFzeWZvcmsub3JnL3NjcmlwdHMvNDQwODcxLyVFOSVBQSU5QSVFNiU4OSVCMCVFNiU4QiVBNiVFNiU4OCVBQS51c2VyLmpzCi8vIEB1cGRhdGVVUkwgaHR0cHM6Ly91cGRhdGUuZ3JlYXN5Zm9yay5vcmcvc2NyaXB0cy80NDA4NzEvJUU5JUFBJTlBJUU2JTg5JUIwJUU2JThCJUE2JUU2JTg4JUFBLm1ldGEuanMKLy8gPT0vVXNlclNjcmlwdD09CgooZnVuY3Rpb24gKCkgewoJInVzZSBzdHJpY3QiOwoKCS8qKgoJICog6KeE5YiZ5YiX6KGoCgkgKiBAdHlwZSB7bmFtZS91cmwvaXRlbXN9CgkgKi8KCWNvbnN0IHdlYnNpdGVzID0gWwoJCXsKCQkJbmFtZTogIkNTRE4iLAoJCQl1cmw6ICJjc2RuLm5ldCIsCgkJCWl0ZW1zOiBbCgkJCQkvL+S4i+i9veW8ueeqlwoJCQkJIi53ZWl4aW4tc2hhZG93Ym94IiwKCQkJCS8v5oKs5rWu5oyJ6ZKuOuaJk+W8gDrni5DnjLTmtY/op4jlmajkuK3nmoRidWcKCQkJCSIuZmVlZC1TaWduLXdlaXhpbiIsCgkJCQkvL+aCrOa1ruaMiemSrjpBUFDlhoXmiZPlvIAr55m75b2VL+aJk+W8gOazqOWGjCjkuLvpobUpCgkJCQkiLmZlZWQtU2lnbi1zcGFuIiwKCQkJCS8vUEPnq6865by556qXOuWtpueUn+iupOivgQoJCQkJIiNjc2RuLWhpZ2hzY2hvb2wtd2luZG93IiwKCQkJCS8vUEPnq68655m75b2V5by556qXKOmhtumDqCkKCQkJCSIjY3Nkbi10b29sYmFyLXByb2ZpbGUtbm9sb2dpbiIsCgkJCQkvL1BD56uvOueZu+W9leW8ueeqlyjlupXpg6gpCgkJCQkiLnBhc3Nwb3J0LWxvZ2luLXRpcC1jb250YWluZXIiLAoJCQldLAoJCQlmdW46IGZ1bmN0aW9uICgpIHsKCQkJCS8qKgoJCQkJICogUEPnq6865bGP6JS955m75b2V5by556qXCgkJCQkgKiBAcGFyYW0gICAgICB7bGlzdH0gIG11dGF0aW9uc0xpc3QgIFRoZSBtdXRhdGlvbnMgbGlzdAoJCQkJICovCgkJCQlsZXQgcmVtb3ZlTG9naW5Ob3RpY2UgPSBmdW5jdGlvbiAobXV0YXRpb25zTGlzdCkgewoJCQkJCWZvciAobGV0IG11dGF0aW9uIG9mIG11dGF0aW9uc0xpc3QpIHsKCQkJCQkJZm9yIChsZXQgbm9kZSBvZiBtdXRhdGlvbi5hZGRlZE5vZGVzKSB7CgkJCQkJCQlpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnBhc3Nwb3J0LWxvZ2luLWNvbnRhaW5lciIpKSB7CgkJCQkJCQkJLy/mnInnmbvpmYblvLnnqpfml7Y65qih5ouf54K55Ye75YWz6Zet5oyJ6ZKuCgkJCQkJCQkJbGV0IGJ1dHRvbiA9IG5vZGUucXVlcnlTZWxlY3RvcigiaW1nIik7CgkJCQkJCQkJaWYgKGJ1dHRvbikgewoJCQkJCQkJCQlpZiAoTG9naW5GbGFnID09IHRydWUpIHsKCQkJCQkJCQkJCWJ1dHRvbi5jbGljaygpOwoJCQkJCQkJCQl9IGVsc2UgewoJCQkJCQkJCQkJTG9naW5GbGFnID0gdHJ1ZTsKCQkJCQkJCQkJfQoJCQkJCQkJCQlyZXR1cm47CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJfTsKCgkJCQlkb2N1bWVudC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7CgkJCQkJaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJpbnRlcmFjdGl2ZSIpIHsKCQkJCQkJbGV0IGxvZ2luQnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnRvb2xiYXItYnRuLWxvZ2luPi50b29sYmFyLWJ0bi1sb2dpbmZ1biIpOwoJCQkJCQkvL+acqueZu+W9lToKCQkJCQkJaWYgKGxvZ2luQnRuKSB7CgkJCQkJCQkvL+a3u+WKoOS6i+S7tizkuI3mi6bmiKoKCQkJCQkJCWxvZ2luQnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKCkgewoJCQkJCQkJCUxvZ2luRmxhZyA9IGZhbHNlOwoJCQkJCQkJfSk7CgkJCQkJCQkvL+aJp+ihjOebkeWQrAoJCQkJCQkJbGV0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIocmVtb3ZlTG9naW5Ob3RpY2UpOwoJCQkJCQkJb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7CgkJCQkJCX0KCQkJCQkJLy/np7vliqjniYjnmbvlvZXlvLnnqpcKCQkJCQkJaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi50b29sYmFyQmFjayIpKSB7CgkJCQkJCQlsZXQgY3NzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKCQkJCQkJCWNzcy5pbm5lclRleHQgKz0gIi5wYXNzcG9ydC1sb2dpbi1jb250YWluZXIge2Rpc3BsYXk6IG5vbmUgIWltcG9ydGFudH0iOwoJCQkJCQkJZG9jdW1lbnQuaGVhZC5hcHBlbmQoY3NzKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX07CgkJCX0sCgkJfSwKCQl7CgkJCW5hbWU6ICLnroDkuaYiLAoJCQl1cmw6ICJqaWFuc2h1LmNvbSIsCgkJCWl0ZW1zOiBbCgkJCQkvL+S4i+i9veW8ueeqlwoJCQkJIi5kb3dubG9hZC1hcHAtZ3VpZGFuY2UiLAoJCQkJLy/mgqzmta7mjInpkq465omT5byAQXBwLOeci+abtOWkmuebuOS8vOWlveaWhwoJCQkJIi5jYWxsLWFwcC1idG4iLAoJCQkJLy/mgqzmta7mjInpkq465omT5byAQXBwLOeci+abtOWkmuWlveaWhyjpppbpobUpCgkJCQkiLmluZGV4X2NhbGwtYXBwLWJ0biIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLmjpjph5EiLAoJCQl1cmw6ICJqdWVqaW4uY24iLAoJCQlpdGVtczogWwoJCQkJLy/mgqzmta7mjInpkq46QVBQ5YaF5omT5byACgkJCQkiLm9wZW4tYnV0dG9uIiwKCQkJCS8v5LiL6L295by556qXCgkJCQkiLmFwcC1vcGVuLWRyYXdlciIsCgkJCQkvL1BD56uvOuS4i+aWueaLk+WxleW8ueeqlyjkuLvpobUpCgkJCQkiLnJlY29tbWVuZC1ib3giLAoJCQkJLy9QQ+errzrnmbvlvZXlvLnnqpco5Y+z5LiK6KeSKQoJCQkJIi5sb2dpbi1wb3BvdmVyIiwKCQkJCS8vUEPnq68655m75b2V5by556qXKOWPs+S4i+inkikKCQkJCSIuYm90dG9tLWxvZ2luLWd1aWRlIiwKCQkJXSwKCQkJb3ZlcmZsb3c6IHRydWUsCgkJfSwKCQl7CgkJCW5hbWU6ICLnn6XkuY7miYvmnLrniYgiLAoJCQl1cmw6ICJ6aGlodS5jb20iLAoJCQlpdGVtczogWwoJCQkJLy/mgqzmta7mjInpkq465omT5byA55+l5LmOKOS4u+mhtSks5omT5byACgkJCQkiLk9wZW5JbkFwcEJ1dHRvbiIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLnn6XkuY5QQ+eJiOWPkeeOsOmhtSIsCgkJCXVybDogInpoaWh1LmNvbSIsCgkJCWl0ZW1zOiBbCgkJCQkvL+WbuuWumuaMiemSrjrnmbvlvZXkuIDkuIsKCQkJCSIuRXhwbG9yZUhvbWVQYWdlLXNwZWNpYWxzTG9naW4iLAoJCQldLAoJCQlmdW46IGZ1bmN0aW9uICgpIHsKCQkJCW9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKCQkJCQkvL+eDreeCueWSjOmXrumimOmrmOW6puS/neaMgeS4gOiHtAoJCQkJCWxldCBpdGVtcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5FeHBsb3JlSG9tZVBhZ2Utc3F1YXJlID4gZGl2Iik7CgkJCQkJaXRlbXNbMl0uc3R5bGUubWFyZ2luID0gIjBweCI7CgoJCQkJCS8v5oum5oiq55m75b2V5by556qXCgkJCQkJbGV0IGxvZ2luQnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLkFwcEhlYWRlci1wcm9maWxlIGJ1dHRvbiIpOwoJCQkJCWlmIChsb2dpbkJ0bikgewoJCQkJCQkvL+acqueZu+W9lTrmiafooYznm5HlkKwKCQkJCQkJbGV0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIocmVtb3ZlTG9naW5Ob3RpY2UpOwoJCQkJCQlvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTsKCQkJCQl9CgkJCQl9OwoJCQkJLyoqCgkJCQkgKiBSZW1vdmVzIGEgbG9naW4gbm90aWNlLgoJCQkJICoKCQkJCSAqIEBwYXJhbSAgICAgIHtNdXRhdGlvblJlY29yZFtdfSAgbXV0YXRpb25zTGlzdCAgVGhlIG11dGF0aW9ucyBsaXN0CgkJCQkgKiBAcGFyYW0gICAgICB7TXV0YXRpb25PYnNlcnZlcn0gIG9ic2VydmVyICAgICAgIFRoZSBvYnNlcnZlcgoJCQkJICovCgkJCQlsZXQgcmVtb3ZlTG9naW5Ob3RpY2UgPSBmdW5jdGlvbiAobXV0YXRpb25zTGlzdCkgewoJCQkJCWZvciAobGV0IG11dGF0aW9uIG9mIG11dGF0aW9uc0xpc3QpIHsKCQkJCQkJZm9yIChsZXQgbm9kZSBvZiBtdXRhdGlvbi5hZGRlZE5vZGVzKSB7CgkJCQkJCQlpZiAoZ2V0WHBhdGgoJy8vYnV0dG9uW3RleHQoKT0i56uL5Y2z55m75b2VL+azqOWGjCJdJywgbm9kZSkpIHsKCQkJCQkJCQlnZXRYcGF0aCgnLy9idXR0b25bdGV4dCgpPSLnq4vljbPnmbvlvZUv5rOo5YaMIl0nLCBub2RlKS5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3ZlKCk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQl9CgkJCQl9OwoJCQl9LAoJCX0sCgkJewoJCQluYW1lOiAi55+l5LmOUEPniYgiLAoJCQl1cmw6ICJ3d3cuemhpaHUuY29tL3F1ZXN0aW9uIiwKCQkJaXRlbXM6IFtdLAoJCQlmdW46IGZ1bmN0aW9uICgpIHsKCQkJCS8qKgoJCQkJICogUEPnq6865bGP6JS955m75b2V5by556qXCgkJCQkgKiBAcGFyYW0gICAgICB7bGlzdH0gIG11dGF0aW9uc0xpc3QgIFRoZSBtdXRhdGlvbnMgbGlzdAoJCQkJICovCgkJCQlsZXQgcmVtb3ZlTG9naW5Ob3RpY2UgPSBmdW5jdGlvbiAobXV0YXRpb25zTGlzdCkgewoJCQkJCWZvciAobGV0IG11dGF0aW9uIG9mIG11dGF0aW9uc0xpc3QpIHsKCQkJCQkJZm9yIChsZXQgbm9kZSBvZiBtdXRhdGlvbi5hZGRlZE5vZGVzKSB7CgkJCQkJCQlpZiAobm9kZS5xdWVyeVNlbGVjdG9yKCIuc2lnbkZsb3dNb2RhbCIpKSB7CgkJCQkJCQkJLy/mnInnmbvpmYblvLnnqpcx5pe2OuaooeaLn+eCueWHu+WFs+mXreaMiemSrgoJCQkJCQkJCWxldCBidXR0b24gPSBub2RlLnF1ZXJ5U2VsZWN0b3IoIi5CdXR0b24uTW9kYWwtY2xvc2VCdXR0b24uQnV0dG9uLS1wbGFpbiIpOwoJCQkJCQkJCWlmIChidXR0b24pIHsKCQkJCQkJCQkJaWYgKExvZ2luRmxhZyA9PSB0cnVlKSB7CgkJCQkJCQkJCQlidXR0b24uY2xpY2soKTsKCQkJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQkJCUxvZ2luRmxhZyA9IHRydWU7CgkJCQkJCQkJCX0KCQkJCQkJCQkJcmV0dXJuOwoJCQkJCQkJCX0KCQkJCQkJCX0KCQkJCQkJCWlmIChnZXRYcGF0aCgnLy9idXR0b25bdGV4dCgpPSLnq4vljbPnmbvlvZUv5rOo5YaMIl0nLCBub2RlKSkgewoJCQkJCQkJCS8v5rKh5pyJ55m75b2V5by556qXMeaXtuS8muWHuueOsOW8ueeqlzIKCQkJCQkJCQlnZXRYcGF0aCgnLy9idXR0b25bdGV4dCgpPSLnq4vljbPnmbvlvZUv5rOo5YaMIl0nLCBub2RlKS5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3ZlKCk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQl9CgkJCQl9OwoKCQkJCWRvY3VtZW50Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKCQkJCQlvbmxvYWQgPSBmdW5jdGlvbiAoKSB7CgkJCQkJCWxldCBsb2dpbkJ0biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5BcHBIZWFkZXItcHJvZmlsZSBidXR0b24iKTsKCQkJCQkJLy/mnKrnmbvlvZU65re75Yqg5LqL5Lu2LOS4jeaLpuaIqgoJCQkJCQlsb2dpbkJ0bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uICgpIHsKCQkJCQkJCUxvZ2luRmxhZyA9IGZhbHNlOwoJCQkJCQl9KTsKCQkJCQl9OwoJCQkJCWlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiaW50ZXJhY3RpdmUiKSB7CgkJCQkJCWxldCBsb2dpbkJ0biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5BcHBIZWFkZXItcHJvZmlsZSBidXR0b24iKTsKCgkJCQkJCWlmIChsb2dpbkJ0bikgewoJCQkJCQkJLy/mnKrnmbvlvZU65omn6KGM55uR5ZCsCgkJCQkJCQlsZXQgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihyZW1vdmVMb2dpbk5vdGljZSk7CgkJCQkJCQlvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTsKCQkJCQkJfQoJCQkJCX0KCQkJCX07CgkJCX0sCgkJfSwKCQl7CgkJCW5hbWU6ICLnn6XkuY7kuJPmoI8iLAoJCQl1cmw6ICJ6aHVhbmxhbi56aGlodS5jb20vcC8iLAoJCQlmdW46IGZ1bmN0aW9uICgpIHsKCQkJCS8qKgoJCQkJICogUEPnq6865bGP6JS955m75b2V5by556qXCgkJCQkgKiBAcGFyYW0gICAgICB7bGlzdH0gIG11dGF0aW9uc0xpc3QgIFRoZSBtdXRhdGlvbnMgbGlzdAoJCQkJICovCgkJCQlsZXQgcmVtb3ZlTG9naW5Ob3RpY2UgPSBmdW5jdGlvbiAobXV0YXRpb25zTGlzdCkgewoJCQkJCWZvciAobGV0IG11dGF0aW9uIG9mIG11dGF0aW9uc0xpc3QpIHsKCQkJCQkJZm9yIChsZXQgbm9kZSBvZiBtdXRhdGlvbi5hZGRlZE5vZGVzKSB7CgkJCQkJCQlpZiAobm9kZS5xdWVyeVNlbGVjdG9yKCIuc2lnbkZsb3dNb2RhbCIpKSB7CgkJCQkJCQkJLy/mnInnmbvpmYblvLnnqpcx5pe2OuaooeaLn+eCueWHu+WFs+mXreaMiemSrgoJCQkJCQkJCWxldCBidXR0b24gPSBub2RlLnF1ZXJ5U2VsZWN0b3IoIi5CdXR0b24uTW9kYWwtY2xvc2VCdXR0b24uQnV0dG9uLS1wbGFpbiIpOwoJCQkJCQkJCWlmIChidXR0b24pIHsKCQkJCQkJCQkJaWYgKExvZ2luRmxhZyA9PSB0cnVlKSB7CgkJCQkJCQkJCQlidXR0b24uY2xpY2soKTsKCQkJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQkJCUxvZ2luRmxhZyA9IHRydWU7CgkJCQkJCQkJCX0KCQkJCQkJCQkJcmV0dXJuOwoJCQkJCQkJCX0KCQkJCQkJCX0gZWxzZSBpZiAoZ2V0WHBhdGgoJy8vYnV0dG9uW3RleHQoKT0i56uL5Y2z55m75b2VL+azqOWGjCJdJywgbm9kZSkpIHsKCQkJCQkJCQkvL+ayoeacieeZu+W9leW8ueeqlzHml7bkvJrlh7rnjrDlvLnnqpcyCgkJCQkJCQkJZ2V0WHBhdGgoJy8vYnV0dG9uW3RleHQoKT0i56uL5Y2z55m75b2VL+azqOWGjCJdJywgbm9kZSkucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnJlbW92ZSgpOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfQoJCQkJfTsKCgkJCQlkb2N1bWVudC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7CgkJCQkJaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJpbnRlcmFjdGl2ZSIpIHsKCQkJCQkJbGV0IGxvZ2luQnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLkNvbHVtblBhZ2VIZWFkZXItcHJvZmlsZSBidXR0b24iKTsKCQkJCQkJbGV0IGxvZ2luQ2xzOwoJCQkJCQl0cnkgewoJCQkJCQkJbG9naW5DbHMgPSBsb2dpbkJ0bi5nZXRBdHRyaWJ1dGUoImNsYXNzIikuaW5jbHVkZXMoIkJ1dHRvbiIpOwoJCQkJCQl9IGNhdGNoIChlcnJvcikgewoJCQkJCQkJLyogZW1wdHkgKi8KCQkJCQkJfQoKCQkJCQkJaWYgKGxvZ2luQ2xzKSB7CgkJCQkJCQkvL+acqueZu+W9lTrmt7vliqDkuovku7Ys5LiN5oum5oiqCgkJCQkJCQlsb2dpbkJ0bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uICgpIHsKCQkJCQkJCQlMb2dpbkZsYWcgPSBmYWxzZTsKCQkJCQkJCX0pOwoJCQkJCQkJLy/mnKrnmbvlvZU65omn6KGM55uR5ZCsCgkJCQkJCQlsZXQgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihyZW1vdmVMb2dpbk5vdGljZSk7CgkJCQkJCQlvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTsKCQkJCQkJfQoJCQkJCX0KCQkJCX07CgkJCX0sCgkJfSwKCgkJewoJCQluYW1lOiAi55m+5bqm6LS05ZCnIiwKCQkJdXJsOiAidGllYmEuYmFpZHUuY29tIiwKCQkJaXRlbXM6IFsKCQkJCS8v5oKs5rWu5oyJ6ZKuOuaJk+W8gOeZvuW6pui0tOWQpwoJCQkJIi5uYXYtYmFyLWJvdHRvbSIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLnmb7luqbmloflupMxIiwKCQkJdXJsOiAiL3drLmJhaWR1LmNvbS92aWV3LyIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruaMiemSrijkuIrmlrkpOueZvuW6puaWh+W6kwoJCQkJIi53ay1zdHVkZW50LWRlZmVuc2UiLAoJCQldLAoJCX0sCgkJewoJCQluYW1lOiAi55m+5bqm5paH5bqTMiIsCgkJCXVybDogInRhbmJpLmJhaWR1LmNvbS9oNWFwcHRvcGljL2Jyb3dzZS8iLAoJCQlpdGVtczogWwoJCQkJLy/mgqzmta7mjInpkq4o5LiK5pa5KTrnmb7luqbmloflupMKCQkJCSIud2stc3R1ZGVudC1saW1pdC1qdW1wIiwKCQkJCSIuYmFydG9wIiwKCQkJCS8v5oKs5rWu5oyJ6ZKuKOS4i+aWuSk65LiL6L29QXBwLOe7p+e7remYheivuwoJCQkJIi53ay1ib3R0b20tYnRuIiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogIueZvuWutuWPtyIsCgkJCXVybDogImJhaWppYWhhby5iYWlkdS5jb20vcyIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruaMiemSrjrnmb7luqZBUFDlhoXmiZPlvIAKCQkJCSIjYmRyYWlucndEcmFnQnV0dG9uIiwKCQkJCS8v5LiL6L295by556qXCgkJCQkvLyIubGF5ZXItd3JhcCIsCgkJCQkvL+aCrOa1ruaMiemSrjp4eHjni6zlrrbor63pn7MKCQkJCS8vIi51bmRlZmluZWQiLAoJCQldLAoJCX0sCgkJewoJCQluYW1lOiAi55m+5bqm6LWE6K6vK+eZvuW6pummlumhtSIsCgkJCXVybDogIm1iZC5iYWlkdS5jb20vbmV3c3BhZ2UvZGF0YSIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruaMiemSrjrnmb7luqZBUFDlhoXmiZPlvIAKCQkJCSIjYmRyYWlucndEcmFnQnV0dG9uIiwKCQkJCS8v5oKs5rWu5oyJ6ZKuOueZvuW6pkFQUOWGheaSreaUvgoJCQkJIi5kcmFnLWJvdHRvbSIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLohb7orq/mlrDpl7siLAoJCQl1cmw6ICJ2aWV3LmluZXdzLnFxLmNvbS8iLAoJCQlpdGVtczogWwoJCQkJLy/mgqzmta7mjInpkq466L+U5Zue6aaW6aG1CgkJCQkiW2NsYXNzXj1kb3dubG9hZGVyLWZsb2F0aW5nLWJhcl9mbG9hdGluZ1JpZ2h0X19dIiwKCQkJCSJbY2xhc3NePXZpZGVvLWJvdHRvbS1iYXJfbmV3c09wZW5fX10iLAoJCQldLAoJCX0sCgkJewoJCQluYW1lOiAi6IW+6K6v6KeG6aKRIiwKCQkJdXJsOiAibS52LnFxLmNvbSIsCgkJCWl0ZW1zOiBbCgkJCQkvL+S4i+i9veW8ueeqlwoJCQkJIi5hdC1hcHAtYmFubmVyIiwKCQkJCS8v5omT5byAQVBQ5p+l55yL6auY5riF5YaF5a65CgkJCQkiLm9wZW5fYXBwX2JvdHRvbSIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLkvJjphbfop4bpopEiLAoJCQl1cmw6ICJ5b3VrdS5jb20iLAoJCQlpdGVtczogWwoJCQkJLy/kuIvovb3lvLnnqpcKCQkJCSIuY2FsbEVuZF9ib3giLAoJCQkJLy/mgqzmta7mjInpkq4o5Li76aG1KTrmiZPlvIDkvJjphbdBUFDmm7TmtYHnlYUKCQkJCSIuY2FsbEVuZF9maXhlZF9ib3giLAoJCQkJLy/mgqzmta7mjInpkq465omT5byA5LyY6YW3QVBQ5pu05rWB55WFCgkJCQkiLnVuZGVmaW5lZCIsCgkJCQkvL+aCrOa1ruaMiemSrjrnuqLljIUKCQkJCSIuQ29ybmVyLWNvbnRhaW5lciIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLniLHlpYfoiboiLAoJCQl1cmw6ICJpcWl5aS5jb20vIiwKCQkJaXRlbXM6IFsKCQkJCS8v5LiL6L295by556qXCgkJCQkiLm0taXF5R3VpZGUtbGF5ZXIiLAoJCQkJLy/miZPlvIDniLHlpYfoibpBUFAs55yL57K+5b2p6KeG6aKRCgkJCQkiW2NsYXNzXj1DaGFubmVsSG9tZUJhbm5lcl0iLAoJCQkJLy9QQ+errzrnmbvlvZXmj5DnpLrkuIrkvqcKCQkJCSIucGxfXzEiLAoJCQldLAoJCX0sCgkJewoJCQluYW1lOiAi5aW955yL6KeG6aKRIiwKCQkJdXJsOiAiaGFva2FuLmJhaWR1LmNvbS8iLAoJCQlpdGVtczogWwoJCQkJLy/mgqzmta7mjInpkq465omT5byA5aW955yLYXBwKOS4remXtCkKCQkJCSIub3Blbi1hcHAtdG9wIiwKCQkJCS8v5Zu65a6a5paH5a2XOuaJk+W8gEFQUCjlpJopCgkJCQkiLnRvcC12aWRlby1jYXJkLWltZy1hcHAiLAoJCQkJLy/lm7rlrprmjInpkq465LiL6L29QVBQKOinhumikeaSreaUvuaXtikKCQkJCSIudmlkZW8tcGxheWVyLWRvd25sb2FkLXRpcHMiLAoJCQkJLy/lm7rlrprmjInpkq465omT5byAKOW6lemDqCkKCQkJCSIub3Blbi1hcHAtYm90dG9tIiwKCQkJCS8v5Zu65a6a5oyJ6ZKuOuaJk+W8gCjlupXpg6g65Liq5YirKQoJCQkJIi5OZXdPcGVuQXBwIiwKCQkJCS8vUEPnq6/lm7rlrprmjInpkq465LiL6L29QVBQKOinhumikeaaguWBnOaXtikKCQkJCSIucGxheWVyLWxlZnR0aXAtaW5uZXIiLAoJCQkJLy9QQ+err+eZu+W9leaPkOekujrnmbvlvZXmj5DnpLoKCQkJCSIjcGFzc3BvcnQtbG9naW4tcG9wIiwKCQkJCS8vUEPnq6/nmbvlvZXmj5DnpLo65pym6IOn6IOM5p2/CgkJCQkiLnBvcC1tYXNrIiwKCQkJCS8vUEPnq6/nmbvlvZXmj5DnpLo65oKs5rWu5o+Q56S6CgkJCQkiLnBhZ2UtdG9wLXJpZ2h0aW5mby1wb3BvdmVyIiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogIm0xOTA155S15b2x572RIiwKCQkJdXJsOiAiMTkwNS5jb20vIiwKCQkJaXRlbXM6IFsKCQkJCS8v5oKs5rWu5by556qXOuaJk+W8gGFwcAoJCQkJIiNwb3B1cE1vZHVsZSIsCgkJCQkvL+aCrOa1ruaMiemSrjoKCQkJCSIub3Blbi1saW5rIiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogIueZvuW6puaQnOe0oiIsCgkJCXVybDogImJhaWR1LmNvbSIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aQnOe0oue7k+aenDrlsI/nqIvluo8KCQkJCSJbc3JjaWQ9eGN4X211bHRpXSIsCgkJCQkvL+aQnOe0oue7k+aenDrnmb7luqbmiYvmnLrliqnmiYsKCQkJCSJbc3JjaWQ9YXBwX21vYmlsZV9zaW1wbGVdIiwKCQkJCS8v5pCc57Si57uT5p6cOueZvuW6puaJi+acuuWKqeaJizrlronlhajkuIvovb0KCQkJCSJbc3JjaWQ9YXBwX21vYmlsZV9zaW1wbGVfc2FmZXR5XSIsCgkJCQkvL+aQnOe0oue7k+aenDrnmb7luqblupTnlKjmkJzntKIoSU9TKQoJCQkJIltzcmNpZD1hcHBfbW9iaWxlX2lvc10iLAoJCQldLAoJCX0sCgkJewoJCQluYW1lOiAi5ZOU5ZOp5ZOU5ZOpIiwKCQkJdXJsOiAiYmlsaWJpbGkuY29tIiwKCQkJaXRlbXM6IFsKCQkJCS8v5oKs5rWu5oyJ6ZKuOuaJk+W8gGFwcCznnIvkvaDmhJ/lhbTotqPnmoTlhoXlrrko5Li76aG1KQoJCQkJIi5tLWhvbWUtZmxvYXQtb3BlbmFwcCIsCgkJCQkvL+aCrOa1ruaMiemSrjrmiZPlvIBhcHAoVVDkuLvpobUpCgkJCQkiLm0tc3BhY2UtZmxvYXQtb3BlbmFwcCIsCgkJCQkvL+aCrOa1ruaMiemSrjrmiZPlvIBhcHAs55yL6auY5riF5YaF5a65KOinhumikeWFqOWxjykKCQkJCSIubXBsYXllci13aWRlc2NyZWVuLWNhbGxhcHAiLAoJCQkJLy/mgqzmta7mjInpkq46YmlsaWJpbGnlhoXmiZPlvIAo5bqV6YOoKQoJCQkJIi5tLWZsb2F0LW9wZW5hcHAiLAoJCQkJLy/mgqzmta7lvLnnqpc6YmlsaWJpbGnlhoXmiZPlvIAKCQkJCSIub3BlbmFwcC1kaWFsb2ciLAoJCQkJLy/lm7rlrprmjInpkq7vvJrmkq3mlL7ml7bkuIvovb0KCQkJCSIubXBsYXllci13aWRlc2NyZWVuLWNhbGxhcHAiLAoJCQkJLy9QQ+errzrnmbvlvZXmj5DnpLoo5Y+z5LiL6KeSKQoJCQkJIi5sdC1yb3ciLAoJCQkJLy9QQ+errzrnmbvlvZXmj5DnpLoo5Y+z5LiK6KeSKQoJCQkJIi5sb2dpbi1wYW5lbC1wb3BvdmVyOmhhcygubG9naW4tdGlwLWNvbnRlbnQpIiwKCQkJCS8vUEPnq68655m75b2V5o+Q56S6KOaSreaUvuWZqCkKCQkJCSIuYnB4LXBsYXllci10b2FzdC13cmFwIiwKCQkJCS8vUEPnq68655m75b2V5o+Q56S6KOWPs+S4iuinkikKCQkJCSJkaXY6aGFzKC51bmxvZ2luLXBvcG92ZXItYXZhdGFyKSIsCgkJCQkvL1BD56uvOua7keWKqOaPkOekuijmraPkuIvmlrk66aaW5qyhKQoJCQkJIi50cmlhbC1mZWVkLXdyYXAiLAoJCQldLAoJCQlmdW46IGZ1bmN0aW9uICgpIHsKCQkJCWxldCBhZGQ7CgkJCQlmdW5jdGlvbiBtdXRhdGlvbkNhbGxiYWNrKHJlY29yZCwgb2JzZXJ2ZXIpIHsKCQkJCQkvL+W3suehruWumueZu+W9lTrlgZzmraLnm5HlkKwKCQkJCQlsZXQgbG9naW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuaGVhZGVyLWVudHJ5LW1pbmkiKTsKCQkJCQlpZiAobG9naW4pIHsKCQkJCQkJb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOwoJCQkJCX0KCQkJCQkvL+W3suehruWumuacqueZu+W9lTrmiafooYzlh73mlbAKCQkJCQlsZXQgbG9naW5CdG4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuaGVhZGVyLWxvZ2luLWVudHJ5Iik7CgkJCQkJaWYgKGxvZ2luQnRuKSB7CgkJCQkJCWlmICghYWRkKSB7CgkJCQkJCQljb25zb2xlLmxvZygi6ISa5pys5rOo5YWl5oiQ5YqfIik7CgkJCQkJCQkvL+a3u+WKoOS6i+S7tjrkuI3mi6bmiKoKCQkJCQkJCWxvZ2luQnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKCkgewoJCQkJCQkJCUxvZ2luRmxhZyA9IGZhbHNlOwoJCQkJCQkJfSk7CgkJCQkJCQlhZGQgPSB0cnVlOwoJCQkJCQl9CgkJCQkJCWZvciAobGV0IGFyciBvZiByZWNvcmQpIHsKCQkJCQkJCWZvciAobGV0IG5vZGUgb2YgYXJyLmFkZGVkTm9kZXMpIHsKCQkJCQkJCQlsZXQgYnV0dG9uOwoJCQkJCQkJCXRyeSB7CgkJCQkJCQkJCWJ1dHRvbiA9IG5vZGUucXVlcnlTZWxlY3RvcigiLmJpbGktbWluaS1jbG9zZS1pY29uIik7CgkJCQkJCQkJfSBjYXRjaCAoZXJyb3IpIHsKCQkJCQkJCQkJLyogZW1wdHkgKi8KCQkJCQkJCQl9CgkJCQkJCQkJaWYgKGJ1dHRvbikgewoJCQkJCQkJCQkvL+acieeZu+mZhuW8ueeql+aXtjrmqKHmi5/ngrnlh7vlhbPpl63mjInpkq4KCQkJCQkJCQkJaWYgKExvZ2luRmxhZyA9PSB0cnVlKSB7CgkJCQkJCQkJCQljb25zb2xlLmxvZyhMb2dpbkZsYWcpOwoJCQkJCQkJCQkJY29uc29sZS5sb2coIuiHquWKqOaLpuaIqiIpOwoJCQkJCQkJCQkJYnV0dG9uLmNsaWNrKCk7CgoJCQkJCQkJCQkJY29uc29sZS5sb2coIuaBouWkjeaSreaUviIpOwoJCQkJCQkJCQkJbGV0IHZpZGVvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmJweC1wbGF5ZXItdmlkZW8td3JhcCB2aWRlbyIpOwoJCQkJCQkJCQkJdmlkZW8ucGxheSgpOwoJCQkJCQkJCQl9IGVsc2UgewoJCQkJCQkJCQkJY29uc29sZS5sb2coTG9naW5GbGFnKTsKCQkJCQkJCQkJCWNvbnNvbGUubG9nKCLmiYvliqjmi6bmiKoiKTsKCQkJCQkJCQkJCUxvZ2luRmxhZyA9IHRydWU7CgkJCQkJCQkJCX0KCQkJCQkJCQkJcmV0dXJuOwoJCQkJCQkJCX0KCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJCWxldCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG11dGF0aW9uQ2FsbGJhY2spOwoJCQkJb2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7CgkJCX0sCgkJfSwKCQl7CgkJCW5hbWU6ICJC56uZ5LiT5qCPIiwKCQkJdXJsOiAiYmlsaWJpbGkuY29tL3JlYWQvIiwKCQkJaXRlbXM6IFsKCQkJCS8v5oKs5rWu5oyJ6ZKuOuaJk+W8gEFwcCznnIvmm7TlpJrnsr7lvanlhoXlrrkKCQkJCSIuZmxvYXQtYnRuIiwKCQkJCS8vUEPnq68655m75b2V5o+Q56S6CgkJCQkiZGl2OmhhcygudW5sb2dpbi1wb3BvdmVyLWF2YXRhcikiLAoJCQldLAoJCX0sCgkJewoJCQluYW1lOiAiQuermeeslOiusCIsCgkJCXVybDogImJpbGliaWxpLmNvbS9vcHVzLyIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruaMiemSrjrmiZPlvIBBcHAs55yL5pu05aSa57K+5b2p5YaF5a65CgkJCQkiLmZsb2F0LWJ0biIsCgkJCQkvL+aCrOa1ruW8ueeqlzrmiZPlvIBBUFAKCQkJCSIub3BlbmFwcC1kaWFsb2ciLAoJCQkJLy9QQ+errzrnmbvlvZXmj5DnpLoKCQkJCSJkaXY6aGFzKC51bmxvZ2luLXBvcG92ZXItYXZhdGFyKSIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLopb/nk5zop4bpopEiLAoJCQl1cmw6ICJpeGlndWEuY29tIiwKCQkJaXRlbXM6IFsKCQkJCS8v5omT5byA5by556qXOuaJk+W8gAoJCQkJIi5sYW5kaW5nX2d1aWRlIiwKCQkJCS8vUEPnq68655m75b2V5o+Q56S6CgkJCQkiLmxvZ2luQmVuZWZpdE5vdGlmaWNhdGlvbiIsCgkJCQkvL+aCrOa1ruaMiemSrjrmiZPlvIDopb/nk5zop4bpopEs55yL5YWo572R6LaF5riF6KeG6aKRCgkJCQkiLnhpZ3VhLWRvd25sb2FkIiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogIuaKlumfs+eUteiEkeeJiCIsCgkJCXVybDogInd3dy5kb3V5aW4uY29tIiwKCQkJaXRlbXM6IFsKCQkJCS8vUEPnq6865Y+z5LiL6KeS55m75b2V5o+Q56S6KOeUu+i0qCkKCQkJCSIubG9naW4tY2xhcml0eS1uZXciLAoJCQkJLy9QQ+errzrkuIvmlrnmu5HliqjlvJXlr7wKCQkJCSJbZGF0YS1lMmU9cmVjb21tZW5kLWd1aWRlLW1hc2tdIiwKCQkJCS8vUEPnq68655m76ZmG5ZCO5p+l55yL6K+E6K66CgkJCQkiI3JlbGF0ZWQtdmlkZW8tY2FyZC1sb2dpbi1ndWlkZSIsCgkJCV0sCgkJCWZ1bjogZnVuY3Rpb24gKCkgewoJCQkJLy/mi6bmiKrnmbvlvZXlvLnnqpcKCQkJCW9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKCQkJCQkvL+WinuWKoOeCueWHu+S6i+S7tgoJCQkJCWxldCBpbnRlciA9IHNldEludGVydmFsKCgpID0+IHsKCQkJCQkJbGV0IGxvZ2luQnRuID0gZ2V0WHBhdGgoJy8vZGl2W3RleHQoKT0i55m75b2VIl0gfCAvL3BbdGV4dCgpPSLnmbvlvZUiXScsIGRvY3VtZW50KS5wYXJlbnRFbGVtZW50OwoJCQkJCQlpZiAobG9naW5CdG4pIHsKCQkJCQkJCWxvZ2luQnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKCkgewoJCQkJCQkJCUxvZ2luRmxhZyA9IGZhbHNlOwoJCQkJCQkJCWNsZWFySW50ZXJ2YWwoaW50ZXIpOwoJCQkJCQkJfSk7CgkJCQkJCX0KCQkJCQl9LCAxMDAwKTsKCQkJCQkvL+aJp+ihjOebkeWQrAoJCQkJCWxldCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHJlbW92ZUxvZ2luTm90aWNlKTsKCQkJCQlvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTsKCQkJCX07CgoJCQkJLyoqCgkJCQkgKiBSZW1vdmVzIGEgbG9naW4gbm90aWNlLgoJCQkJICoKCQkJCSAqIEBwYXJhbSAgICAgIHtNdXRhdGlvblJlY29yZFtdfSAgbXV0YXRpb25zTGlzdCAgVGhlIG11dGF0aW9ucyBsaXN0CgkJCQkgKiBAcGFyYW0gICAgICB7TXV0YXRpb25PYnNlcnZlcn0gIG9ic2VydmVyICAgICAgIFRoZSBvYnNlcnZlcgoJCQkJICovCgkJCQlsZXQgcmVtb3ZlTG9naW5Ob3RpY2UgPSBmdW5jdGlvbiAobXV0YXRpb25zTGlzdCkgewoJCQkJCWZvciAobGV0IG11dGF0aW9uIG9mIG11dGF0aW9uc0xpc3QpIHsKCQkJCQkJZm9yIChsZXQgbm9kZSBvZiBtdXRhdGlvbi5hZGRlZE5vZGVzKSB7CgkJCQkJCQlsZXQgY2xvc2VCdG47CgkJCQkJCQl0cnkgewoJCQkJCQkJCWNsb3NlQnRuID0gbm9kZS5xdWVyeVNlbGVjdG9yKCIuZHktYWNjb3VudC1jbG9zZSIpOwoJCQkJCQkJfSBjYXRjaCAoZXJyb3IpIHsKCQkJCQkJCQkvKiBlbXB0eSAqLwoJCQkJCQkJfQoJCQkJCQkJLy/lhbPpl63nmbvlvZXlvLnnqpcKCQkJCQkJCWlmIChjbG9zZUJ0bikgewoJCQkJCQkJCWlmIChMb2dpbkZsYWcgPT0gdHJ1ZSkgewoJCQkJCQkJCQljbG9zZUJ0bi5jbGljaygpOwoJCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJCUxvZ2luRmxhZyA9IHRydWU7CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQkJcmV0dXJuOwoJCQkJCQl9CgkJCQkJfQoJCQkJfTsKCQkJfSwKCQl9LAoJCXsKCQkJbmFtZTogIuS4gemmmeWbrSIsCgkJCXVybDogIjNnLmR4eS5jbiIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruaMiemSrjpBUFDlhoXmiZPlvIAKCQkJCSJbY2xhc3NePWZpeGVkQnRuXSIsCgkJCQkvL+aCrOa1ruaMiemSrjpBcHDlhoXmiZPlvIAo5Li76aG1KQoJCQkJIi53cmFwIiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogIuWBpeW6t+eVjCIsCgkJCXVybDogInd3dy5jbi1oZWFsdGhjYXJlLmNvbS8iLAoJCQlpdGVtczogWwoJCQkJLy/mgqzmta7mjInpkq465omT5byAKOW6lemDqOa7muWKqCkKCQkJCSJmb290ZXIiLAoJCQldLAoJCX0sCgkJewoJCQluYW1lOiAi5b6u5Y2aIiwKCQkJdXJsOiAibS53ZWliby5jbiIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruaMiemSrjrlnKjlvq7ljZrlhoXmiZPlvIAo55m+5bqm54Ot6K6uKQoJCQkJIi5hcHAtYnRuLWJveCIsCgkJCQkvL+aCrOa1ruaMiemSrjrnmbvlvZUv5rOo5YaMCgkJCQkiLmxvZ2luLWJ0biIsCgkJCQkvL+Wwj+eoi+W6jwoJCQkJIi53cmFwIiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogIuaWsOa1quaWsOmXuyIsCgkJCXVybDogInNpbmEuY24vIiwKCQkJaXRlbXM6IFsKCQkJCS8v5oKs5rWu5oyJ6ZKuOuaJk+W8gEFQUAoJCQkJIi5jYWxsQXBwX2ZsX2J0biIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLmlrDmtarotKLnu48iLAoJCQl1cmw6ICJzaW5hLmNuLyIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruW8ueeqlzrnq4vljbPmm7TmlrAo5Li76aG1Oummluasoeiuv+mXrikKCQkJCSIjU0ZBX25ld1ZlcnNpb25fcG9wIiwKCQkJCS8v5oKs5rWu5oyJ6ZKuOuaJk+W8gEFwcOS4reafpeeciyjkuLvpobU65bqV6YOoKQoJCQkJIi5tLWNsaWVudC1jYWxsMiIsCgkJCQkvL+WbuuWumuaMiemSrjrnq4vljbPnmbvlvZUo5Li76aG1Oui1hOiurykKCQkJCSIubG9naW4tYm94IiwKCQkJCS8v5oKs5rWu5oyJ6ZKuOueri+WNs+afpeeciyjotYTorq865bqV6YOoLOmmluasoeiuv+mXrikKCQkJCSIud2FwLW1zZy1iYXItd2FwIiwKCQkJCS8v5oKs5rWu5oyJ6ZKuOuWOu0FQUOWQrOivremfs+aSreaKpSjotYTorq865Lit6Ze0KQoJCQkJIi5icm9hZGNhc3QiLAoJCQkJLy/mgqzmta7mjInpkq465omT5byAQVBQKOi1hOiurzrpobbpg6gs5pyJYnVnKQoJCQkJIi5tLXNlbnRpbWVudC1ibGsiLAoJCQkJLy/mgqzmta7mjInpkq465omT5byAQVBQKOi1hOiurzrlupXpg6gpCgkJCQkiLm0tZ3Vzcy1jYWlqaW5nIiwKCQkJCS8v5Zu65a6a5oyJ6ZKuOueri+WNs+S9k+mqjCjotYTorq865bqV6YOoKQoJCQkJIiNub3JtX3FyY29kZV9saW5rX2F1dG8iLAoJCQkJLy/mgqzmta7mjInpkq465omT5byAQVBQKOWtkOagjzE65bqV6YOoKQoJCQkJIiNzdWJQYWdlX2JvdHRvbV9jYWxsdXBfYnRuIiwKCQkJCS8v5oKs5rWu5oyJ6ZKuOuaJk+W8gEFQUCjlrZDmoI8yOuW6lemDqCkKCQkJCSIjX19jYWxsdXBfYm90dG9tX25ldyIsCgkJCQkvL+aCrOa1ruaMiemSrjrmiZPlvIBBUFAo5a2Q5qCPMjrpobbpg6gs5pyJYnVnKQoJCQkJIi5qcy1hcHAtaGVhZGVyIiwKCQkJXSwKCQkJZnVuOiBmdW5jdGlvbiAoKSB7CgkJCQkvL+S/ruWkjeS4iui/sOinhOWImeS6p+eUn+eahGJ1ZwoJCQkJbGV0IGludGVyID0gc2V0SW50ZXJ2YWwoKCkgPT4gewoJCQkJCWxldCBpdGVtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmNvbXBhdGliaWxpdHktbW9kZSIpOwoJCQkJCWlmIChpdGVtLnN0eWxlLm1hcmdpblRvcCA9PSAiMHB4IikgewoJCQkJCQljbGVhckludGVydmFsKGludGVyKTsKCQkJCQl9IGVsc2UgewoJCQkJCQlpdGVtLnN0eWxlLm1hcmdpblRvcCA9ICIwcHgiOwoJCQkJCX0KCQkJCX0sIDEwMDApOwoJCQl9LAoJCX0sCgkJewoJCQluYW1lOiAi5Lic5pa56LSi5a+M572RIiwKCQkJdXJsOiAid2FwLmVhc3Rtb25leS5jb20vIiwKCQkJaXRlbXM6IFsKCQkJCS8v5oKs5rWu5oyJ6ZKuOuaJk+W8gEFQUCjpobbpg6gpCgkJCQkiLmZpeGVkX3RvcCIsCgkJCQkvL+WbuuWumuaMiemSrjrkuIvovb0o5Li76aG1OumhtumDqCkKCQkJCSIjSW5kZXhEVCIsCgkJCQkvL+aCrOa1ruaMiemSrjrmiZPlvIDkuIvovb0o5Li76aG1OumhtumDqCkKCQkJCSIuZW13YXBhc194bGR0X2ZpeGVkIiwKCQkJCS8v5oKs5rWu5oyJ6ZKuOuaJk+W8gEFQUCjkuLvpobU65bqV6YOoKQoJCQkJIi5vcGVuLWluYXBwIiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogIuS4nOaWuei0ouWvjOe9kTrogqHlkKciLAoJCQl1cmw6ICJtZ3ViYS5lYXN0bW9uZXkuY29tLyIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruW8ueeqlzrmiZPlvIBBUFAKCQkJCSIjYXBwYm94IiwKCQkJCS8v5oKs5rWu5oyJ6ZKuOuS4nOaWuei0ouWvjEFQUOWGheaJk+W8gCjlupXpg6gpCgkJCQkiI29wZW5fYXBwIiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogIueUteWtkOWPkeeDp+WPiyIsCgkJCXVybDogIm0uZWxlY2ZhbnMuY29tIiwKCQkJaXRlbXM6IFsKCQkJCS8v5oKs5rWu5oyJ6ZKuOuS4u+mhteWPs+S+pwoJCQkJIi5obV9xdWljayIsCgkJCQkvL+aCrOa1ruaMiemSrjrnmbvpmYYv5rOo5YaMCgkJCQkiLmxvZ2luLXJlZy1maXhlZCIsCgkJCQkvL+aCrOa1ruaMiemSrjrkuIrmlrnmiZPlvIBhcHAKCQkJCSIub3Blbl9hcHAiLAoJCQldLAoJCX0sCgkJewoJCQluYW1lOiAi5Lq65rCR572RIiwKCQkJdXJsOiAiYXBwLnBlb3BsZS5jbiIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruaMiemSrjrmiZPlvIAo5bqV6YOoKQoJCQkJIi5hcHAtYm90LXdyYXAiLAoJCQldLAoJCX0sCgkJewoJCQluYW1lOiAi5paw5Lqs5oqlIiwKCQkJdXJsOiAibS5iam5ld3MuY29tLmNuL2RldGFpbC8iLAoJCQlpdGVtczogWwoJCQkJLy/mgqzmta7mjInpkq4656uL5Y2z5omT5byAKOmhtumDqCkKCQkJCSIueGpiLXRvcCIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLop4Llr5/ogIXnvZEiLAoJCQl1cmw6ICJndWFuY2hhLmNuIiwKCQkJaXRlbXM6IFsKCQkJCS8v5Zu65a6a5oyJ6ZKuOueCueWHu+S4i+i9vSjpobbpg6gpCgkJCQkiLmdfaGVhZGVyNDQiLAoJCQkJLy/mgqzmta7mjInpkq46QVBQ5LiT5LqrKOW6lemDqCkKCQkJCSIuZ19zd2lwZXJfY29udGFpbmVyIiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogIua+jua5g+aWsOmXuyIsCgkJCXVybDogIm0udGhlcGFwZXIuY24vbmV3c0RldGFpbF9mb3J3YXJkIiwKCQkJaXRlbXM6IFsKCQkJCS8v5oKs5rWu5oyJ6ZKuOuaWsOmXu+a7muadoSjlupXpg6gpCgkJCQkiW2NsYXNzXj1pbmRleF9mb290ZXJfYmFubmVyXSIsCgkJCQkiWy5pbmRleF9mb290ZXJfYmFubmVyX19NY3JfUl0iLAoJCQldLAoJCX0sCgkJewoJCQluYW1lOiAi5Yek5Yew5paw6Ze7IiwKCQkJdXJsOiAiaWZlbmcuY29tIiwKCQkJaXRlbXM6IFsKCQkJCS8v5oKs5rWu5oyJ6ZKuOueri+WNs+aJk+W8gCjkuLvpobUpCgkJCQkiW2NsYXNzXj1pbmRleF9maXhTbGlkZV9dIiwKCQkJCS8v5oKs5rWu5oyJ6ZKuOua7muWKqOaWsOmXuyjmlrDpl7vlupXpg6gpCgkJCQkiW2NsYXNzXj1pbmRleF9ib3R0b21fYm94X10iLAoJCQkJLy/mgqzmta7mjInpkq4656uL5Y2z5omT5byAKOi0oue7j+W6lemDqCkKCQkJCSJbY2xhc3NePWluZGV4X2JvdHRvbVNsaWRlX10iLAoJCQkJLy/mgqzmta7mjInpkq465rua5Yqo5paw6Ze7KOWNq+inhuW6lemDqCkKCQkJCSJbY2xhc3NePWluZGV4X2ZpeEJvdHRvbV9dIiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogIue9keaYk+aWsOmXuyIsCgkJCXVybDogIjNnLjE2My5jb20iLAoJCQlpdGVtczogWwoJCQkJLy/lm7rlrprmjInpkq7vvJpBcHDlhoXmiZPlvIAo5bqV6YOoKQoJCQkJIi5iYWNrZmxvdy1mbG9hdGluZyIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLnvZHmmJPmlrDpl7siLAoJCQl1cmw6ICJtLjE2My5jb20iLAoJCQlpdGVtczogWwoJCQkJLy/lm7rlrprmjInpkq7vvJpBcHDlhoXmiZPlvIAo5bqV6YOoKQoJCQkJIi5iYWNrZmxvdy1mbG9hdGluZyIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLmkJzni5AiLAoJCQl1cmw6ICJtLnNvaHUuY29tL2EvIiwKCQkJaXRlbXM6IFsKCQkJCS8v5oKs5rWu5oyJ6ZKuOuaJk+W8gEFQUAoJCQkJIiNDYWxsQXBwQ29udGFpbmVyIiwKCQkJCSIuQ2FsbEFwcENvbnRhaW5lciIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLku4rml6XlpLTmnaHnp7vliqjnq6865paH56ugIiwKCQkJdXJsOiAibS50b3V0aWFvLmNvbS9hcnRpY2xlLyIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruaMiemSru+8mkFwcOWGheaJk+W8gCjlupXpg6gpCgkJCQkiLmZsb2F0LWFjdGl2YXRlLWJ1dHRvbi1jb250YWluZXIiLAoJCQkJIi5kb3dubG9hZC1iYXJfX2NvbnRhaW5lciIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLku4rml6XlpLTmnaHnp7vliqjnq6866KeG6aKRIiwKCQkJdXJsOiAibS50b3V0aWFvLmNvbS9hcnRpY2xlLyIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruaMiemSru+8mkFwcOWGheaJk+W8gCjlupXpg6gpCgkJCQkiLmZsb2F0LWFjdGl2YXRlLWJ1dHRvbi1jb250YWluZXIiLAoJCQkJIi5kb3dubG9hZC1iYXJfX2NvbnRhaW5lciIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLku4rml6XlpLTmnaFQQ+erryIsCgkJCXVybDogInd3dy50b3V0aWFvLmNvbS9hcnRpY2xlLyIsCgkJCWl0ZW1zOiBbCgkJCQkvL1BD56uvOuaCrOa1ruW8ueeqlzrmt7vliqDku4rml6XlpLTmnaHliLDnlLXohJHmoYzpnaIKCQkJCSIudHRwLW1lc3NhZ2Utd3JhcHBlciIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLomY7ll4UiLAoJCQl1cmw6ICJtLmh1eGl1LmNvbSIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruaMiemSrjpnbyEo5Li76aG1KQoJCQkJIi5ndWlkZS13cmFwIiwKCQkJCS8v5oKs5rWu5oyJ6ZKuOuaJk+W8gCjpobbpg6gpCgkJCQkiLmpzLXRvcC1maXhlZCIsCgkJCQkvL+aCrOa1ruaMiemSrjrmiZPlvIAo5bqV6YOoKQoJCQkJIi5ib3R0b20tb3Blbi1hcHAtYnRuIiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogIuiZjuaJkSIsCgkJCXVybDogIm0uaHVwdS5jb20iLAoJCQlpdGVtczogWwoJCQkJLy/mgqzmta7mjInpkq46QXBw5YaF5omT5byACgkJCQkiLm9wZW4taHVwdSIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLosYbnk6MiLAoJCQl1cmw6ICJtLmRvdWJhbi5jb20vbW92aWUvc3ViamVjdCIsCgkJCWl0ZW1zOiBbCgkJCQkvL+WbuuWumuaMiemSrjrnlKhBcHDmiZPlvIAo55S15b2x6K+m5oOF6aG1KQoJCQkJIi5zdWJqZWN0LWJhbm5lciIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLlpKrlubPmtIvnlLXohJEiLAoJCQl1cmw6ICJnLnBjb25saW5lLmNvbS5jbiIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruaMiemSrjrmiZPlvIBhcHAo5bqV6YOoKQoJCQkJIi5idG5Gb3JBcHBPcGVuSW1nIiwKCQkJCS8v5oKs5rWu5oyJ6ZKuOuaJk+W8gOefpeenkeaKgEFwcAoJCQkJIi5idG5Gb3JBcHBPcGVuQSIsCgkJCQkvL+WbuuWumuaMiemSrjrnq4vljbPmiZPlvIAo5bqV6YOoKQoJCQkJIi5XYWtlVXB0b3AiLAoJCQldLAoJCX0sCgkJewoJCQluYW1lOiAi5Lit5YWz5p2R5Zyo57q/IiwKCQkJdXJsOiAibS56b2wuY29tLmNuIiwKCQkJaXRlbXM6IFsKCQkJCS8v5oKs5rWu5oyJ6ZKuOuaJk+W8gEFQUAoJCQkJIi5jb3Zlci1iYWNrX3MiLAoJCQkJLy/mgqzmta7mjInpkq46QVBQ5YaF5omT5byACgkJCQkiI2JvdHRvbS1maXhlZC13cmFwcGVyID4gc3BhbiIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICLkuK3lhbPmnZHlnKjnur8yKOaKpeS7tyvorrrlnZspIiwKCQkJdXJsOiAid2FwLnpvbC5jb20uY24iLAoJCQlpdGVtczogWwoJCQkJLy/mgqzmta7mjInpkq465omT5byAQVBQCgkJCQkiLmNvdmVyLWJhY2tfcyIsCgkJCQkvL+aCrOa1ruaMiemSrjpBUFDlhoXmiZPlvIAKCQkJCSIjYm90dG9tLWZpeGVkLXdyYXBwZXIgPiBzcGFuIiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogIuaxvei9puS5i+WutlBD54mIIiwKCQkJdXJsOiAid3d3LmF1dG9ob21lLmNvbS5jbiIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruaMiemSrjrnmbvlvZXmj5DnpLooUEPnq68pCgkJCQkiI2xvZ2luR3VpZGUiLAoJCQldLAoJCX0sCgkJewoJCQluYW1lOiAi5rG96L2m5LmL5a6256e75Yqo54mIIiwKCQkJdXJsOiAibS5hdXRvaG9tZS5jb20uY24iLAoJCQlpdGVtczogWwoJCQkJLy/mgqzmta7mjInpkq46IEFwcOWGheaJk+W8gAoJCQkJIiNmbG9hdF9uZXdfYnV0dG9uIiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogIuWkquW5s+a0i+axvei9piIsCgkJCXVybDogIm0ucGNhdXRvLmNvbS5jbi8iLAoJCQlpdGVtczogWwoJCQkJLy/mgqzmta7lvLnnqpc6IEFwcOWGheaJk+W8gAoJCQkJIiNob21lLWJvdHRvbS1oYWxmLWRpYWxvZyIsCgkJCQkvL+aCrOa1ruaMiemSrjog6L2u5pKt6K+E6K66CgkJCQkiI2RtTGlzdE91dGVyIiwKCQkJXSwKCQl9LAoJCXsKCQkJLy93d3cudGFwdGFwLmNvbQoJCQluYW1lOiAidGFwdGFwIiwKCQkJdXJsOiAid3d3LnRhcHRhcC5jbiIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruaMiemSrjrmiZPlvIB0YXB0YXAKCQkJCSIub3Blbi1hcHAtZ2xvYmFsLWZsb2F0IiwKCQkJXSwKCQl9LAoJCXsKCQkJLy9tLnRhcHRhcC5jb20KCQkJbmFtZTogInRhcHRhcCIsCgkJCXVybDogIm0udGFwdGFwLmNuIiwKCQkJaXRlbXM6IFsKCQkJCS8v5oKs5rWu5oyJ6ZKuOuaJk+W8gHRhcHRhcOafpeeci+abtOWkmueyvuW9qeWGheWuuQoJCQkJIi5hcHAtZG93bmxvYWRfX3dyYXBwZXIiLAoJCQkJLy/oi7nmnpznq6865oKs5rWu5oyJ6ZKuOua3u+WKoOWIsOahjOmdogoJCQkJIi5zaG93LWFkZC10by1zY3JlZW4iLAoJCQkJLy/oi7nmnpznq6865Zu65a6a5oyJ6ZKuOua3u+WKoOWIsOahjOmdogoJCQkJIi5hZGQtdG8tc2NyZWVuLXdyYXAiLAoJCQldLAoJCX0sCgkJewoJCQkvL2h0dHBzOi8vbS5pdGhvbWUuY29tLwoJCQluYW1lOiAiaXTkuYvlrrYiLAoJCQl1cmw6ICJtLml0aG9tZS5jb20iLAoJCQlpdGVtczogWwoJCQkJLy/lm7rlrprmjInpkq4o5bqV6YOoKTrnq4vljbPmiZPlvIAKCQkJCSIub3Blbi1hcHAtYmFubmVyIiwKCQkJXSwKCQl9LAoJCXsKCQkJLy9QQ+eJiDpodHRwOi8vd3d3LjM2MGRvYy5jb20vY29udGVudC8yMC8wNzE3LzE1LzYwMjQ0MzM3XzkyNDg2NTgyMS5zaHRtbAoJCQluYW1lOiAiMzYwZG9jUEPniYgiLAoJCQl1cmw6ICJ3d3cuMzYwZG9jLmNvbS9jb250ZW50LyIsCgkJCWl0ZW1zOiBbCgkJCQkvL+eZu+W9leW8ueeqlwoJCQkJImlmcmFtZSIsCgkJCQkvL+eZu+W9leW8ueeqlzrmnKbog6fmqKHmnb8KCQkJCSJpZnJhbWV+ZGl2IiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogIuW8gOa6kOS4reWbvSIsCgkJCXVybDogInd3dy5vc2NoaW5hLm5ldCIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruaMiemSrijlupXpg6gpOueri+WNs+aJk+W8gAoJCQkJIi5hcHAtZG93bmxvYWQtYmFubmVyLWJveCIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICJzZWdtZW50ZmF1bHTmgJ3lkKYiLAoJCQl1cmw6ICJzZWdtZW50ZmF1bHQuY29tL3EiLAoJCQlpdGVtczogWwoJCQkJLy/nmbvlvZXlvLnnqpcKCQkJCSIubW9kYWwtZGlhbG9nLWNlbnRlcmVkIiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogIumYv+mHjOS6keW8gOWPkeiAheekvuWMuiIsCgkJCXVybDogImRldmVsb3Blci5hbGl5dW4uY29tL2FydGljbGUvIiwKCQkJaXRlbXM6IFsKCQkJCS8v6Zi/6YeM5LqRQXBw5YaF5omT5byACgkJCQkiLmFwcC1maXhlZC1idG4iLAoJCQldLAoJCX0sCgkJewoJCQluYW1lOiAi5Y2O5Li65LqR5byA5Y+R6ICF56S+5Yy6IiwKCQkJdXJsOiAiaHVhd2VpY2xvdWQuY3Nkbi5uZXQvIiwKCQkJaXRlbXM6IFsKCQkJCS8v5Yqg5YWl56S+5Yy6CgkJCQkiLnVzZXItZGVzYy1maXgiLAoJCQldLAoJCX0sCgkJewoJCQkvL2h0dHBzOi8vbS4zNmtyLmNvbS9wLzE5NjQ1ODg5NTE0NzA4NTYKCQkJbmFtZTogIjM25rCqIiwKCQkJdXJsOiAibS4zNmtyLmNvbS9wLyIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruaMiemSrijpobbpg6gpOuaJk+W8gAoJCQkJIi5hcnRpY2xlLXRvcC1zd2lwZXItZ29hcHAiLAoJCQldLAoJCX0sCgkJewoJCQluYW1lOiAi6Zuq55CDIiwKCQkJdXJsOiAieHVlcWl1LmNvbS8iLAoJCQlpdGVtczogWwoJCQkJLy/mgqzmta7mjInpkq465omT5byAYXBwKOaWh+eroCkKCQkJCSIjb3BlbmFwcF9fZml4IiwKCQkJXSwKCQkJZnVuOiBmdW5jdGlvbiAoKSB7CgkJCQkvL+aCrOa1ruaMiemSrjrmiZPlvIBhcHAo5Li76aG1KQoJCQkJZG9jdW1lbnQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkgewoJCQkJCWlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAiY29tcGxldGUiKSB7CgkJCQkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIltjbGFzc149RmxvYXREb3dubG9hZEJ1dHRvbl9tb2JpbGVfb3BlbmFwcF9fZml4X10iKS5yZW1vdmUoKTsKCQkJCQl9CgkJCQl9OwoJCQl9LAoJCX0sCgkJewoJCQluYW1lOiAi5aSp55y85p+lIiwKCQkJdXJsOiAibS50aWFueWFuY2hhLmNvbS8iLAoJCQlpdGVtczogWwoJCQkJLy/mgqzmta7mjInpkq465omT5byAYXBwKOS4u+mhtSkKCQkJCSIuc3dpcGVyLWNvbnRhaW5lciIsCgkJCQkvL+aCrOa1ruaMiemSrjrkuIvovb1BUFAo5LyB5LiaKQoJCQkJIiNiYW5uZXJfbW9iaWxlX3YyIiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogIuermemFt+enu+WKqOeJiCIsCgkJCXVybDogIm0uemNvb2wuY29tLmNuLyIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruaMiemSrjrmiZPlvIBhcHAo5Li76aG1KQoJCQkJIi5ib3R0b20tQXBwIiwKCQkJCS8v5oKs5rWu5oyJ6ZKuOuaJk+W8gGFwcAoJCQkJIltjbGFzc149d2FwSGVhZGVyX2Zvb3Rlci1idXR0b25dIiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogIuermemFt1BD54mIIiwKCQkJdXJsOiAid3d3Lnpjb29sLmNvbS5jbi8iLAoJCQlpdGVtczogWwoJCQkJLy/nmbvlvZXmjInpkq4KCQkJCSIuc2lkZVVubG9naW4iLAoJCQldLAoJCQlmdW46IGZ1bmN0aW9uICgpIHsKCQkJCWxldCBtbyA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uIChtdXRhdGlvbnMpIHsKCQkJCQlmb3IgKGxldCBtdXRhdGlvbiBvZiBtdXRhdGlvbnMpIHsKCQkJCQkJZm9yIChsZXQgbm9kZSBvZiBtdXRhdGlvbi5hZGRlZE5vZGVzKSB7CgkJCQkJCQl0cnkgewoJCQkJCQkJCWxldCBidXR0b24gPSBub2RlLnF1ZXJ5U2VsZWN0b3IoIi5tb2RhbF9fY2xvc2UgIik7CgkJCQkJCQkJaWYgKGJ1dHRvbikgewoJCQkJCQkJCQlidXR0b24uY2xpY2soKTsKCQkJCQkJCQkJY29uc29sZS5sb2coIuWFs+mXreaIkOWKnyIpOwoJCQkJCQkJCX0KCQkJCQkJCX0gY2F0Y2ggKGVycm9yKSB7CgkJCQkJCQkJLyogZW1wdHkgKi8KCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0KCQkJCX0pOwoJCQkJbW8ub2JzZXJ2ZShkb2N1bWVudCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7CgkJCX0sCgkJfSwKCQl7CgkJCW5hbWU6ICLlsI/nuqLkuaYiLAoJCQl1cmw6ICJ3d3cueGlhb2hvbmdzaHUuY29tIiwKCQkJaXRlbXM6IFsKCQkJCS8vQXBw5YaF5omT5byAKOinhumikSkKCQkJCSIuYm90dG9tLWJ1dHRvbi1ib3giLAoJCQkJLy9BcHDlhoXmiZPlvIAo56yU6K6wKQoJCQkJIi5ib3R0b20tYmFyIiwKCQkJXSwKCQkJZnVuOiBmdW5jdGlvbiAoKSB7CgkJCQlsZXQgbW8gPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbiAobXV0YXRpb25zKSB7CgkJCQkJZm9yIChsZXQgbXV0YXRpb24gb2YgbXV0YXRpb25zKSB7CgkJCQkJCWZvciAobGV0IG5vZGUgb2YgbXV0YXRpb24uYWRkZWROb2RlcykgewoJCQkJCQkJbGV0IGJ1dHRvbiA9IG5vZGUucXVlcnlTZWxlY3RvcigiLmljb24tYnRuLXdyYXBwZXIiKTsKCQkJCQkJCWlmIChidXR0b24pIHsKCQkJCQkJCQlpZiAoTG9naW5GbGFnKSB7CgkJCQkJCQkJCWJ1dHRvbi5jbGljaygpOwoJCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJCUxvZ2luRmxhZyA9IHRydWU7CgkJCQkJCQkJfQoJCQkJCQkJCXJldHVybjsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCX0KCQkJCX0pOwoJCQkJbGV0IGxvZ2luQnRuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmxvZ2luLWJ0biIpOwoJCQkJaWYgKGxvZ2luQnRuKSB7CgkJCQkJbG9naW5CdG4uYWRkRXZlbnRMaXN0ZW5lcigKCQkJCQkJImNsaWNrIiwKCQkJCQkJZnVuY3Rpb24gKCkgewoJCQkJCQkJTG9naW5GbGFnID0gZmFsc2U7CgkJCQkJCX0sCgkJCQkJCXRydWUsCgkJCQkJKTsKCQkJCQltby5vYnNlcnZlKGRvY3VtZW50LCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSB9KTsKCQkJCX0KCQkJfSwKCQl9LAoJCXsKCQkJbmFtZTogIuWWnOmprOaLiembhSIsCgkJCXVybDogIm0ueGltYWxheWEuY29tLyIsCgkJCWl0ZW1zOiBbCgkJCQkvL+aCrOa1ruaMiemSrjrmiZPlvIBBUFAs5a6M5pW05pS25ZCsMQoJCQkJIi5hbGJ1bS1idG4tY29udGFpbmVyIiwKCQkJCS8v5oKs5rWu5oyJ6ZKuOuaJk+W8gEFQUCzlrozmlbTmlLblkKwyCgkJCQkiLmJ0bi1vcGVuIiwKCQkJCS8v5omT5byAQVBQMgoJCQkJIi5kb3dubG9hZEJ1dHRvbiIsCgkJCV0sCgkJfSwKCQl7CgkJCS8vaHR0cHM6Ly93YXAuY25raS5uZXQvdG91Y2gvd2ViL0pvdXJuYWwvQXJ0aWNsZS9XTEFRMjAyMzAyMDYxLmh0bWwKCQkJbmFtZTogIuS4reWbveefpee9kSIsCgkJCXVybDogIndhcC5jbmtpLm5ldC8iLAoJCQlpdGVtczogWwoJCQkJLy9BcHDlhoXmiZPlvIAKCQkJCSIuQXBwb3BlbiIsCgkJCQkvL+a7muWKqOaWsOmXuwoJCQkJIiNmaXgtYm90dG9tIiwKCQkJXSwKCQl9LAoJCXsKCQkJbmFtZTogInpmcm9udGllciIsCgkJCXVybDogInd3dy56ZnJvbnRpZXIuY29tIiwKCQkJaXRlbXM6IFsKCQkJCS8vQXBw5YaF5omT5byACgkJCQkiLmFwcC1vcGVuZXIiLAoJCQldLAoJCX0sCgkJewoJCQluYW1lOiAi5b+F5bqU5pCc57SiIiwKCQkJdXJsOiAiYmluZy5jb20iLAoJCQlpdGVtczogWwoJCQkJLy/lv4XlupTkuK3miZPlvIAoQ2hyb21l5Lit5LiT5bGeKQoJCQkJIi5ibnBfcmljaF9kaXZfdmlzaWJsZSIsCgkJCV0sCgkJfSwKCQl7CgkJCW5hbWU6ICJ3M2NzY2hvb2wiLAoJCQl1cmw6ICJ3d3cudzNjc2Nob29sLmNuLyIsCgkJCWl0ZW1zOiBbXSwKCQkJZnVuOiBmdW5jdGlvbiAoKSB7CgkJCQkvL+WkjeWItuaWh+S7tuaXtueahOW8ueeqlwoJCQkJb25sb2FkID0gZnVuY3Rpb24gKCkgewoJCQkJCWxldCBtbyA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uIChtdXRhdGlvbnMpIHsKCQkJCQkJZm9yIChsZXQgbXV0YXRpb24gb2YgbXV0YXRpb25zKSB7CgkJCQkJCQlmb3IgKGxldCBub2RlIG9mIG11dGF0aW9uLmFkZGVkTm9kZXMpIHsKCQkJCQkJCQlpZiAobm9kZS5ub2RlTmFtZSA9PSAiRElWIiAmJiBub2RlLmNsYXNzTmFtZSA9PSAiIikgewoJCQkJCQkJCQlub2RlLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJfSk7CgkJCQkJbW8ub2JzZXJ2ZShkb2N1bWVudCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSk7CgkJCQl9OwoJCQl9LAoJCX0sCgldOwoKCS8qKgoJICog5Li75L2T6YOo5YiGCgkgKi8KCWZvciAobGV0IHdlYnNpdGUgb2Ygd2Vic2l0ZXMpIHsKCQlpZiAobG9jYXRpb24uaHJlZi5pbmRleE9mKHdlYnNpdGUudXJsKSAhPSAtMSkgewoJCQkvL+makOiXjy/mi6bmiKrpqprmibDlhYPntKAKCQkJaWYgKHdlYnNpdGUuaXRlbXMpIHsKCQkJCWZvciAobGV0IGl0ZW0gb2Ygd2Vic2l0ZS5pdGVtcykgewoJCQkJCWxldCBjc3MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOwoJCQkJCWNzcy5pbm5lclRleHQgKz0gaXRlbSArICJ7ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50fSI7CgkJCQkJZG9jdW1lbnQuaGVhZC5hcHBlbmQoY3NzKTsKCQkJCX0KCQkJfQoJCQkvL+S/ruWkjeenu+WKqOeJiOmhtemdouS4jeWFgeiuuOa7keWKqAoJCQlpZiAod2Vic2l0ZS5vdmVyZmxvdykgewoJCQkJbGV0IGNzc1ZsYXVlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKCQkJCWNzc1ZsYXVlLmlubmVyVGV4dCA9ICJib2R5e292ZXJmbG93OiB1bnNldCAhaW1wb3J0YW50fSI7CgkJCQlkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGNzc1ZsYXVlKTsKCQkJfQoJCQkvL+aJp+ihjOmineWkluaWueahiAoJCQlpZiAod2Vic2l0ZS5mdW4pIHsKCQkJCXdlYnNpdGUuZnVuKCk7CgkJCX0KCQl9Cgl9CgoJLy/pu5jorqTnm5HlkKwKCWxldCBMb2dpbkZsYWcgPSB0cnVlOwoJLy/pu5jorqTmt7vliqAKCWxldCBDbGlja0ZsYWcgPSB0cnVlOwoKCS8qKgoJICog6YCa6L+H5YaF5a65KHhwYXRoKeiOt+WPluiKgueCuQoJICoKCSAqIEBwYXJhbSAgICAgIHtzdHJpbmd9ICB4cGF0aCAgIOWGheWuuQoJICogQHBhcmFtICAgICAge05vZGV9ICBwYXJlbnQgIOeItuWFg+e0oAoJICogQHJldHVybiAgICAge05vZGV9ICDlhYPntKAKCSAqLwoJZnVuY3Rpb24gZ2V0WHBhdGgoeHBhdGgsIHBhcmVudCkgewoJCWxldCB4cGF0aFJlc3VsdCA9IGRvY3VtZW50LmV2YWx1YXRlKHhwYXRoLCBwYXJlbnQgfHwgZG9jdW1lbnQsIG51bGwsIFhQYXRoUmVzdWx0LkZJUlNUX09SREVSRURfTk9ERV9UWVBFLCBudWxsKTsKCQlyZXR1cm4geHBhdGhSZXN1bHQuc2luZ2xlTm9kZVZhbHVlOwoJfQp9KSgpOwo=
Add Comment
Please, Sign In to add comment