1778692668
441d63ebbc39eba359c9061ece8482bd-phpdoc%3Ab4bdcdbf15f87a1f7d18e328953966bb-621d27d8ee5b2d54e5775815efb3ca94
s:40616:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjI3OiJMaXRlcmFsRXhwcmVzc2lvblBhcnNlci5waHAiO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbmFtZXNwYWNlcyI7YToxOntzOjI5OiJcVHdpZ1xFeHByZXNzaW9uUGFyc2VyXFByZWZpeCI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI5OiJcVHdpZ1xFeHByZXNzaW9uUGFyc2VyXFByZWZpeCI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjY6IlByZWZpeCI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGluY2x1ZGVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGZ1bmN0aW9ucyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjb25zdGFudHMiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY2xhc3NlcyI7YToxOntzOjUzOiJcVHdpZ1xFeHByZXNzaW9uUGFyc2VyXFByZWZpeFxMaXRlcmFsRXhwcmVzc2lvblBhcnNlciI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18iOjE1OntzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AaW1wbGVtZW50cyI7YToyOntzOjU0OiJcVHdpZ1xFeHByZXNzaW9uUGFyc2VyXFByZWZpeEV4cHJlc3Npb25QYXJzZXJJbnRlcmZhY2UiO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1NDoiXFR3aWdcRXhwcmVzc2lvblBhcnNlclxQcmVmaXhFeHByZXNzaW9uUGFyc2VySW50ZXJmYWNlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MzE6IlByZWZpeEV4cHJlc3Npb25QYXJzZXJJbnRlcmZhY2UiO31zOjU5OiJcVHdpZ1xFeHByZXNzaW9uUGFyc2VyXEV4cHJlc3Npb25QYXJzZXJEZXNjcmlwdGlvbkludGVyZmFjZSI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjU5OiJcVHdpZ1xFeHByZXNzaW9uUGFyc2VyXEV4cHJlc3Npb25QYXJzZXJEZXNjcmlwdGlvbkludGVyZmFjZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjM2OiJFeHByZXNzaW9uUGFyc2VyRGVzY3JpcHRpb25JbnRlcmZhY2UiO319czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGNvbnN0YW50cyI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHByb3BlcnRpZXMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRob2RzIjthOjg6e3M6NjI6IlxUd2lnXEV4cHJlc3Npb25QYXJzZXJcUHJlZml4XExpdGVyYWxFeHByZXNzaW9uUGFyc2VyOjpwYXJzZSgpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTM6e3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6Mjp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoxMjoiXFR3aWdcUGFyc2VyIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NjoiUGFyc2VyIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NjoicGFyc2VyIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjE7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjExOiJcVHdpZ1xUb2tlbiI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjU6IlRva2VuIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NToidG9rZW4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjMzO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjk0NDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo5NDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTozNDIxO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQwOiJcVHdpZ1xOb2RlXEV4cHJlc3Npb25cQWJzdHJhY3RFeHByZXNzaW9uIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTg6IkFic3RyYWN0RXhwcmVzc2lvbiI7fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo2MjoiXFR3aWdcRXhwcmVzc2lvblBhcnNlclxQcmVmaXhcTGl0ZXJhbEV4cHJlc3Npb25QYXJzZXI6OnBhcnNlKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo1OiJwYXJzZSI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO047czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGF0dHJpYnV0ZXMiO2E6MDp7fX1zOjY0OiJcVHdpZ1xFeHByZXNzaW9uUGFyc2VyXFByZWZpeFxMaXRlcmFsRXhwcmVzc2lvblBhcnNlcjo6Z2V0TmFtZSgpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTM6e3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6OTY7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MzQyODt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo5OTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTozNDk4O31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo2NDoiXFR3aWdcRXhwcmVzc2lvblBhcnNlclxQcmVmaXhcTGl0ZXJhbEV4cHJlc3Npb25QYXJzZXI6OmdldE5hbWUoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjc6ImdldE5hbWUiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo3NDoiXFR3aWdcRXhwcmVzc2lvblBhcnNlclxQcmVmaXhcTGl0ZXJhbEV4cHJlc3Npb25QYXJzZXI6OmdldE9wZXJhdG9yVG9rZW5zKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxMDE7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MzUwNTt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxMDQ7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MzU3Nzt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjc0OiJcVHdpZ1xFeHByZXNzaW9uUGFyc2VyXFByZWZpeFxMaXRlcmFsRXhwcmVzc2lvblBhcnNlcjo6Z2V0T3BlcmF0b3JUb2tlbnMoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE3OiJnZXRPcGVyYXRvclRva2VucyI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO047czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGF0dHJpYnV0ZXMiO2E6MDp7fX1zOjcxOiJcVHdpZ1xFeHByZXNzaW9uUGFyc2VyXFByZWZpeFxMaXRlcmFsRXhwcmVzc2lvblBhcnNlcjo6Z2V0RGVzY3JpcHRpb24oKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjEwNjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTozNTg0O31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjEwOTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTozNzE5O31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo3MToiXFR3aWdcRXhwcmVzc2lvblBhcnNlclxQcmVmaXhcTGl0ZXJhbEV4cHJlc3Npb25QYXJzZXI6OmdldERlc2NyaXB0aW9uKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNDoiZ2V0RGVzY3JpcHRpb24iO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo3MDoiXFR3aWdcRXhwcmVzc2lvblBhcnNlclxQcmVmaXhcTGl0ZXJhbEV4cHJlc3Npb25QYXJzZXI6OmdldFByZWNlZGVuY2UoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjExMTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTozNzI2O31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjExNTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTozODExO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo3MDoiXFR3aWdcRXhwcmVzc2lvblBhcnNlclxQcmVmaXhcTGl0ZXJhbEV4cHJlc3Npb25QYXJzZXI6OmdldFByZWNlZGVuY2UoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjEzOiJnZXRQcmVjZWRlbmNlIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fXM6Nzg6IlxUd2lnXEV4cHJlc3Npb25QYXJzZXJcUHJlZml4XExpdGVyYWxFeHByZXNzaW9uUGFyc2VyOjpwYXJzZVN0cmluZ0V4cHJlc3Npb24oKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjE6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6MTI6IlxUd2lnXFBhcnNlciI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjY6IlBhcnNlciI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjY6InBhcnNlciI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTE3O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjM4MTg7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTQzO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjQ3ODQ7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Nzg6IlxUd2lnXEV4cHJlc3Npb25QYXJzZXJcUHJlZml4XExpdGVyYWxFeHByZXNzaW9uUGFyc2VyOjpwYXJzZVN0cmluZ0V4cHJlc3Npb24oKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjIxOiJwYXJzZVN0cmluZ0V4cHJlc3Npb24iO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NzoicHJpdmF0ZSI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fXM6ODA6IlxUd2lnXEV4cHJlc3Npb25QYXJzZXJcUHJlZml4XExpdGVyYWxFeHByZXNzaW9uUGFyc2VyOjpwYXJzZVNlcXVlbmNlRXhwcmVzc2lvbigpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTM6e3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6MTp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoxMjoiXFR3aWdcUGFyc2VyIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NjoiUGFyc2VyIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NjoicGFyc2VyIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxNDU7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6NDc5MTt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxNzM7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6NTkyMjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo4MDoiXFR3aWdcRXhwcmVzc2lvblBhcnNlclxQcmVmaXhcTGl0ZXJhbEV4cHJlc3Npb25QYXJzZXI6OnBhcnNlU2VxdWVuY2VFeHByZXNzaW9uKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoyMzoicGFyc2VTZXF1ZW5jZUV4cHJlc3Npb24iO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NzoicHJpdmF0ZSI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fXM6Nzk6IlxUd2lnXEV4cHJlc3Npb25QYXJzZXJcUHJlZml4XExpdGVyYWxFeHByZXNzaW9uUGFyc2VyOjpwYXJzZU1hcHBpbmdFeHByZXNzaW9uKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToxOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjEyOiJcVHdpZ1xQYXJzZXIiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo2OiJQYXJzZXIiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo2OiJwYXJzZXIiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjE3NTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTo1OTI5O31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjIzMjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTo4NTQ0O31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjc5OiJcVHdpZ1xFeHByZXNzaW9uUGFyc2VyXFByZWZpeFxMaXRlcmFsRXhwcmVzc2lvblBhcnNlcjo6cGFyc2VNYXBwaW5nRXhwcmVzc2lvbigpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjI6InBhcnNlTWFwcGluZ0V4cHJlc3Npb24iO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NzoicHJpdmF0ZSI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fX1zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AdXNlZFRyYWl0cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozMTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjIzMztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1MzoiXFR3aWdcRXhwcmVzc2lvblBhcnNlclxQcmVmaXhcTGl0ZXJhbEV4cHJlc3Npb25QYXJzZXIiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoyMzoiTGl0ZXJhbEV4cHJlc3Npb25QYXJzZXIiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjA6IiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcR2VuZXJpYyI6Mjp7czo3OiIAKgBuYW1lIjtzOjg6ImludGVybmFsIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tjt9fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQiOjI6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2UiO3M6Mjg6IlR3aWdcRXhwcmVzc2lvblBhcnNlclxQcmVmaXgiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2VBbGlhc2VzIjthOjEzOntzOjExOiJTeW50YXhFcnJvciI7czoyMjoiVHdpZ1xFcnJvclxTeW50YXhFcnJvciI7czoyNDoiQWJzdHJhY3RFeHByZXNzaW9uUGFyc2VyIjtzOjQ2OiJUd2lnXEV4cHJlc3Npb25QYXJzZXJcQWJzdHJhY3RFeHByZXNzaW9uUGFyc2VyIjtzOjM2OiJFeHByZXNzaW9uUGFyc2VyRGVzY3JpcHRpb25JbnRlcmZhY2UiO3M6NTg6IlR3aWdcRXhwcmVzc2lvblBhcnNlclxFeHByZXNzaW9uUGFyc2VyRGVzY3JpcHRpb25JbnRlcmZhY2UiO3M6MzE6IlByZWZpeEV4cHJlc3Npb25QYXJzZXJJbnRlcmZhY2UiO3M6NTM6IlR3aWdcRXhwcmVzc2lvblBhcnNlclxQcmVmaXhFeHByZXNzaW9uUGFyc2VySW50ZXJmYWNlIjtzOjU6IkxleGVyIjtzOjEwOiJUd2lnXExleGVyIjtzOjE4OiJBYnN0cmFjdEV4cHJlc3Npb24iO3M6Mzk6IlR3aWdcTm9kZVxFeHByZXNzaW9uXEFic3RyYWN0RXhwcmVzc2lvbiI7czoxNToiQXJyYXlFeHByZXNzaW9uIjtzOjM2OiJUd2lnXE5vZGVcRXhwcmVzc2lvblxBcnJheUV4cHJlc3Npb24iO3M6MTI6IkNvbmNhdEJpbmFyeSI7czo0MDoiVHdpZ1xOb2RlXEV4cHJlc3Npb25cQmluYXJ5XENvbmNhdEJpbmFyeSI7czoxODoiQ29uc3RhbnRFeHByZXNzaW9uIjtzOjM5OiJUd2lnXE5vZGVcRXhwcmVzc2lvblxDb25zdGFudEV4cHJlc3Npb24iO3M6MTU6IkVtcHR5RXhwcmVzc2lvbiI7czozNjoiVHdpZ1xOb2RlXEV4cHJlc3Npb25cRW1wdHlFeHByZXNzaW9uIjtzOjE1OiJDb250ZXh0VmFyaWFibGUiO3M6NDU6IlR3aWdcTm9kZVxFeHByZXNzaW9uXFZhcmlhYmxlXENvbnRleHRWYXJpYWJsZSI7czo2OiJQYXJzZXIiO3M6MTE6IlR3aWdcUGFyc2VyIjtzOjU6IlRva2VuIjtzOjEwOiJUd2lnXFRva2VuIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHBhcmVudCI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQ3OiJcVHdpZ1xFeHByZXNzaW9uUGFyc2VyXEFic3RyYWN0RXhwcmVzc2lvblBhcnNlciI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjI0OiJBYnN0cmFjdEV4cHJlc3Npb25QYXJzZXIiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZmluYWwiO2I6MTtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcmVhZE9ubHkiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBhdHRyaWJ1dGVzIjthOjA6e319fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW50ZXJmYWNlcyI7YTowOnt9czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQB0cmFpdHMiO2E6MDp7fXM6NDA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZW51bXMiO2E6MDp7fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaGFzaCI7czozMjoiNjIxZDI3ZDhlZTViMmQ1NGU1Nzc1ODE1ZWZiM2NhOTQiO3M6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAcGF0aCI7czo3MjoidmVuZG9yL3R3aWcvdHdpZy9zcmMvRXhwcmVzc2lvblBhcnNlci9QcmVmaXgvTGl0ZXJhbEV4cHJlc3Npb25QYXJzZXIucGhwIjtzOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHNvdXJjZSI7czo4NTQ4OiI8P3BocAoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgVHdpZy4KICoKICogKGMpIEZhYmllbiBQb3RlbmNpZXIKICoKICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0UKICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuCiAqLwoKbmFtZXNwYWNlIFR3aWdcRXhwcmVzc2lvblBhcnNlclxQcmVmaXg7Cgp1c2UgVHdpZ1xFcnJvclxTeW50YXhFcnJvcjsKdXNlIFR3aWdcRXhwcmVzc2lvblBhcnNlclxBYnN0cmFjdEV4cHJlc3Npb25QYXJzZXI7CnVzZSBUd2lnXEV4cHJlc3Npb25QYXJzZXJcRXhwcmVzc2lvblBhcnNlckRlc2NyaXB0aW9uSW50ZXJmYWNlOwp1c2UgVHdpZ1xFeHByZXNzaW9uUGFyc2VyXFByZWZpeEV4cHJlc3Npb25QYXJzZXJJbnRlcmZhY2U7CnVzZSBUd2lnXExleGVyOwp1c2UgVHdpZ1xOb2RlXEV4cHJlc3Npb25cQWJzdHJhY3RFeHByZXNzaW9uOwp1c2UgVHdpZ1xOb2RlXEV4cHJlc3Npb25cQXJyYXlFeHByZXNzaW9uOwp1c2UgVHdpZ1xOb2RlXEV4cHJlc3Npb25cQmluYXJ5XENvbmNhdEJpbmFyeTsKdXNlIFR3aWdcTm9kZVxFeHByZXNzaW9uXENvbnN0YW50RXhwcmVzc2lvbjsKdXNlIFR3aWdcTm9kZVxFeHByZXNzaW9uXEVtcHR5RXhwcmVzc2lvbjsKdXNlIFR3aWdcTm9kZVxFeHByZXNzaW9uXFZhcmlhYmxlXENvbnRleHRWYXJpYWJsZTsKdXNlIFR3aWdcUGFyc2VyOwp1c2UgVHdpZ1xUb2tlbjsKCi8qKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIExpdGVyYWxFeHByZXNzaW9uUGFyc2VyIGV4dGVuZHMgQWJzdHJhY3RFeHByZXNzaW9uUGFyc2VyIGltcGxlbWVudHMgUHJlZml4RXhwcmVzc2lvblBhcnNlckludGVyZmFjZSwgRXhwcmVzc2lvblBhcnNlckRlc2NyaXB0aW9uSW50ZXJmYWNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJzZShQYXJzZXIgJHBhcnNlciwgVG9rZW4gJHRva2VuKTogQWJzdHJhY3RFeHByZXNzaW9uCiAgICB7CiAgICAgICAgJHN0cmVhbSA9ICRwYXJzZXItPmdldFN0cmVhbSgpOwogICAgICAgIHN3aXRjaCAodHJ1ZSkgewogICAgICAgICAgICBjYXNlICR0b2tlbi0+dGVzdChUb2tlbjo6TkFNRV9UWVBFKToKICAgICAgICAgICAgICAgICRzdHJlYW0tPm5leHQoKTsKICAgICAgICAgICAgICAgIHN3aXRjaCAoJHRva2VuLT5nZXRWYWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAndHJ1ZSc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnVFJVRSc6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29uc3RhbnRFeHByZXNzaW9uKHRydWUsICR0b2tlbi0+Z2V0TGluZSgpKTsKCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZmFsc2UnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ0ZBTFNFJzoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb25zdGFudEV4cHJlc3Npb24oZmFsc2UsICR0b2tlbi0+Z2V0TGluZSgpKTsKCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbm9uZSc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTk9ORSc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbnVsbCc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTlVMTCc6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29uc3RhbnRFeHByZXNzaW9uKG51bGwsICR0b2tlbi0+Z2V0TGluZSgpKTsKCiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb250ZXh0VmFyaWFibGUoJHRva2VuLT5nZXRWYWx1ZSgpLCAkdG9rZW4tPmdldExpbmUoKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gbm8gYnJlYWsKICAgICAgICAgICAgY2FzZSAkdG9rZW4tPnRlc3QoVG9rZW46Ok5VTUJFUl9UWVBFKToKICAgICAgICAgICAgICAgICRzdHJlYW0tPm5leHQoKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbnN0YW50RXhwcmVzc2lvbigkdG9rZW4tPmdldFZhbHVlKCksICR0b2tlbi0+Z2V0TGluZSgpKTsKCiAgICAgICAgICAgIGNhc2UgJHRva2VuLT50ZXN0KFRva2VuOjpTVFJJTkdfVFlQRSk6CiAgICAgICAgICAgIGNhc2UgJHRva2VuLT50ZXN0KFRva2VuOjpJTlRFUlBPTEFUSU9OX1NUQVJUX1RZUEUpOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5wYXJzZVN0cmluZ0V4cHJlc3Npb24oJHBhcnNlcik7CgogICAgICAgICAgICBjYXNlICR0b2tlbi0+dGVzdChUb2tlbjo6UFVOQ1RVQVRJT05fVFlQRSk6CiAgICAgICAgICAgICAgICAvLyBJbiA0LjAsIHdlIHNob3VsZCBhbHdheXMgcmV0dXJuIHRoZSBub2RlIG9yIHRocm93IGFuIGVycm9yIGZvciBkZWZhdWx0CiAgICAgICAgICAgICAgICBpZiAoJG5vZGUgPSBtYXRjaCAoJHRva2VuLT5nZXRWYWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgJ3snID0+ICR0aGlzLT5wYXJzZU1hcHBpbmdFeHByZXNzaW9uKCRwYXJzZXIpLAogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgPT4gbnVsbCwKICAgICAgICAgICAgICAgIH0pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJG5vZGU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gbm8gYnJlYWsKICAgICAgICAgICAgY2FzZSAkdG9rZW4tPnRlc3QoVG9rZW46Ok9QRVJBVE9SX1RZUEUpOgogICAgICAgICAgICAgICAgaWYgKCdbJyA9PT0gJHRva2VuLT5nZXRWYWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5wYXJzZVNlcXVlbmNlRXhwcmVzc2lvbigkcGFyc2VyKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaChMZXhlcjo6UkVHRVhfTkFNRSwgJHRva2VuLT5nZXRWYWx1ZSgpLCAkbWF0Y2hlcykgJiYgJG1hdGNoZXNbMF0gPT0gJHRva2VuLT5nZXRWYWx1ZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gaW4gdGhpcyBjb250ZXh0LCBzdHJpbmcgb3BlcmF0b3JzIGFyZSB2YXJpYWJsZSBuYW1lcwogICAgICAgICAgICAgICAgICAgICRzdHJlYW0tPm5leHQoKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb250ZXh0VmFyaWFibGUoJHRva2VuLT5nZXRWYWx1ZSgpLCAkdG9rZW4tPmdldExpbmUoKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gbm8gYnJlYWsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBTeW50YXhFcnJvcihcc3ByaW50ZignVW5leHBlY3RlZCB0b2tlbiAiJXMiIG9mIHZhbHVlICIlcyIuJywgJHRva2VuLT50b0VuZ2xpc2goKSwgJHRva2VuLT5nZXRWYWx1ZSgpKSwgJHRva2VuLT5nZXRMaW5lKCksICRzdHJlYW0tPmdldFNvdXJjZUNvbnRleHQoKSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnbGl0ZXJhbCc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE9wZXJhdG9yVG9rZW5zKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIFtdOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXREZXNjcmlwdGlvbigpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJ0EgbGl0ZXJhbCB2YWx1ZSAoYm9vbGVhbiwgc3RyaW5nLCBudW1iZXIsIHNlcXVlbmNlLCBtYXBwaW5nLCAuLi4pJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJlY2VkZW5jZSgpOiBpbnQKICAgIHsKICAgICAgICAvLyBub3QgdXNlZAogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcGFyc2VTdHJpbmdFeHByZXNzaW9uKFBhcnNlciAkcGFyc2VyKQogICAgewogICAgICAgICRzdHJlYW0gPSAkcGFyc2VyLT5nZXRTdHJlYW0oKTsKCiAgICAgICAgJG5vZGVzID0gW107CiAgICAgICAgLy8gYSBzdHJpbmcgY2Fubm90IGJlIGZvbGxvd2VkIGJ5IGFub3RoZXIgc3RyaW5nIGluIGEgc2luZ2xlIGV4cHJlc3Npb24KICAgICAgICAkbmV4dENhbkJlU3RyaW5nID0gdHJ1ZTsKICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgICBpZiAoJG5leHRDYW5CZVN0cmluZyAmJiAkdG9rZW4gPSAkc3RyZWFtLT5uZXh0SWYoVG9rZW46OlNUUklOR19UWVBFKSkgewogICAgICAgICAgICAgICAgJG5vZGVzW10gPSBuZXcgQ29uc3RhbnRFeHByZXNzaW9uKCR0b2tlbi0+Z2V0VmFsdWUoKSwgJHRva2VuLT5nZXRMaW5lKCkpOwogICAgICAgICAgICAgICAgJG5leHRDYW5CZVN0cmluZyA9IGZhbHNlOwogICAgICAgICAgICB9IGVsc2VpZiAoJHN0cmVhbS0+bmV4dElmKFRva2VuOjpJTlRFUlBPTEFUSU9OX1NUQVJUX1RZUEUpKSB7CiAgICAgICAgICAgICAgICAkbm9kZXNbXSA9ICRwYXJzZXItPnBhcnNlRXhwcmVzc2lvbigpOwogICAgICAgICAgICAgICAgJHN0cmVhbS0+ZXhwZWN0KFRva2VuOjpJTlRFUlBPTEFUSU9OX0VORF9UWVBFKTsKICAgICAgICAgICAgICAgICRuZXh0Q2FuQmVTdHJpbmcgPSB0cnVlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRleHByID0gYXJyYXlfc2hpZnQoJG5vZGVzKTsKICAgICAgICBmb3JlYWNoICgkbm9kZXMgYXMgJG5vZGUpIHsKICAgICAgICAgICAgJGV4cHIgPSBuZXcgQ29uY2F0QmluYXJ5KCRleHByLCAkbm9kZSwgJG5vZGUtPmdldFRlbXBsYXRlTGluZSgpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZXhwcjsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHBhcnNlU2VxdWVuY2VFeHByZXNzaW9uKFBhcnNlciAkcGFyc2VyKQogICAgewogICAgICAgICRzdHJlYW0gPSAkcGFyc2VyLT5nZXRTdHJlYW0oKTsKICAgICAgICAkc3RyZWFtLT5leHBlY3QoVG9rZW46Ok9QRVJBVE9SX1RZUEUsICdbJywgJ0Egc2VxdWVuY2UgZWxlbWVudCB3YXMgZXhwZWN0ZWQnKTsKCiAgICAgICAgJG5vZGUgPSBuZXcgQXJyYXlFeHByZXNzaW9uKFtdLCAkc3RyZWFtLT5nZXRDdXJyZW50KCktPmdldExpbmUoKSk7CiAgICAgICAgJGZpcnN0ID0gdHJ1ZTsKICAgICAgICB3aGlsZSAoISRzdHJlYW0tPnRlc3QoVG9rZW46OlBVTkNUVUFUSU9OX1RZUEUsICddJykpIHsKICAgICAgICAgICAgaWYgKCEkZmlyc3QpIHsKICAgICAgICAgICAgICAgICRzdHJlYW0tPmV4cGVjdChUb2tlbjo6UFVOQ1RVQVRJT05fVFlQRSwgJywnLCAnQSBzZXF1ZW5jZSBlbGVtZW50IG11c3QgYmUgZm9sbG93ZWQgYnkgYSBjb21tYScpOwoKICAgICAgICAgICAgICAgIC8vIHRyYWlsaW5nICw/CiAgICAgICAgICAgICAgICBpZiAoJHN0cmVhbS0+dGVzdChUb2tlbjo6UFVOQ1RVQVRJT05fVFlQRSwgJ10nKSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRmaXJzdCA9IGZhbHNlOwoKICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGVtcHR5IHNsb3RzIChjb21tYSB3aXRoIG5vIGV4cHJlc3Npb24pCiAgICAgICAgICAgIGlmICgkc3RyZWFtLT50ZXN0KFRva2VuOjpQVU5DVFVBVElPTl9UWVBFLCAnLCcpKSB7CiAgICAgICAgICAgICAgICAkbm9kZS0+YWRkRWxlbWVudChuZXcgRW1wdHlFeHByZXNzaW9uKCRzdHJlYW0tPmdldEN1cnJlbnQoKS0+Z2V0TGluZSgpKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkbm9kZS0+YWRkRWxlbWVudCgkcGFyc2VyLT5wYXJzZUV4cHJlc3Npb24oKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHN0cmVhbS0+ZXhwZWN0KFRva2VuOjpQVU5DVFVBVElPTl9UWVBFLCAnXScsICdBbiBvcGVuZWQgc2VxdWVuY2UgaXMgbm90IHByb3Blcmx5IGNsb3NlZCcpOwoKICAgICAgICByZXR1cm4gJG5vZGU7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZU1hcHBpbmdFeHByZXNzaW9uKFBhcnNlciAkcGFyc2VyKQogICAgewogICAgICAgICRzdHJlYW0gPSAkcGFyc2VyLT5nZXRTdHJlYW0oKTsKICAgICAgICAkc3RyZWFtLT5leHBlY3QoVG9rZW46OlBVTkNUVUFUSU9OX1RZUEUsICd7JywgJ0EgbWFwcGluZyBlbGVtZW50IHdhcyBleHBlY3RlZCcpOwoKICAgICAgICAkbm9kZSA9IG5ldyBBcnJheUV4cHJlc3Npb24oW10sICRzdHJlYW0tPmdldEN1cnJlbnQoKS0+Z2V0TGluZSgpKTsKICAgICAgICAkZmlyc3QgPSB0cnVlOwogICAgICAgIHdoaWxlICghJHN0cmVhbS0+dGVzdChUb2tlbjo6UFVOQ1RVQVRJT05fVFlQRSwgJ30nKSkgewogICAgICAgICAgICBpZiAoISRmaXJzdCkgewogICAgICAgICAgICAgICAgJHN0cmVhbS0+ZXhwZWN0KFRva2VuOjpQVU5DVFVBVElPTl9UWVBFLCAnLCcsICdBIG1hcHBpbmcgdmFsdWUgbXVzdCBiZSBmb2xsb3dlZCBieSBhIGNvbW1hJyk7CgogICAgICAgICAgICAgICAgLy8gdHJhaWxpbmcgLD8KICAgICAgICAgICAgICAgIGlmICgkc3RyZWFtLT50ZXN0KFRva2VuOjpQVU5DVFVBVElPTl9UWVBFLCAnfScpKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGZpcnN0ID0gZmFsc2U7CgogICAgICAgICAgICBpZiAoJHN0cmVhbS0+dGVzdChUb2tlbjo6T1BFUkFUT1JfVFlQRSwgJy4uLicpKSB7CiAgICAgICAgICAgICAgICAkbm9kZS0+YWRkRWxlbWVudCgkcGFyc2VyLT5wYXJzZUV4cHJlc3Npb24oKSk7CgogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGEgbWFwcGluZyBrZXkgY2FuIGJlOgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyAgKiBhIG51bWJlciAtLSAxMgogICAgICAgICAgICAvLyAgKiBhIHN0cmluZyAtLSAnYScKICAgICAgICAgICAgLy8gICogYSBuYW1lLCB3aGljaCBpcyBlcXVpdmFsZW50IHRvIGEgc3RyaW5nIC0tIGEKICAgICAgICAgICAgLy8gICogYW4gZXhwcmVzc2lvbiwgd2hpY2ggbXVzdCBiZSBlbmNsb3NlZCBpbiBwYXJlbnRoZXNlcyAtLSAoMSArIDIpCiAgICAgICAgICAgIGlmICgkdG9rZW4gPSAkc3RyZWFtLT5uZXh0SWYoVG9rZW46Ok5BTUVfVFlQRSkpIHsKICAgICAgICAgICAgICAgICRrZXkgPSBuZXcgQ29uc3RhbnRFeHByZXNzaW9uKCR0b2tlbi0+Z2V0VmFsdWUoKSwgJHRva2VuLT5nZXRMaW5lKCkpOwoKICAgICAgICAgICAgICAgIC8vIHthfSBpcyBhIHNob3J0Y3V0IGZvciB7YTphfQogICAgICAgICAgICAgICAgaWYgKCRzdHJlYW0tPnRlc3QoVG9rZW46OlBVTkNUVUFUSU9OX1RZUEUsIFsnLCcsICd9J10pKSB7CiAgICAgICAgICAgICAgICAgICAgJHZhbHVlID0gbmV3IENvbnRleHRWYXJpYWJsZSgka2V5LT5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJyksICRrZXktPmdldFRlbXBsYXRlTGluZSgpKTsKICAgICAgICAgICAgICAgICAgICAkbm9kZS0+YWRkRWxlbWVudCgkdmFsdWUsICRrZXkpOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoKCR0b2tlbiA9ICRzdHJlYW0tPm5leHRJZihUb2tlbjo6U1RSSU5HX1RZUEUpKSB8fCAkdG9rZW4gPSAkc3RyZWFtLT5uZXh0SWYoVG9rZW46Ok5VTUJFUl9UWVBFKSkgewogICAgICAgICAgICAgICAgJGtleSA9IG5ldyBDb25zdGFudEV4cHJlc3Npb24oJHRva2VuLT5nZXRWYWx1ZSgpLCAkdG9rZW4tPmdldExpbmUoKSk7CiAgICAgICAgICAgIH0gZWxzZWlmICgkc3RyZWFtLT50ZXN0KFRva2VuOjpPUEVSQVRPUl9UWVBFLCAnKCcpKSB7CiAgICAgICAgICAgICAgICAka2V5ID0gJHBhcnNlci0+cGFyc2VFeHByZXNzaW9uKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkY3VycmVudCA9ICRzdHJlYW0tPmdldEN1cnJlbnQoKTsKCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU3ludGF4RXJyb3IoXHNwcmludGYoJ0EgbWFwcGluZyBrZXkgbXVzdCBiZSBhIHF1b3RlZCBzdHJpbmcsIGEgbnVtYmVyLCBhIG5hbWUsIG9yIGFuIGV4cHJlc3Npb24gZW5jbG9zZWQgaW4gcGFyZW50aGVzZXMgKHVuZXhwZWN0ZWQgdG9rZW4gIiVzIiBvZiB2YWx1ZSAiJXMiLicsICRjdXJyZW50LT50b0VuZ2xpc2goKSwgJGN1cnJlbnQtPmdldFZhbHVlKCkpLCAkY3VycmVudC0+Z2V0TGluZSgpLCAkc3RyZWFtLT5nZXRTb3VyY2VDb250ZXh0KCkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc3RyZWFtLT5leHBlY3QoVG9rZW46OlBVTkNUVUFUSU9OX1RZUEUsICc6JywgJ0EgbWFwcGluZyBrZXkgbXVzdCBiZSBmb2xsb3dlZCBieSBhIGNvbG9uICg6KScpOwogICAgICAgICAgICAkdmFsdWUgPSAkcGFyc2VyLT5wYXJzZUV4cHJlc3Npb24oKTsKCiAgICAgICAgICAgICRub2RlLT5hZGRFbGVtZW50KCR2YWx1ZSwgJGtleSk7CiAgICAgICAgfQogICAgICAgICRzdHJlYW0tPmV4cGVjdChUb2tlbjo6UFVOQ1RVQVRJT05fVFlQRSwgJ30nLCAnQW4gb3BlbmVkIG1hcHBpbmcgaXMgbm90IHByb3Blcmx5IGNsb3NlZCcpOwoKICAgICAgICByZXR1cm4gJG5vZGU7CiAgICB9Cn0KIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGRvY0Jsb2NrIjtOO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbWV0YWRhdGEiO2E6MDp7fX0=";